vim
Wstawianie tekstu
Szukaj…
Opuszczanie trybu wstawiania
Komenda | Opis |
---|---|
<Esc> | Opuszcza tryb wstawiania, uruchamia polecenia automatyczne i skróty |
<C-[> | Dokładna synonim <Esc> |
<Cc> | Opuszcza tryb wstawiania, nie uruchamia poleceń automatycznych |
Niektóre osoby lubią używać stosunkowo rzadkiej pary znaków, takich jak jk
jako skrótu do <Esc>
lub <C-[>
których trudno jest dotrzeć na niektórych klawiaturach:
inoremap jk <Esc>l
Różne sposoby przejścia w tryb wstawiania
Komenda | Opis |
---|---|
a | Dołącz tekst po bieżącej pozycji kursora |
A | Dołącz tekst na końcu bieżącego wiersza |
i | Wstaw tekst przed bieżącą pozycją kursora |
I | Wstaw tekst przed pierwszym niepustym znakiem bieżącego wiersza |
gI | Wstaw tekst w pierwszej kolumnie linii kursora |
gi | Wstaw tekst w tym samym miejscu, w którym został ostatnio w trybie wstawiania |
O | Otwórz nowy wiersz powyżej bieżącego wiersza i dodaj tam tekst (CAPITAL O ) |
o | Otwórz nowy wiersz poniżej bieżącego wiersza i dodaj tam tekst (małe litery o ) |
s lub cl | Usuń znak pod kursorem i przejdź do trybu wstawiania |
S lub cc | Usuń całą linię i przejdź do trybu wstawiania |
C | Usuń od pozycji kursora do końca linii i uruchom tryb wstawiania |
c{motion} | Usuń {motion} i uruchom tryb wstawiania (patrz Basic Motion ) |
Skróty trybu wstawiania
Komenda | Opis |
---|---|
<Cw> | Usuń słowo przed kursorem |
<Ct> | Wcięcie linii prądu o jedną shiftwidth |
<Cd> | Nieindentalna linia prądu z jedną shiftwidth |
<Cf> | przewiń linię ponownie (przesuń kursor do pozycji automatycznego wcięcia) |
<Ca> | Wstaw poprzednio wstawiony tekst |
<Ce> | Wstaw znak poniżej |
<Ch> | Usuń jeden znak do tyłu |
<Cy> | Wstaw znak powyżej |
<Cr>{register} | Wstaw treść {register} |
<Co>{normal mode command} | wykonaj {normal mode command} bez wychodzenia z trybu wstawiania |
<Cn> | Następna opcja autouzupełniania dla bieżącego słowa |
<Cp> | Poprzednia opcja autouzupełniania dla bieżącego słowa |
<Cv> | Wstaw znak po wartości ASCII w systemie dziesiętnym |
<Cv>x | Wstaw znak według wartości ASCII w systemie szesnastkowym |
<Cv>u | Wstaw znak według wartości Unicode w systemie szesnastkowym |
<Ck> | Wpisz digrafat |
Uruchamianie normalnych poleceń z trybu wstawiania
W trybie wstawiania naciśnij <Co>
aby tymczasowo opuścić tryb wstawiania i wykonać jednorazowe normalne polecenie.
Przykład
<Co>2w
przeskakuje do drugiego słowa po lewej i powraca do trybu wstawiania.
Uwaga: Powtarzanie z .
powtórzy tylko czynności od powrotu do trybu wstawiania
Pozwala to na użyteczne mapowania, np
inoremap <C-f> <Right>
inoremap <C-b> <Left>
inoremap <C-a> <C-o>^
inoremap <C-e> <C-o>$
Teraz ctrl + a umieści kursor na początku linii, a ctrl + e - na końcu linii. Te mapowania są domyślnie używane w readline
, więc mogą być przydatne dla osób, które chcą spójności.
Wstaw tekst do wielu wierszy jednocześnie
Naciśnij Ctrl + v, aby przejść do trybu blokowania wizualnego.
Użyj ↑ / ↓ / j / k, aby wybrać wiele linii.
Naciśnij Shift + i i zacznij pisać, co chcesz.
Po naciśnięciu Esc tekst zostanie wstawiony do wszystkich wybranych wierszy.
Pamiętaj, że Ctrl + c nie jest w 100% równoważny Esc i nie będzie działać w tej sytuacji!
Istnieją niewielkie odmiany Shift + i , które można nacisnąć w trybie blokowania wizualnego:
Klucz | Opis |
---|---|
c lub s | Usuń wybrany blok i wejdź w tryb wstawiania |
do | Usuń wybrane linie (od kursora do końca) i wejdź w tryb wstawiania |
R | Usuń wybrane linie i wejdź w tryb wstawiania |
ZA | Dołącz do wybranych linii z kolumną na końcu pierwszego wiersza |
Zauważ też, że naciśnięcie . po operacji bloku wizualnego powtórzy operację, w której znajduje się kursor!
Wklej tekst za pomocą polecenia „wklej” terminalu
Jeśli użyjesz polecenia paste z emulatora terminala, Vim zinterpretuje strumień znaków tak, jakby zostały wpisane. Spowoduje to wszelkiego rodzaju niepożądane skutki, w szczególności złe nawyki.
Aby to naprawić, w trybie poleceń:
:set paste
Następnie przejdź do trybu wstawiania, na przykład za pomocą i . Zauważ, że tryb jest teraz -- INSERT (paste) --
. Teraz wklej za pomocą polecenia emulatora terminala lub myszy. Po zakończeniu przejdź do trybu poleceń za pomocą Esc i uruchom:
:set nopaste
Jest prostszy sposób, gdy chce się wkleić tylko raz. Umieść to w swoim .vimrc (lub użyj wtyczki unimpaired.vim ):
function! s:setup_paste() abort
set paste
augroup unimpaired_paste
autocmd!
autocmd InsertLeave *
\ set nopaste |
\ autocmd! unimpaired_paste
augroup end
endfunction
nnoremap <silent> yo :call <SID>setup_paste()<CR>o
nnoremap <silent> yO :call <SID>setup_paste()<CR>O
Teraz możesz po prostu nacisnąć yo
aby wkleić kod pod kursorem, a następnie <Esc>
aby wrócić do trybu normalnego / nopaste.
Wklejanie z rejestru w trybie wstawiania
W trybie wstawiania możesz użyć <Cr>
aby wkleić z rejestru, który jest określony przy następnym naciśnięciu klawisza. <Cr>"
na przykład wklejenia z rejestru nienazwanego ( "
).
Zobacz :help registers
.
Zaawansowane polecenia wstawiania i skróty
Oto krótkie omówienie zaawansowanych poleceń wstawiania, formatowania i filtrowania / skrótów.
Polecenie / skrót | Wynik |
---|---|
g +? + m | Wykonaj kodowanie rot13, w ruchu m |
n + ctrl + a | + n do liczby pod kursorem |
n + ctrl + x | - n do liczby pod kursorem |
g + q + m | Sformatuj linie ruchu m do stałej szerokości |
: r ce w | Linie środkowe w zakresie r do szerokości w |
: r le i | Wyrównaj do lewej linie w zakresie rz wcięciem i |
: r ri w | Wyrównaj do prawej linie w zakresie r do szerokości w |
! Mc | Filtruj linie ruchu m przez polecenie c |
n !! do | Filtruj n wierszy za pomocą polecenia c |
: r ! do | Filtruj zakres r linii przez polecenie c |
Wyłącz automatyczne wcięcie, aby wkleić kod
Podczas wklejania tekstu przez emulator terminala funkcja automatycznego wcięcia może zniszczyć wcięcie wklejonego tekstu.
Na przykład:
function () {
echo 'foo'
echo 'bar'
echo 'baz'
}
zostaną wklejone jako:
function () {
echo 'foo'
echo 'bar'
echo 'baz'
}
W takich przypadkach użyj opcji paste
/ nopaste
, aby wyłączyć / włączyć funkcję automatycznego wcięcia:
:set paste
:set nopaste
Dodając do tego, istnieje prostsze podejście do problemu: Dodaj następujący wiersz w .vimrc:
set pastetoggle=<F3>
A jeśli chcesz wkleić jak ze schowka. Wystarczy nacisnąć F3
w trybie insert
i wkleić. Naciśnij ponownie F3
aby wyjść z trybu paste
.