linux:vim

VIM

+ – 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>

:x lub :wq – zapisywanie pliku i wyjście
:q! – wyjście bez zapisania zmian
:w plik – zapisanie w nowym pliku „plik”

/ 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

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

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)

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

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

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)

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

: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

: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.


: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!”).

: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”.

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.

: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.

&lt;Del&gt; 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].

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.

:[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]&amp;[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ę.

„{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).

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].

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).
&lt;Home&gt; To the first character of the line (exclusive).
To the first non-blank character of the line
$ or
&lt;End&gt;
To the end of the line and [count - 1] lines downward
g0 or
g&lt;Home&gt;
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&lt;End&amp;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.
- &lt;minus&gt; [count] lines upward, on the first non-blank character (linewise).
+ or
CTRL-M or
&lt;CR&gt;
[count] lines downward, on the first non-blank character (linewise).
_ &lt;underscore&gt; [count] - 1 lines downward, on the first non-blank character (linewise).
&lt;C-End&gt; or
G
Goto line [count], default last line, on the first non-blank character.
&lt;C-Home&gt; or
gg
Goto line [count], default first line, on the first non-blank character.
&lt;S-Right&gt; or
w
[count] words forward
&lt;C-Right&gt; or
W
[count] WORDS forward
e Forward to the end of word [count]
E Forward to the end of WORD [count]
&lt;S-Left&gt; or
b
[count] words backward
&lt;C-Left&gt; 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
  &gt;  shift right
  &lt;  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.
&lt;Esc&gt; exit Visual mode without making any changes

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

mój vimrc - nic ciekawego, skopiowałem go z wiki vima. Mam zamiar poprawiać upload, gdy coś zmienię w tym pliku. Na razie mi się podoba.

  • linux/vim.1414952724.txt.gz
  • ostatnio zmienione: 2022/05/22 10:37
  • (edycja zewnętrzna)