Widziałem gdzieś w sieci kogoś używającego, Ctrl-J
a ponieważ nie znałem tego mapowania, przejrzałem odpowiedni dokument i znalazłem:
j or
<Down> or
CTRL-J or
<NL> or
CTRL-N [count] lines downward linewise.
Co prowadzi mnie do kilku pytań:
- Co to jest
<NL>
: Widziałbym to jako ekwiwalent,<CR>
ponieważ naciśnięcie Enterdomyślnie przejdzie w dół o jedną linię w trybie normalnym, ale dlaczego jest<NL>
tutaj, a nie<CR>
? - Jaka jest różnica między tymi mapowaniami : Czy wszystkie te 5 opcji idą o jedną linię w dół w ten sam sposób? Według moich testów odpowiedziałbym tak, ale to doprowadziłoby do mojego następnego pytania.
- Dlaczego istnieje 5 odwzorowań, aby zrobić dokładnie to samo : Rozumiem to
j
i<down>
są przechowywane dla użytkowników, którzy nie są przyzwyczajeni do mapowania, ale dlaczego istnieją inne odwzorowania? - Kiedy bardziej interesujące jest użycie jednego lub drugiego : Jest to kontynuacja poprzedniego pytania: jeśli istnieje tak wiele możliwości, sądzę, że mają one inne zalety lub lepiej je stosować w konkretnych przypadkach użycia. Jakie są te przypadki użycia?
Uważam zwolnienie z tych poleceń jeszcze bardziej dziwne, gdy patrzę na :h k
: istnieją tylko 3 sposoby, aby przejść się: k
, <UP>
i ctrl-p
. Zatem pytanie bonusowe brzmi: dlaczego jest 5 sposobów na zejście i tylko 3 na zejście?
cursor-movement
statox
źródło
źródło
Ctrl-J
wiązania? Wydaje się powszechne, przynajmniej wśród tych, których znam, mapowanieCtrl-J/K
do „w dół / w górę do następnej linii z tym samym poziomem wcięcia co linia początkowa”.<CR>
tu jesteście ”Odpowiedzi:
Interesujące, o którym wspomniałeś
<CR>
.<CR>
lub zwrot karetki, technicznie używany do oznaczenia przejścia na początek linii .<NL>
, lub newline aka line feed (zwykle nazywanyLF
), był używany do oznaczenia przejścia do następnego wiersza . Z czasem rozróżnienie zniknęło w większości aplikacji. 1 Naciśnięcie Enterfaktycznie powoduje powrót karetki, zwykle (spróbuj nacisnąć CtrlVEnter- powinieneś zobaczyć^M
na terminalach Unix).<NL>
Kod kontrolny to CtrlJ.CtrlNzaskoczyło mnie. Według 2 jest to postać przesunięta :
man ascii
Przesunięcie i przesunięcie się znaków, według Wikipedii :
To, jak to się skończyło, oznacza zejście, jest dla mnie zagadką.
Wszystkie trzy sposoby wejścia w górę mają odpowiednie sposoby zejścia w dół. ( CtrlPprzypuszczalnie jest uzupełnieniem CtrlN, co oznacza, że zmiana wejścia / wyjścia nie ma tutaj znaczenia). Dodatkowe dwie drogi w dół (
<NL>
lub CtrlJ) to tak naprawdę dwie reprezentacje tego samego sposobu.<NL>
jest dziedzictwem z czasów pisania na maszynie - i w tamtych czasach nie sądzę, aby istniał klucz do przejścia w górę - tylko do zejścia.Zobacz też:
1 W niektórych przypadkach nadal ma to znaczenie (drukowanie
\r
(powrót karetki) i\n
(przesuwanie wiersza) przy użyciu większości sformatowanych funkcji / narzędzi drukowania nadal zachowuje stare znaczenie).2 Tabela ta jest ułożona w taki sposób, że alfabet odpowiada kodowi sterującemu znaku w tym samym wierszu.
źródło
Ctrl-N
jest na następny , iCtrl-P
na poprzedni . Tak zresztą reprezentują Emacsa, w którym są związaninext-line
iprevious-line
. RównieżCtrl-P
nie zmienia się ; jest to ucieczka łącza danych . Zmiana jestCtrl-O
.Zobaczyć
:help key-notation
.<NL>
oznacza „podawanie linii” i<CR>
„powrót karetki”.Są dwa różne sposoby na przełamanie bieżącej linii. Są one historycznie związana z różnych znaków sterujących (
ctrl-j
ictrl-m
), ale zwykle są wstawiane z tego samego klucza<CR>
. Zgadzam się, że używanie<NL>
w tym kontekście wydaje się sprzeczne z intuicją.Wszystkie te „odwzorowania” (tak naprawdę nie są odwzorowaniami) zachowują się dokładnie tak samo.
Przeważnie historia ma również ograniczenia międzyplatformowe.
Nie było dedykowanych klawiszy ruchu terminalu Billa Joya, ale na strzałkach znajdowały się naklejki ze strzałkami
hjkl
. Ponieważ edytory modalne były wówczas rzadkie, naciśnięcie tych klawiszy wstawiało tylko powiązany znak w cokolwiek, co robiłeś. Trzeba było nacisnąć<C-h>
,<C-j>
,<C-k>
i<C-l>
, aby przesunąć kursor na ekranie.Jak widać, nie całkiem pokrywają się
j
,<C-j>
,<NL>
i<Down>
.<C-n>
ogólnie w Vimie oznacza „następny”, łatwo jest zobaczyć, jak został zbity z innymi towarzyszami.Ponieważ wszystkie są synonimami, możesz swobodnie korzystać z tej, która najlepiej Ci odpowiada.
<CR>
, na przykład, jest interesującym kluczem do użycia we własnych mapowaniach.źródło
<CR>
mapowania. I jeszcze jedno pytanie: wiem, że te „kombinacje klawiszy” tak naprawdę nie są nazywane mapowaniami, ale nie jestem pewien, jak mam je nazywać?:ls
,:substitute
,new
, itd ...?x
jest także „poleceniem”.x
,dd
,c
, etc „Polecenia”. Więc musisz mieć rację, tak sądzęj
lub^J
są to również polecenia.