Niedawno odkryłem skróty Ctrl+ Ei Ctrl+ Ydla Vima, które odpowiednio przesuwają ekran w górę i w dół o jeden wiersz, bez przesuwania kursora .
Czy znasz jakieś polecenie, które pozostawia kursor tam, gdzie jest, ale przesuwa ekran tak, że linia zawierająca kursor staje się pierwszą linią? (posiadanie polecenia dla ostatniej linii byłoby miłym dodatkiem).
Mogę to osiągnąć, ręcznie naciskając Ctrl+ E(lub Ctrl+ Y) odpowiednią liczbę razy, ale fajnie byłoby mieć polecenie, które to robi bezpośrednio.
Jakieś pomysły?
vim
scroll
cursor-position
ereOn
źródło
źródło
Odpowiedzi:
( Ostrożniezz , jeśli zdarzy ci się Caps Lockprzypadkowo, zapiszesz i wyjdziesz
vim
!)źródło
xdotool
lubtriggerhappy
. Na koniec wyświetl stan Caps Lock (nie można tego zrobić w Vimscript.) ...xev -q
,cat /proc/bus/input/devices
aby znaleźć urządzenie do zapytania ievtest
czythd ... --dump /dev/input/event<#>
sprawdzić stan itd Jeśli koniecznie musi wykonać ponowne mapowanie całego systemu, przynajmniej zamiany dwa zamki jak czapki <-> num - ale problem polega na tym, że bardziej zapominam, że jest włączony, ponieważ jeśli wcześniej tego chciałeś, będziesz go używać, niezależnie od mapy. Ryzykuj złamanie Vima przed plikami / użytkownikiem / systemem.confirm()
. Ponadto zamiast mapować Caps Lock na Ctrl, możesz mapować go na klucz lub kombinację zrozumiałą, ale niezamapowaną przez Vima, a następnie emulować Caps Lock wyłącznie w trybie wstawiania / zastępowania, ręcznie lub przez coś takiego jak github.com/tpope/ vim-capslock . Prawdopodobnie nie będziesz go potrzebować poza Vimem, ale jeśli to zrobisz, napisz skrypt xmodmap, aby przywrócić zmiany lub sprawdź, czy program obsługuje własne mapowania (i rób notatki)Dodatkowo:
Ctrl- yi Ctrl- ezmień pozycję kursora tylko wtedy, gdy zostanie przesunięty poza ekran.
Dzięki uprzejmości http://www.lagmonster.org/docs/vi2.html
źródło
:help CTRL-E
mówiMnemonic: Extra lines.
Vim wymaga, aby kursor znajdował się na bieżącym ekranie przez cały czas, jednak możesz dodać zakładkę do bieżącej pozycji, przewinąć dookoła, a następnie wrócić do miejsca, w którym byłeś.
źródło
Ctrl-O
dla drugiego naprawdę świetnego, a „backtick, kropka” przywraca cię do miejsca, w którym ostatnio edytowałeś.mg
, przewiń dookoła, zaznacz goto za pomocą'g
i gotowe) Teraz możesz wywołać konfigurowalny klawisz, aby się obejść i poczujesz się, jakby kursor nigdy nie opuścił bieżącej pozycji. Voilá!Oto moje rozwiązanie w vimrc:
Aby kursor pozostał na środku ekranu, a ekran przesuwał się w górę lub w dół.
źródło
Aby opuścić kursor w tej samej kolumnie po użyciu Ctrl+ D, Ctrl+ F, Ctrl+ B, Ctrl+ U, G, H, M, L,gg
powinieneś zdefiniować następującą opcję:
źródło
Dziwi mnie, że nikt nie korzysta z
Scrolloff
opcji, która utrzymuje kursor na środku strony. Wypróbuj z:Jest to pierwsza zalecana metoda na wiki Vima i działa dobrze.
źródło
:set scrolloff=4
będzie wymagał, aby kursor zawsze znajdował się w odległości co najmniej 4 linii od góry lub dołu okna, więc zawsze masz przynajmniej trochę kontekstu.W przeszłości używałem tych skrótów ( uwaga: oddzielne naciśnięcia klawiszy, tj. Dotknij z , puść, dotknij kolejnego klawisza):
z enter -> przenosi bieżącą linię na górę ekranu
z . -> przesuwa bieżącą linię na środek ekranu
z - -> przesuwa bieżącą linię na dół
Jeśli nie jest to oczywiste:
enteroznacza klawisz Returnlub Enter.
.oznacza DOT lub klawisz „pełnego zatrzymania” (
.
).-oznacza klawisz HYPHEN (
-
)Za to, co jest warte, z.pozwala uniknąć niebezpieczeństwa zapisywania i zamykania Vi przez przypadkowe wpisanie, ZZczy włączona jest funkcja Caps Lock.
źródło
Możesz poprzedzić komendę przesuwania kursora cyfrą, która powtórzy tę komendę wiele razy
10Ctrl+ Ezrobi Ctrl+ E10 razy zamiast jednego.
źródło
zEnter robi dokładnie to, o co pyta to pytanie.
Działa tam, gdzie dziwnie zznie działa (vim 7.4.1689 na Ubuntu 2016.04 LTS bez specjalnego .vimrc)
źródło
Przydatne mogą być odpowiedzi na „ Przewijanie Vima względem kursora, niestandardowe mapowanie ”.
Możesz użyć
ScrollToPercent(0)
tego pytania, aby to zrobić.źródło
Czasami przydaje się przewijanie tekstu za pomocą klawiszy Ki J, więc mam tę funkcję „trybu przewijania” w moim .vimrc (również powiązane zzs ).
Zobacz scroll_mode.vim .
źródło
mój mnemonik do przewijania ...
Dodając do innych odpowiedzi, zwróć również uwagę
ze
izs
, co oznacza: przesuń ekran w lewo / prawo kursora (bez przesuwania kursora)również spojrzeć na stanowisku
h
il
it
ib
i (z klawiaturą QWERTZ)c-e
ic-y
(również „y” jakoś punkty do dołu) na klawiaturze, aby przypomnieć sobie, gdzie ekran jest w ruchu.źródło
Napisałem wtyczkę która pozwala mi poruszać się po pliku bez zmiany pozycji kursora. Polega ona na złożeniu linii między twoją pozycją a pozycją docelową, a następnie przeskoczeniu nad foldem lub przerwaniu go i wcale się nie ruszaj.
Jest to także łatwy do szybkiego przełącznika pomiędzy kursorem na pierwszej linii, w ostatnim wierszu i kursor w środku klikając przycisk j, klubl gdy jesteś w trybie wtyczki.
Wydaje mi się, że byłoby dobrze tutaj.
źródło
Wpisz vim i wpisz:
:help z
zjest poleceniem vim dla przerysowywania, więc przerysuje plik względem położenia kursora. Dostępne opcje są następujące:
z+- Przerysowuje plik z kursorem u góry okna i na początku niepustym znakiem linii.
z-- Przerysowuje plik z kursorem na dole okna i na początku niepustym znakiem linii.
z.- Przerysowuje plik z kursorem na środku okna i na początku niepustym znakiem linii.
zt- przerysowuje plik z kursorem w górnej części okna.
zb- przerysowuje plik z kursorem na dole okna.
zz- przerysowuje plik z kursorem na środku okna.
źródło