Selesai Vim - selalu tekan baris baru setelah saya memilih saran dengan tombol Enter

11

Kadang-kadang, setelah saya memilih saran (dari sembulan penyelesaian yang muncul saat menekan Ctrl-N) menggunakan tombol Enter, Vim akan menyisipkan baris baru dan kursor akan dipindahkan ke baris berikut. Ini tidak selalu terjadi - sepertinya Vim mencoba untuk menjadi pintar tentang hal itu dan hanya akan memindahkan saya ke baris berikutnya jika ia berpikir inilah yang saya inginkan.

Namun, saya ingin menonaktifkan perilaku ini (karena itu tidak selalu pintar) sehingga saya akan selalu harus pindah ke baris berikutnya sendiri dengan secara manual menekan tombol Enter. Apakah ini mungkin?


sumber

Jawaban:

14

Apa yang Vim lakukan sebagai tanggapan atas pengetikan Anda tombol <Enter> saat menggunakan penyelesaian penyisipan tergantung pada status menu penyelesaian. Perilaku menu dijelaskan di sini:

:help ins-completion-menu

dan perilaku berbagai kunci saat menggunakan penyelesaian penyisipan dijelaskan di bagian selanjutnya,

:help popupmenu-keys

di mana ia menjelaskan bahwa perilaku tombol <Enter> tergantung pada status menu. Seperti yang saya pahami, mengetik <Enter> menyisipkan baris baru kecuali dalam kasus di mana Anda telah memilih kecocokan dari menu menggunakan tombol kursor.

Cara terbaik untuk menghindari memasukkan baris baru ketika Anda tidak menginginkannya adalah dengan menghentikan atau membuat pilihan menggunakan beberapa tombol lain seperti Ctrl-Y atau Ctrl-E.

Lihat juga

:help complete_CTRL-Y

dan untuk keseluruhan deskripsi jika penyisipan mode selesai,

:help ins-completion
garyjohn
sumber
4

Anda dapat menambahkan pemetaan ini ke file .vimrc Anda:

inoremap <expr> <CR> pumvisible() ? "\<C-Y>" : "\<CR>"

Ini akan memetakan kunci kembali dalam mode masukkan untuk memasukkan CTRL-Y ketika menu popup terlihat. CTRL-Y memilih item yang saat ini dipilih dalam menu tanpa memasukkan baris baru. Kalau tidak, itu akan membuat kunci kembali bertindak seperti biasa.

Jake
sumber
1
Bisakah Anda menjelaskan apa yang kode ini lakukan dan bagaimana mengatasi masalah yang diberikan oleh OP? Kode yang tidak dapat dijelaskan bisa tampak tidak dipercaya dan berbahaya bagi pengguna.
bwDraco
0

Saya menambahkan ini ke .vimrc dan sekarang berperilaku seperti yang saya inginkan:

noremap pumvisible ()? "\": ""

martin
sumber