W vimie, kiedy uderzyłem, ESC
aby powrócić do trybu poleceń, kursor przesuwa jeden znak w lewo. Nie tego oczekiwałbym, od czasu do czasu od razu uderzyłem, l
aby wrócić do tego miejsca, być może by usunąć postać.
Czy istnieje powód takiego zachowania? Czy to wygodne w przypadku schematu użytkowania, którego mi brakuje?
Odpowiedzi:
W trybie wstawiania kursor znajduje się między znakami lub przed pierwszym lub po ostatnim znaku. W trybie normalnym kursor znajduje się nad znakiem (znaki nowego wiersza nie są w tym celu znakami). Jest to nieco niezwykłe: większość redaktorów zawsze umieszcza kursor między znakami i większość poleceń działa na znak po (nie mówiąc ściśle, pod ) kursorze. Być może wynika to częściowo z faktu, że przed interfejsami graficznymi terminale tekstowe zawsze pokazywały kursor na znaku (podkreślenie lub blok, być może miganie). Ta abstrakcja kończy się niepowodzeniem w trybie wstawiania, ponieważ wymaga to jeszcze jednej pozycji (słupki vs. ogrodzenia).
Przełączanie między trybami wymaga przesunięcia kursora o pół znaku, że tak powiem. W
i
lewo przesuwa dowodzenia, aby umieścić kursor przed znakiem było po wszystkim.a
Polecenie przenosi prawo. Wyjście z trybu wstawiania (przez naciśnięcie Esc) przesuwa kursor w lewo, jeśli to możliwe (jeśli jest na początku linii, zamiast tego przesuwa się w prawo).Przypuszczam, że takie Esczachowanie ma sens. Często piszesz na końcu linii, a tam Escmożesz tylko iść w lewo. Ogólne zachowanie jest więc najczęstszym zachowaniem.
Pomyśl o znaku pod kursorem jako ostatnim interesującym znaku, a o poleceniu wstawiania jako
a
. Możesz powtarzać a Escbez przesuwania kursora, z tą różnicą, że zostaniesz uderzony o jedną pozycję w prawo, jeśli zaczniesz na początku niepustej linii.źródło
Wizualnie ma to większy sens w gvim:
Podczas edycji kursor znajduje się między znakami:
W trybie normalnym znajduje się na ostatnim znaku:
Więc tak naprawdę nie wraca do postaci, tylko od bycia pomiędzy
r
is
bycia nar
źródło
m
powinna pozostać podświetlona po powrocie do normalnego trybu ...To zachowanie można edytować zgodnie z odpowiedzią tutaj , ale zatrzymaj się i pomyśl o tym, co się dzieje przez sekundę. Kiedy jesteś w trybie wstawiania, tak naprawdę nie jesteś ponad postacią, ale MIĘDZY nimi. Po wstawieniu czegoś kursor przeskakuje na koniec tego, co wstawiłeś, aby następna wstawiona rzecz była później. Pomyśl teraz, czy po prostu napisałeś list, a potem chciałeś coś z tym zrobić. Wciśnięcie Escspowoduje umieszczenie kursora wyboru bezpośrednio nad ostatnim wstawionym znakiem. Gdyby tego nie zrobił, byłoby to raczej niezręczne.
Sytuacja, o której prawdopodobnie myślisz, to sytuacja, gdy jesteś w trybie wstawiania i poruszasz się tak, jakbyś był w trybie normalnym, a następnie przełączał się. W takim przypadku kursor wydaje się cofać o jeden znak, ale jeśli tak myślisz, oznacza to, że byłeś w trybie wstawiania, a ostatnią rzeczą, którą zrobiłeś, było NIE wstawianie. Może powinieneś spędzać więcej czasu w trybie normalnym?
źródło
i
iESC
naciskania klawiszy?i
po którym następuje,ESC
jest funkcjąi
i jest całkowicie niezależneESC
; w szczególności, kiedyi
uderzasz, prosisz vima o wstawienie znaku, co z definicji oznacza „wstaw znak przed tym, w którym jestem”, w przeciwieństwie do tego,a
co oznacza „dodaj znak po tym”.Wpisz Alt+, Laby powrócić do trybu poleceń.
Nie wymaga żadnych mapowań ani zmian konfiguracji vim. Działa, ponieważ na większości emulatorów terminali Alt+ KEYwysyła znak „ Esca” KEY(na xterm może być konieczne dodanie
Xterm*metaSendsEscape: true
wiersza do pliku ~ / .Xdefaults). Że zachowanie pozwala nawet „stworzyć” inne kombinacje trybie Insert, które działają od razu po wyjęciu z pudełka - jak Alt+ Sdo Backspace.Nawiasem mówiąc, umieszczenie kursora nad postacią, którą właśnie napisałeś, może być bardzo niewygodne. Na przykład Escdwnie usunie słowa następującego po właśnie wstawionym tekście.
źródło
Esc d e
aby usunąć słowo z przodu. Wróciłem do domyślnego zachowania, ponieważ czułem, że zmieniło to inne zachowania już zakodowane w mojej głowie.Oto moje rozwiązanie.
To bardziej zwięzła wersja rozwiązania oferowanego na stronie Wikipedii na ten temat .
źródło