**To jest stara wersja strony!**
VIM
Lista komend Vima
poruszanie się po dokumencie
+
– przejście do następnej linii
–
– przejście do poprzedniej linii
0
– przejście do początku linii
^
– przejście do pierwszego znaku nie będącego znakiem białym w linii
$
– przejście na koniec linii
n|
– przejście do kolumny n linii
}
– przejście do następnego paragrafu
{
– przejście do poprzedniego paragrafu
%
– przejście do otwarcia / zamknięcia nawiasu (),[],<>,{}
G
– przejście na koniec dokumentu
nG
– przejście do linii <n>
zapisywanie
:x
lub :wq
– zapisywanie pliku i wyjście
:q!
– wyjście bez zapisania zmian
:w plik
– zapisanie w nowym pliku „plik”
wyszukiwanie
/ STRING
– szukanie do przodu
? STRING
– szukanie do tyłu
n
– przejście do następnego znalezionego elementu
SHIFT+n
- przejście do poprzedniego znalezionego elementu
kasowanie tekstu
x
– kasowanie bieżącego znaku
nx
– kasowanie znaków
dw
– kasowanie bieżącego wyrazu
dd
– kasowanie bieżącej linii
ndd
– kasowanie <n> linii
D
– kasowanie znaków od kursora do końca bieżącej lini
dG
– kasowanie wszystkiego od kursora do końca dokumentu
edycja tekstu
o
– wstawienie nowej linii poniżej bieżącej
O
– wstawienie nowej linii powyżej bieżącej
i
– rozpoczęcie edycji przed kursorem
I
– rozpoczęcie edycji na początku bieżącej linii
a
– rozpoczęcie edycji po kursorze
A
– rozpoczęcie edycji na końcu bieżącej linii
cw
– zastąpienie wyrazu (bieżący wyraz się kasuje, kursor ustawia się na jego początku)
cc
– zastąpienie linii (bieżąca linia się kasuje, kursor ustawia się na jej początku)
kopiowanie i wstawianie
yw
– kopiuj do schowka bieżący wyraz
yb
– kopiuj do schowka poprzedni wyraz
Y
– kopiuj do schowka bieżącą linię
nY
– kopiuj następne <n> linii
p
– wklej skopiowany tekst za kursorem
P
– wklej skopiowany tekst przed kursorem
inne
u
– cofnięcie ostatniej zmiany
U
– cofnięcie wszystkich zmian w bieżącej linii
.
– powtórzenie ostatniej komendy
SHIFT+#
– wyszukiwanie wyrażeń pasujących do zaznaczonego
SHIFT+%
– przejście do kolejnego nawiasu () lub {}
~
– zmiana litery z małej na dużą i na odwrót
zastępowanie
Można używać wyrażeń regularnych PERL- kompatybilnych
zastąpienie stringu OLD stringiem NEW
:s/OLD/NEW
– pierwszego wystąpienia w bieżącej linii
:s/OLD/NEW/g
– każdego wystąpienia w linii
:#,#s/OLD/NEW/g
– pomiędzy liniami # i #
:%s/OLD/NEW/g
– w całym dokumencie
:%s/([0-9]+) OLD/1 NEW/g
– w całym dokumencie z użyciem backreferencji (trzeba poprzez „”
wyescapować znaki specjalne, następnie poprzez „1” wstawić wyciągnięte dane)
praca z danymi zewnętrznymi
Vim umożliwia wywołanie dowolnej komendy z poziomu edytora, można także odczytywać efekt jej działania
:! komenda
– wywołanie „komenda” w shellu i wyświetlenie jej wyniku, komendą może być każde polecenie unixowe
:r ! komenda
– wywołanie ‚komenda’ w shellu i wczytanie wyniku jej działania do edytora
:r ! last | grep user
– na wywoływanych komendach można robić dowolne operacje przed wczytaniem do edytora
:r textfile
– wczytanie źródła pliku ‚textfile’ do edytora
:r ! w3m http://en.wikipedia.org/wiki/Vi -dump
– wczytanie do edytora zawartości strony internetowej
Praca z zakładkami
:tabs
– wyświetlenie informacjie o aktualnie otwartych zakładkach
:tabnew
– otwarcie pustej zakładki
:tabnew FILE
– otwarcie pliku FILE w nowej zakładce
:tabf FILE
– otwarcie pliku w nowej zakładce
:tabn
– przejście do następnej zakładki
gt
– przejście do następnej zakładki (działa w trybie NORMAL)
gT
– przejście do poprzedniej zakładki (działa w trybie NORMAL)
n gt
– przejście do zakładki o numerze n (działa w trybie NORMAL)
n gT
– cofnięcie się do zakładki znajdującej się w odległości n od aktualnej (działa w trybie NORMAL)
:tabp
– przejście do poprzedniej zakładki
:tabl
– przejście do ostatniej zakładki
:tabc
– zamknięcie aktualnej zakładki, gdy jest jedna karta, to nie będzie zamknięta
:tabo
– zamknięcie wszystkich zakładek oprócz tej która jest aktualnie używana
:tabd KOMENDA
– wykonuje komendę na wszystkich otwartych zakładkach
okna
:split
lub CTRL+w+s
- podziel okno w poziomie
:vsplit
lub CTRL+w+v
- podziel okno w pionie
CTRL+w+[h/j/k/l]
- przechodzenie między oknami, gdzie kierunek to oczywiście h
, j
, k
lub l
.
CTRL + w + w
- przejdź do nast. okna w kolejce
Polecam rewelacyjny VIM Tutorial.
Czyt Szyt komend Vim
Jak wyjść z Vima
:q[uit] | Zakończ Vim. Nie zadziała, jeżeli zostały wprowadzone zmiany. |
:q[uit]! | Wymuś zakończenie. Zakończ bez zapisywania zmian. |
:cq[uit] | Zawsze zakończ bez wprowadzania zmian. |
:wq | Zapisz aktualny plik i zakończ. |
:wq! | Wymuś zapis aktualnego pliku i zakończenie. |
:wq {file} | Zapisz do pliku o nazwie {file} i wyjdź. |
:wq! {file} | Wymuś zapis do pliku {file} i zakończenie. |
:[range]wq[!] | Zapisz do aktualnie otwartego pliku, ale tylko linie określone w zakresie [range]. |
ZZ | Zapisz aktualny plik, jeśli został zmieniony i zakończ (UWAGA!!! Wymaga uważności!) |
ZQ | Zakończ pracę nad aktualnym plikiem i zakończ program (działa tak samo jak „:q!”). |
Edycja pliku
:e[dit] | Edytuj aktualny plik. Przydatne, by wyedytować plik, jeżeli został zmieniony poza buforem Vima. |
:e[dit]! | Wymuś edycję aktualnego pliku. Usuń wszelkie zmiany znajdujące się w buforze. Przydatne, jeżeli chcesz zacząć od nowa. |
:e[dit] {file} | Edytuj plik o nazwie {file}. |
:e[dit]! {file} | Wymuś edycję pliku o nazwie {file}. Usuń wszelkie zmiany znajdujące się w buforze. |
gf | Edytuj plik, którego nazwa znajduje się POD lub PO kursorze. Mnemonic: „goto file”. |
Wprowadzanie tekstu
a | Pisz tekst PO kursorze. |
A | Pisz tekst na końcu danej linii. |
i | Pisz tekst PRZED kursorem. |
I | Pisz tekst na początku linii (przed pierwszym znakiem w linii, który nie jest spacją). |
gI | Pisz tekst w kolumnie 1 (pierwszym rzędzie znaków linii). |
o | Wstaw nową linię POD kursorem i zacznij wprowadzać tekst. |
O | Wstaw nową linię NAD kursorem i zacznij wprowadzać tekst. |
Wstawianie pliku lub wyniku komendy
:r[ead] [name] | Wstaw plik o nazwie [name] PONIŻEJ kursora. |
:r[ead] !{cmd} | Wykonaj komendę {cmd} i wstaw jej wynik z STDOUT pod kursorem. |
Usuwanie tekstu
<Del> or x | Skasuj [count] liter PONIŻEJ i PO kursorze. |
X | Skasuj [count] liter PRZED kursorem. |
d{motion} | Skasuj tekst w linii wskazanej ruchem {motion} kursora. |
dd | Skasuj bieżącą linię. |
D | Skasuj znaki począwszy od tego POD kursorem DO KOŃCA LINII |
{Visual}x lub {Visual}d | Skasuj podświetlony tekst (w trybie WIZUALNYM), patrz→ Zaznaczanie tekstu). |
{Visual}X lub {Visual}D | Skasuj podświetlone linie. |
:[range]d[elete] | Skasuj linię nr [range] (domyślnie: bieżąca linia) |
:d[elete] {count} | Skasuj {count} liczbę linii w dół począwszy od tej, na której jest kursor. |
:[range]d[elete] {count} | Skasuj {count} linii, począwszy od numeru [range]. |
Zamiana Tekstu
r{char} | Zamień literę POD kursorem replace the character under the cursor with {char}. |
R | Wejdź w tryb ZAMIANA (Insert mode), w którym znaki się zamienia, zamiast wstawiać nowe. |
~[count] | Zmień wielkość znaku (z małej na wielką lub odwrotnie) pod kursorem i przesuń kursor w prawo. Powtórz czynność dla [count] następnych znaków |
~{motion} | Zmień wielkość tekstu (z małych na wielkie lub odwrotnie) wskazanego ruchem kursora. |
{Visual}~ | Zmień wielkość (z małych na wielkie lub odwrotnie) podświetlonego tekstu. |
Zastępowanie znaków i tekstu
:[range]s[ubstitute]/{pattern}/{string}/[c][e][g][p][r][i][I] [count] | Dla każdej linii w zakresie [range] zamień {pattern} na {string}. |
:[range]s[ubstitute] [c][e][g][r][i][I] [count] :[range]&[c][e][g][r][i][I] [count] | Powtórz ostatnie :substitute z tym samym wzorcem wyszukiwania i tekstem zastępczym ale bez tych samych flag. Możesz dodać inne flagi. |
Argumenty, których możesz użyć dla komend zastępowania: [c] Potwierdź każdą zamianę. Vim umieści kursor na pasującym tekście. Możesz wklepać: 'y' by zastąpić zaznaczony kursorem tekst 'n' by nie zastępować zaznaczonego kursorem tekstu 'a' by zastąpić ten i wszystkie inne pasujące teksty 'q' by zakończyć zastępowanie CTRL-E by przewinąć ekran do góry CTRL-Y by przewinąć ekran do dołu [e] Jeżeli wzorzec nie pasuje, nie wyświetlaj komunikatu błędu, lecz kontynuuj, jakby żaden błąd nie wystąpił. [g] Zastąp wszystkie wystąpienia w linii. Bez tego argumentu zastąpi tylko pierwszy pasujący w każdej linii. [i] Ignoruj wielkość znaków. [I] Nie ignoruj wielkości znaków. [p] Wyświetl linię zawierającą ostatnią zamianę.
Kopiowanie i przesuwanie tekstu
„{a-zA-Z0-9.%#:-”} | Użyj rejestru {a-zA-Z0-9.%#:-„} dla następnego kasowania, kopiowania lub wklejania. |
:reg[isters] | Wyświetl zawartość wszystkich ponumerowanych i nazwanych rejestrów. |
:reg[isters] {arg} | Wyświetl zawartość ponumerowanych i nazwanych rejestrów wymienionych w {arg}. |
:di[splay] [arg] | Tak samo jak :registers . |
[„x]y{motion} | Yank {motion} text [into register x]. |
[„x]yy | Yank [count] lines [into register x] |
[„x]Y | yank [count] lines [into register x] (synonym for yy). |
{Visual}[„x]y | Yank the highlighted text [into register x] (for {Visual} see Selecting Text). |
{Visual}[„x]Y | Yank the highlighted lines [into register x] |
:[range]y[ank] [x] | Yank [range] lines [into register x]. |
:[range]y[ank] [x] {count} | Yank {count} lines, starting with last line number in [range] (default: current line), [into register x]. |
[„x]p | Put the text [from register x] after the cursor [count] times. |
[„x]P | Put the text [from register x] before the cursor [count] times. |
[„x]gp | Just like „p”, but leave the cursor just after the new text. |
[„x]gP | Just like „P”, but leave the cursor just after the new text. |
:[line]pu[t] [x] | Put the text [from register x] after [line] (default current line). |
:[line]pu[t]! [x] | Put the text [from register x] before [line] (default current line). |
Undo/Redo/Repeat
u | Undo [count] changes. |
:u[ndo] | Undo one change. |
CTRL-R | Redo [count] changes which were undone. |
:red[o] | Redo one change which was undone. |
U | Undo all latest changes on one line. {Vi: while not moved off of it} |
. | Repeat last change, with count replaced with [count]. |
Moving Around
Basic motion commands:
k h l j
h or | [count] characters to the left (exclusive). | |||
l or or | [count] characters to the right (exclusive). | |||
k or or CTRL-P | [count] lines upward | |||
j or or CTRL-J or or CTRL-N | [count] lines downward (linewise). | |||
0 | To the first character of the line (exclusive). | |||
<Home> | To the first character of the line (exclusive). | |||
To the first non-blank character of the line | ||||
$ or <End> | To the end of the line and [count - 1] lines downward | |||
g0 or g<Home> | When lines wrap ('wrap on): To the first character of the screen line (exclusive). Differs from „0” when a line is wider than the screen. When lines don't wrap ('wrap' off): To the leftmost character of the current line that is on the screen. Differs from „0” when the first character of the line is not on the screen. | |||
g | When lines wrap ('wrap' on): To the first non-blank character of the screen line (exclusive). Differs from „ | ” when a line is wider than the screen. When lines don't wrap ('wrap' off): To the leftmost non-blank character of the current line that is on the screen. Differs from „ | ” when the first non-blank character of the line is not on the screen. | |
g$ or g<End&gr; | When lines wrap ('wrap' on): To the last character of the screen line and [count - 1] screen lines downward (inclusive). Differs from „$” when a line is wider than the screen. When lines don't wrap ('wrap' off): To the rightmost character of the current line that is visible on the screen. Differs from „$” when the last character of the line is not on the screen or when a count is used. | |||
f{char} | To [count]'th occurrence of {char} to the right. The cursor is placed on {char} (inclusive). | |||
F{char} | To the [count]'th occurrence of {char} to the left. The cursor is placed on {char} (inclusive). | |||
t{char} | Till before [count]'th occurrence of {char} to the right. The cursor is placed on the character left of {char} (inclusive). | |||
T{char} | Till after [count]'th occurrence of {char} to the left. The cursor is placed on the character right of {char} (inclusive). | |||
; | Repeat latest f, t, F or T [count] times. | |||
, | Repeat latest f, t, F or T in opposite direction [count] times. | |||
- <minus> | [count] lines upward, on the first non-blank character (linewise). | |||
+ or CTRL-M or <CR> | [count] lines downward, on the first non-blank character (linewise). | |||
_ <underscore> | [count] - 1 lines downward, on the first non-blank character (linewise). | |||
<C-End> or G | Goto line [count], default last line, on the first non-blank character. | |||
<C-Home> or gg | Goto line [count], default first line, on the first non-blank character. | |||
<S-Right> or w | [count] words forward | |||
<C-Right> or W | [count] WORDS forward | |||
e | Forward to the end of word [count] | |||
E | Forward to the end of WORD [count] | |||
<S-Left> or b | [count] words backward | |||
<C-Left> or B | [count] WORDS backward | |||
ge | Backward to the end of word [count] | |||
gE | Backward to the end of WORD [count] |
These commands move over words or WORDS.
A word consists of a sequence of letters, digits and underscores, or a sequence of other non-blank characters, separated with white space (spaces, tabs, ). This can be changed with the 'iskeyword' option.
A WORD consists of a sequence of non-blank characters, separated with white space. An empty line is also considered to be a word and a WORD.
( | [count] sentences backward |
) | [count] sentences forward |
{ | [count] paragraphs backward |
} | [count] paragraphs forward |
]] | [count] sections forward or to the next '{' in the first column. When used after an operator, then the '}' in the first column. |
][ | [count] sections forward or to the next '}' in the first column |
The operators that can be used are: ~ switch case d delete c change y yank > shift right < shift left ! filter through external command = filter through 'equalprg' option command gq format lines to 'textwidth' length
v | start Visual mode per character. |
V | start Visual mode linewise. |
<Esc> | exit Visual mode without making any changes |
How to Suspend
CTRL-Z | Suspend Vim, like ”:stop”. Works in Normal and in Visual mode. In Insert and Command-line mode, the CTRL-Z is inserted as a normal character. |
:sus[pend][!] or :st[op][!] | Suspend Vim. If the '!' is not given and 'autowrite' is set, every buffer with changes and a file name is written out. If the '!' is given or 'autowrite' is not set, changed buffers are not written, don't forget to bring Vim back to the foreground later! |
{{Vim%20Commands%20Cheat%20Sheet_files/glider.png}}
Daniel Gryniewicz / dang@fprintf.net