Vim'in imleç davranışını değiştirmesini sağlayabilir miyim?


11

Vim'i birkaç yıldır ikincil bir editör olarak kullanıyorum, ancak çeşitli nedenlerle, birincil düzenleyicim kullanılabilir olduğunda bile kendimi daha fazla kullandığımı görüyorum. Beni her zaman rahatsız eden vimve daha fazla kullanmamı engelleyen bir sorun, imleç yerleşimini işleme biçimidir. İmleç, 1984'ten beri oluşturulan herhangi bir editörde olduğu gibi, karakterler arasında değil , sadece bir karakter üzerinde olabilir .

Bunun neden bir sorun olduğuna dair sadece bir örnek için, bir satırdaki son kelimeyi silmek istersem $, satırın sonuna gitmek ve sonra dbgeri silmek için vururum . Çünkü bir karakter, silmek Bu yapraklar $vermedi gerçekten satırın sonuna gidin o gitti hattın son karakterine ve dboldu yalnızca ne silinen önce akım karakteri. Sorun, fazladan bir karakter yazmak zorunda olduğumdan değil, basit olması gereken şeyi yapmakla ilgili ekstra düşüncedir, bu da dikkatimi gerçekte yapmaya çalıştığım şeyden uzaklaştırır.

Bana öyle geliyor ki, daha modern bir fikir imleci yerleşimi her açıdan daha üstün ve vimbu yaklaşımı kullanmaya geçmek istiyorum . Eminim bazı sert çekirdekli vimhayranlar bu görüşe katılmayacaklar, ancak vimüstünlüğünün standart argümanlarından biri sonsuz yapılandırılabilirliği olduğundan:

  • bu durumda teslim edebilir mi?
  • Can vimimleci yapılacak arasındaki karakterler?

2
InsertMod aradığınız veya mod noktasını kaçırdığınız normalanlaşılıyor. Normal modda bir satırdaki son sözcüğü silmek $dawveya yapmak isterdim $bdw. In Insertmodunda yapardım A<Ctrl-w>.
jw013

3
Kayıt için, "karakterler arasında" bir netherworld fikrinden korkan biri olarak, mevcut satırdaki son kelimeyi silmek için doğru anahtar sırası$bD
Alan Curry

1
Bir fare kullanmak ideal değildir, ancak önemli verimsizlikler durmak ve yapmak istediğiniz şeyi nasıl yapacağınızı düşünmek zorunda kaldığınızda ortaya çıkar. Kıymetli olan gerçek şey orada burada bir saniye değil, odaklanmak . Odağı kaybettiğinizde birkaç saniyeden fazla kaybedersiniz.
iconoclast

2
Şimdiye kadarki yorumlardan, "Hayır, bu imleç hareketi modeli geri döndürülemez bir şekilde vim'in tasarımına gömülü ve değiştirilemez" gibi görünüyor. Bu doğru mu?
iconoclast

2
@iconoclast Bu da benim sonucum. Anlayabildiğim kadarıyla, vi veya vim'de bir satırdaki tüm karakterlere eşit olarak davranmak imkansızdır, her zaman ilk veya son karakter için bir istisna vardır.
Gilles 'SO- kötü olmayı kes'

Yanıtlar:


5

Yapabileceğiniz :set virtualedit+=onemore, son karakteri geçmenizi sağlar. Ne yazık ki sizin için $hala son karaktere gidiyor; geçmesi için imleci üzerine getirmelisin. Öte yandan, g$normalde ekran satırının son karakterine sarılan bir satırda giden kullanabilirsiniz ; içinde onemoremodda ayrıca sadece sigara sarılmış hat (veya sarılmış hattın son ekran çizgi) son karakteri geçmiş gider.

:h 'virtualedit' diyor ki, bu seçenek betikleri bozabilir, ama gerçekte ne kadar büyük bir risk olduğunu bilmiyorum.

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.