Saat menggunakan vi mengetik "c" akan menghapus karakter


5

Ini juga terjadi ketika menyalin dan menempel. Saya mencoba mengedit kode Go dan mengetik atau menyalin dan menempel "paket utama" keluar sebagai "pkage main". Tidak tahu mengapa saya tidak bisa mengetikkan c. Menekan hapus backspace mencetak ^? dan menekan delete sebenarnya menghapus karakter. Saya mencoba memulai kembali tetapi saya tidak tahu bagaimana lagi untuk memecahkan masalah ini dan saya tidak dapat menemukan apa pun secara online.


Jawaban:


11

Kemungkinan Penyebab 1:

Jika cberfungsi normal di mana-mana sehingga masalah ini hanya memengaruhi Vim, bisa jadi mungkin ada singkatan atau pemetaan yang diatur c. Periksa .vimrcfile Anda .

Saya hanya sementara mengubah cbackspace saya di Vim dalam mode normal, command, normal, dan insert:

:map c ^?
:nmap c ^?
:imap c ^?

(Di mana ^?menunjukkan hasil pengetikan Ctrl-VBackspace.)

Kemungkinan Penyebab 2:

Anda memiliki ckarakter hapus di TTY Anda. Artinya, seolah-olah perintah berikut telah dijalankan:

stty erase c

Namun, ini juga akan mempengaruhi program dan shell lainnya. Mencoba

stty sane

di shell Anda untuk mengatur ulang parameter TTY ke beberapa pengaturan default yang masuk akal. Ini adalah perintah yang berguna untuk diingat; itu sangat berguna ketika beberapa program visual tiba-tiba mati, meninggalkan pengaturan TTY dalam keadaan tidak pantas.


+1 untuk menyertakan stty saneperintah. Layak diingat. Berapa kali saya harus mematikan jendela terminal karena ada sesuatu yang rusak ...
Floris

2

Kedengarannya seperti sesuatu yang kacau dalam proses paste

Saat Anda menempelkan ke editor lain, apakah itu berfungsi atau sama saja? Jika itu sama, maka mungkin sumbernya sudah kacau sejak awal.

Jika editor lain menempel dengan benar, cobalah pintasan tempel clipboard:

"+ ++p

Jika Anda menyalin dari aplikasi lain hanya dengan memilih menggunakan mouse Anda, Anda sebaiknya menggunakan:

"+ *+p

Jika Anda masih menemukan keanehan, coba:

  1. :set paste untuk memasuki mode tempel vim.
  2. lalu coba pintasan tempel di atas
  3. Saat Anda ingin mematikan mode tempel dengan alasan apa pun :set nopaste.

Saya tidak berpikir ini masalah tempel. Hanya dengan menekan tombol "c" akan menghasilkan penghapusan karakter terbaru. Fungsi mengetik seperti, f, fu, fun, fu. Juga menempelkan ke contoh cat memiliki hasil yang sama persis. Menempelkan ke shell namun berfungsi dengan baik.
Saya noob

Mode tempel vim memiliki masalah yang sama, bersama dengan pintasan keyboard.
Saya noob

Dalam hal itu, pada prompt perintah, ketika Anda menjalankan lsb_release -aharus ada info ringkasan sistem multi-line, dan vim --versionjuga harus menjadi respons multi-line dengan detail versi. Apakah Anda dapat menyalin tempel kedua keluaran ini dan memperbarui pertanyaan dengan info ini? Terima kasih
clarity123

Kaz menjawabnya untuk saya, tetapi terima kasih atas bantuannya!
Saya noob

Tidak masalah, dan selamat datang di dunia Linux!
clarity123

0

Menyalin dan menempel di konsol berfungsi dengan cara teks disisipkan char oleh char, dan Vim mengartikan masing-masing char berarti sesuatu.

Saat menggunakan Vim, pastikan Anda dalam mode --INSERT-- , dan bukan mode perintah. Dalam mode Perintah, a 'c' berarti berubah, dan misalnya, jika Anda mengetikkan ce, Vim akan menghapus hingga akhir kata dan memasuki mode Sisipkan.

'^' adalah singkatan dari Command. ^ C berarti Ctrl+ C. Itu konsolnya, bukan editor Vim itu sendiri. Anda akan mendapatkan karakter yang serupa Jika Anda menekan Ctrl- (sesuatu) atau tombol Escape.

Semua tombol navigasi standar (seperti Beranda, Hapus, PgUp / PgDn, tombol panah), dimasukkan dalam Vi modern sebagai cadangan. Ini untuk pengguna yang memilih untuk tidak menggunakan / merasa sulit untuk menggunakan x atau d atau tombol gulir hjkl.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.