Wiem, jak ogólnie poruszać się w trybie poleceń, w szczególności przeskakując do linii itp. Ale jakie jest polecenie, aby przejść do końca linii, na której aktualnie jestem?
vimtutor
jest świetny. Prawdopodobnie nie wiedzieli o tym?
Wiem, jak ogólnie poruszać się w trybie poleceń, w szczególności przeskakując do linii itp. Ale jakie jest polecenie, aby przejść do końca linii, na której aktualnie jestem?
vimtutor
jest świetny. Prawdopodobnie nie wiedzieli o tym?
Odpowiedzi:
Tylko klawisz $ (znak dolara) . Możesz użyć, Aaby przejść na koniec linii i przejść do trybu edycji (Dołącz). Aby przejść do ostatniego niepustego znaku, możesz nacisnąć, ga następnie _klawisze.
Przeciwieństwem Ajest I(tryb Insert na początku linii), a na marginesie. Naciśnięcie tylko ^spowoduje umieszczenie kursora na pierwszym znaku wiersza innym niż białe znaki.
g_
g_
odmiana, ponieważ nie zawiera pustych znaków
Jak wiele osób powiedziało:
ale również:
|
Polecenie potoku może jednak liczyć, np. 3 | aby przejść do trzeciej kolumny.
g _ przechodzi do ostatniej spacji.
g $ przechodzi na koniec linii ekranu (gdy linia buforowa jest owinięta przez wiele linii ekranu)
b
przechodzi na początek poprzedniego słowa, które wcale nie jest tym samym. Jest to mniej więcej odpowiednik $ge
.
_
i g_
do visual / yanking, podobnie jak kopiuję / usuwam $
znak nowej linii (LN).
g_
to jedyny sposób, w jaki udało mi się dotrzeć do faktycznego końca linii.
$
przechodzi na koniec linii, nawet jeśli jest zapakowany dla mnie. Nie znam ustawień dostosowujących jego zachowanie. Być może został ponownie mapowany przez twój .vimrc g$
?
Główne pytanie - koniec linii
$ przechodzi na koniec linii, pozostaje w trybie poleceń
A przechodzi na koniec wiersza, przechodzi w tryb wstawiania
I odwrotnie - początek wiersza (technicznie pierwszy znak spacji )
^ przechodzi na początek linii, pozostaje w trybie poleceń
I (wielkie litery i) przechodzi na początek linii, przełącza do trybu wstawiania
Dalej - początek linii (technicznie pierwsza kolumna niezależnie od białych znaków )
0 (zero) przechodzi na początek linii, pozostaje w trybie poleceń
0i (zero, a następnie małe litery i) przechodzi na początek linii, przełącza się do trybu wstawiania
Dla tych, którzy zaczynają się uczyć vi, jest to dobre wprowadzenie do vi, wymieniając obok siebie polecenia vi do typowych ruchów kursora i klawiszy skrótu edytora graficznego Windows.
I
jest nie, 0
ale ^
, ponieważ oba I
i ^
przechodzą do pierwszego niebiałego znaku linii, ale 0
przechodzą do kolumny zero (jak sama nazwa wskazuje).
0
? (przejdź do pierwszego znaku (= kolumna 0) wiersza i przejdź do trybu wstawiania)
0i
. :-)
Jeśli bieżąca linia zawija się wokół widocznego ekranu do następnej linii, możesz użyć g $, aby dostać się do końca linii ekranu .
gw
i gq
są polecenia, które sformatować tekst. (patrz :h gw
i :h gq
) Najprawdopodobniej to zrobiłeś gw{motion}
i zmieniłeś trochę tekstu, aby linie ekranu odpowiadały rzeczywistym wierszom.
Znak dolara: $
W wielu przypadkach, gdy znajdujemy się w ciągu, otacza nas podwójny cudzysłów lub podczas pisania instrukcji nie chcemy naciskać klawisza Escape i przechodzić do końca tego wiersza za pomocą klawisza strzałki i nacisnąć średnik ( ;
), aby zakończyć linia. Napisz następujący wiersz w pliku vimrc :
imap <C-l> <Esc>$a
Co mówi linia? Mapuje Ctrl + l na szereg poleceń. Jest to równoważne z jednoczesnym naciśnięciem Esc(tryb poleceń), $(koniec linii), a(dołącz).
vim
z pewnością pozwala ci robić znacznie więcej w znacznie krótszym czasie dzięki takim rzeczom. @razorxpress, drobna korekta byłaby imap <C-l> <Esc>A
, co sprawia, że Ctrl + l jest równoważne naciśnięciu Esc
(wyjście z trybu wstawiania), a następnie A
(dołącz do końca linii).
inoremap <C-l> <C-o>A
Zaletą klawisza „End” jest to, że działa zarówno w trybie normalnym, jak i wstawiania.
„$” działa tylko w trybie normalnym / komend, ale działa również w klasycznym edytorze vi (dobrze wiedzieć, kiedy vim nie jest dostępny).
Zwróć także uwagę na różnicę między linią (lub może fizyczną) a linią ekranową . Linia kończy się znakiem końca linii („\ n”). Linia ekranu to cokolwiek, co dzieje się jako jeden wiersz znaków w twoim terminalu lub na ekranie. Oba się rozdzielają, jeśli masz fizyczne linie dłuższe niż szerokość ekranu, co jest bardzo częste podczas pisania wiadomości e-mail i tym podobnych.
To rozróżnienie pojawia się również w poleceniach końca linii.
Jeśli zawsze wolisz to drugie zachowanie, możesz ponownie przypisać klucze w ten sposób:
:noremap 0 g0
:noremap $ g$
g_
jest ostatnim niebiałym odstępem linii fizycznej . Co powiesz na linię ekranu?
Lub istnieje oczywista odpowiedź: użyj Endklawisza, aby przejść do końca linii.
Nie widzę skrótu dla Macbooka do używania vima w standardowym terminalu. Mam nadzieję, że to komuś pomoże. Dla użytkowników systemu macOS (testowane na Macbooku Pro 2018):
fn+ ← - przejście do linii początkowej
fn+ → - przejście do linii końcowej
fn+ ↑ - przesuń stronę w górę
fn+ ↓ - przesuń stronę w dół
fn+ g - przesuń kursor na początek dokumentu
fn+ shift + g - przesuń kursor na koniec dokumentu
W przypadku dwóch ostatnich poleceń należy kiedyś nacisnąć dwukrotnie.
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 te .vimrc
wiersze, które robią to samo, ale związałem się z Ctrl-A na początku linii i Ctrl-D na końcu linii. (Z jakiegoś powodu Ctrl-E, jak sądzę, jest zarezerwowany lub przynajmniej nie mogłem znaleźć sposobu, aby go powiązać.) Ciesz się.
:imap <Char-1> <Char-15>:normal 0<Char-13>
:imap <Char-4> <Char-15>:normal $<Char-13>
Tutaj jest dobra tabela kodów znaków kontrolnych ASCII dla innych:
http://www.physics.udel.edu/~watson/scen103/ascii.html
Możesz także zrobić kombinację klawiszy Ctrl-V + Ctrl-, ale to nie wkleja się tak dobrze w takich miejscach.