W kitach, czyli przede wszystkim w VIM, mogłem wykonać następujące czynności:
- Strona w górę / w dół: Używanie natywnego klawisza Strona w górę / w dół. W Macu alternatywą jest Fn + góra / dół, który nie działa w terminalu (nie przewija się w pliku vim, ale przewija bufor terminala)
- Podobnie, klawisze Fn + prawy / lewy nie zabierają mnie na początek / koniec linii
Jak emulować tę funkcjonalność w Mac OS X?
Odpowiedzi:
To nie jest specjalnie pytanie Mac, to naprawdę pytanie vi.
W trybie nawigacji ctrl-f przewija stronę w dół, a ctrl-b przewija stronę w górę (pomyśl „F” w przód i „B”). Ctrl-d przewija w dół o pół strony, a Ctrl-u przewija w górę o pół strony.
^ zabierze Cię na początek linii, a $ do końca. Wiem, wiem, ale są tego historyczne powody.
Oto naprawdę dobra ściągawka na temat kontrolek vi. vi jest nieco tajemnicze, ale po jego internalizacji jest najszybszym i najsprytniejszym edytorem tekstu na świecie.
źródło
Domyślne preferencje terminala mapują Shift- Page Upi Shift- Page Downna sekwencje znaków, które każą programom takim jak Vim i Emacs przewijać (
ESC [ 5 ~
iESC [ 6 ~
).Jeśli chcesz, aby te klawisze wysyłały sekwencje znaków do terminala bez Shiftmodyfikatora, możesz dostosować mapę klawiatury:
Jeśli to zrobisz, zalecam odwrócenie znaczenia Shiftmodyfikatora dla tych kluczy poprzez zamianę mapowań dla klawiszy przesuniętych i nieprzesuniętych, aby alternatywne zachowania były nadal dostępne. Zobacz także Zobacz menu, które zawiera przewijania komend, które używają Commandmodyfikatora więc są one dostępne niezależnie od klawiatury mapie terminala.
Podobnie Shift- HomeiShift - Endsą mapowane, aby przejść na początek / koniec bieżącej linii (
ESC [ H
iESC [ F
). Sekwencje te są zrozumiałe dla Basha, ale może być konieczne dostosowanie Vima, aby je zrozumieć, lub edycja mapowań specjalnie dla Vima. Vim, Emacs i niektóre inne programy wysyłają sekwencję ucieczki, aby wprowadzić terminal do „Trybu kursora aplikacji”, w którym wysyłane są klawisze Home / EndESC O H
iESC O F
, ale Terminal (od 10.9) nie implementuje tego zachowania. Możesz więc zmienić mapę klawiatury, aby zamiast tego wysłać te inne kody (Bash również je rozumie). (W przypadku innych systemów operacyjnych, Homei Endsą stosowane do startu / końca linii, więc terminal zapewnia im Shiftmodyfikator symetrii).Control- Left ArrowiControl - Right Arrowsą również domyślnie odwzorowane na sekwencje „przenieś na początek / koniec linii”, chociaż różnią się one od sekwencji zamapowanych na Shift- Homei Shift- End. Zamiast tego są odwzorowane na sekwencje kompatybilne z Emacsem i Bash
ESC [ 5 D
orazESC [ 5 C
. Zakładając, że nie są one używane przez Vima, najprostszym podejściem byłoby dostosowanie Vima do akceptowania ich przy użyciu ~ / .vimrc.Pamiętaj, że w nowszych wersjach systemu macOS Terminal nie ma już wyraźnych mapowań dla HomeEnd domyślnego preferencji i preferencji. Zamiast tego zachowuje się dynamicznie, gdy klawisze automatycznie odwzorowują początek / koniec linii, gdy aktywny jest ekran alternatywny - np. Podczas korzystania z aplikacji pełnoekranowej, takiej jak emacs, vim, screen lub tmux. Podczas używania programu zorientowanego liniowo, takiego jak powłoka na ekranie głównym, domyślnie kontynuują przewijanie widoku terminala. ShiftModyfikator odwraca zachowanie.
źródło
\033[5~
(i ... 6.) Dla PageDown / Up.Najłatwiejszym i najlepszym rozwiązaniem jest
n
+↓
, gdzien
jest liczba linii, które chcesz zejść, i↓
jest klawiszem w dół.Regularnie robię
12
+↓
i22
+↓
.źródło
Byłem przyzwyczajony do Home / End, który doprowadził mnie do początku i końca linii w trybie wstawiania (od użycia w Windows i myślę, że Linux), którego Mac nie obsługuje. Jest to szczególnie denerwujące, ponieważ kiedy używam vima na zdalnym systemie, nie mogę tego łatwo zrobić. Po kilku bolesnych próbach i błędach wymyśliłem kilka
.vimrc
linii, które robią to samo, i ostatecznie znalazłem kogoś, kto wymyślił podobne rozwiązanie tutaj:https://coderwall.com/p/fd_bea
Cieszyć się.
źródło