Vim tamamlama - Enter tuşuyla bir öneri seçtikten sonra her zaman yeni satırı bastır


11

Bazen Enter tuşunu kullanarak bir öneri seçtikten sonra (Ctrl-N tuşuna basıldığında görünen tamamlama açılır penceresinden), Vim bir satırsonu ekler ve imleç aşağıdaki satıra taşınır. Bu her zaman olmaz - Vim bu konuda akıllı olmaya çalışıyor ve beni bir sonraki satıra taşıyacağımı düşünürsem bu.

Ancak, bu davranışı devre dışı bırakmak istiyorum (çünkü her zaman akıllı değildir), böylece Enter tuşuna elle basarak her zaman bir sonraki satıra kendim geçmem gerekecek. Mümkün mü?

Yanıtlar:


14

Ekleme tamamlamayı kullanırken <Enter> tuşunu yazmanıza yanıt olarak Vim'in yaptığı şey, tamamlama menüsünün durumuna bağlıdır. Menünün davranışı burada açıklanmıştır:

:help ins-completion-menu

ve ekleme tamamlamayı kullanırken çeşitli tuşların davranışı bir sonraki bölümde açıklanmaktadır,

:help popupmenu-keys

burada <Enter> tuşunun davranışının menü durumuna bağlı olduğunu açıklar. Anladığım kadarıyla <Enter> yazmak, imleç tuşlarını kullanarak menüden bir eşleşme seçmeniz durumu dışında yeni bir satır ekler.

İstemediğinizde yeni satır eklemekten kaçınmanın en iyi yolu, Ctrl-Y veya Ctrl-E gibi başka bir anahtar kullanarak sonlandırmak veya seçim yapmaktır.

Ayrıca bakınız

:help complete_CTRL-Y

ve ekleme modu tamamlandığında tüm açıklama için,

:help ins-completion

4

Bu eşlemeyi .vimrc dosyanıza ekleyebilirsiniz:

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

Açılır menü görünür olduğunda CTRL-Y girişine ekleme modunda dönüş tuşunu eşler. CTRL-Y menüde seçili olan öğeyi yeni bir satır girmeden seçer. Aksi takdirde, dönüş tuşunun normal gibi çalışmasını sağlar.


1
Bu kodun ne yaptığını ve OP tarafından verilen sorunu nasıl çözdüğünü açıklayabilir misiniz? Açıklanamayan kod güvenilmez ve kullanıcılar için tehlikeli görünebilir.
bwDraco

0

Bunu .vimrc'e ekledim ve şimdi istediğim gibi davranıyor:

noremap pumvisible ()? "\": ""

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.