Czy mogę zmusić Vima do zmiany zachowania kursora?


11

Używam vima od kilku lat jako redaktor pomocniczy, ale z różnych powodów coraz częściej go używam, nawet gdy mój główny edytor jest dostępny. Jednym z problemów, który zawsze mnie denerwował vimi który powstrzymuje mnie od korzystania z niego częściej, jest sposób, w jaki obsługuje umieszczanie kursora. Kursor może znajdować się tylko na znaku, a nie między znakami, jak w przypadku każdego edytora utworzonego od 1984 roku.

Dla jednego przykładu, dlaczego jest to problem, jeśli chcę usunąć ostatnie słowo w linii, uderzyłem, $aby przejść do końca linii, a następnie dbusunąć do tyłu. Pozostawia to znak do usunięcia, ponieważ $tak naprawdę nie doszedł do końca linii, doszedł do ostatniego znaku linii i dbusunął tylko to, co było przed bieżącym znakiem. Problemem nie jest to, że muszę wpisać dodatkową postać, to dodatkowa myśl związana z robieniem tego, co powinno być proste, co odwraca moją uwagę od tego, co faktycznie próbuję osiągnąć.

Wydaje mi się, że bardziej nowoczesne umieszczanie kursorów pomysłów jest pod każdym względem lepsze i chciałbym przejść vimdo korzystania z tego podejścia. Jestem pewien, że niektórzy zapaleni vimfani nie zgodzą się z moim poglądem na ten temat, ale ponieważ jednym ze standardowych argumentów za vimwyższością jest jego nieskończona konfigurowalność:

  • czy może dostarczyć w tym przypadku?
  • Czy vimmożna ustawić kursor między znakami?

2
Wygląda na to, że szukasz Inserttrybu lub brakuje mu punktu normaltrybu. Zrobiłbym $dawlub $bdwusunąć ostatnie słowo z wiersza w trybie normalnym. W Inserttrybie zrobiłbym A<Ctrl-w>.
jw013,

3
Dla przypomnienia, jako ktoś przerażony samą ideą świata „między postaciami”, prawidłową sekwencją klawiszy do usunięcia ostatniego słowa w bieżącym wierszu jest$bD
Alan Curry

1
Używanie myszy nie jest idealne, ale znaczna nieefektywność pojawia się, gdy musisz przestać i zastanowić się, jak zrobić to, co chcesz. Prawdziwa rzecz cenna to nie sekunda tu i tam, ale skupienie . Kiedy tracisz skupienie, tracisz znacznie więcej niż kilka sekund.
iconoclast

2
Z dotychczasowych komentarzy wydaje się, że odpowiedź na pytanie brzmi: „Nie, ten model ruchu kursora jest nieodwołalnie osadzony w konstrukcji vima i nie można go zmienić”. Czy to jest poprawne?
iconoclast

2
@iconoclast To też jest mój wniosek. O ile mogę stwierdzić, w vi lub vim nie jest możliwe równomierne traktowanie wszystkich znaków w linii, zawsze istnieje wyjątek dla pierwszego lub ostatniego znaku.
Gilles „SO - przestań być zły”

Odpowiedzi:


5

Możesz :set virtualedit+=onemore, co pozwala ci przejść obok ostatniej postaci. Na nieszczęście dla ciebie $nadal chodzi do ostatniej postaci; musisz przejść kursorem, aby przejść obok niego. Z drugiej strony możesz użyć g$, który zwykle przechodzi do ostatniego znaku linii ekranu w linii, która się zawija; w onemoretrybie przechodzi także obok ostatniego znaku nie zawiniętej linii (lub ostatniej linii ekranu owiniętej linii).

:h 'virtualedit' mówi, że ta opcja może zepsuć skrypty, ale nie wiem, jak duże jest to ryzyko.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.