====== VIM ====== ===== Lista komend Vima ===== na podstawie [[http://blog.adiasz.pl/2008/02/03/vim-podstawowe-komendy/|tej strony]] ==== 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 ==== 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 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 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 [[http://www.openvim.com/tutorial.html|VIM Tutorial]]. ---- ===== Czyt Szyt komend Vim ====== ==== Zaznaczanie kolumny ==== W skrócie: CTRL+V → → c → napisz → * Wejdź w tryb NORMALNY * Połóż kursor na początek tekstu do zaznaczenia * Naciśnij ''CTRL-V'' i kieruj kursor w dół zaznaczenia * Po zaznaczeniu wszystkich linijek naciśnij ''c'' * Wpisz nowy tekst. Nie bój, że widać tylko w pierwszej linijce! * Uderz ''''. Cały tekst się zmienił!!! ==== 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-> [[#select|Zaznaczanie tekstu]]). | /* | {Visual}CTRL-H lub\\ {Visual} | W trybie WIZUALNYM When in Select mode: Delete the highlighted text | */ | {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 /* (użyj wielkich liter) (use uppercase character to append with delete and yank) ({.%#:} only work with put) */. | | :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 '':reg''. | | [x]y{motion} | Skopiuj tekst z linii bieżącej i nast. wskazanej przez {motion} do rejestru //x//. | /* | [x]yy | Skopiuj [count] lines [into register x] | */ | [x]y[count] | Skopiuj [count] linii + bieżąca (do rejestru //x// jeśli wpisany). /* | [x]Y | yank [count] lines [into register x] (synonym for yy). | */ | {Visual}[x]y | Skopiuj podświetlony tekst [do rejestru //x//] (Tryb WIZUALNY {Visual} -> patrz [[#select|Zaznaczanie tekstu]]). | | {Visual}[x]Y | Skopiuj podświetlone linie (nawet jeśli nie całe podświetlone) [do rejestru //x//] | | :[range]y[ank] [x] {motion} | Skopiuj [range] linii [do rejestru x] w kierunku {motion}. | | :[range]y[ank] [x] {count} | Skopiuj {count} linii, poczynając od linii ostatniej w [range] (domyślnie: aktualna linia), [do rejestru x]. | | [x]p | Wklej tekst [z rejestru x] PO kursorze. | | [x]P | Wklej tekst [z rejestru x] PRZED kursorem. | | [x]gp | Jak "p", ale zostaw kursor zaraz PO wklejonym tekście. | | [x]gP | Jak "p", ale zostaw kursor zaraz PO wklejonym tekście. | | :[line]pu[t] [x] | Wklej tekst [z rejestru x] PO linii nr [line] (domyślnie: aktualna linia). | | :[line]pu[t]! [x] | Wklej tekst [z rejestru x] PRZED linią nr [line] (domyślnie: aktualna linia). | ---- ==== Undo/Redo/Repeat/Cofnij/Ponów/Powtórz ===== | u | Cofnij. | | :u[ndo] | Cofnij jedną zmianę. | | :u[ndo][count] | Cofnij [count] zmian. | | CTRL-R | Ponów cofniętą zmianę. | | :red[o] | Ponów cofniętą zmianę. | | :red[o][count] | Ponów [count] cofniętych zmian. | | U | Cofnij wszystkie ostatnie zmiany w danej linii. | | . | Powtórz ostatnią zmianę ile razy chcesz naciskając kropkę. | ---- ==== Moving Around ===== Podstawowe komendy przemieszczania kursora: k h l j | [count]h | [count] znaków w lewo. | | [count]l | [count] znaków w prawo. | | [count]k lub\\ -(minus) lub\\ CTRL-P | [count] znaków w górę. | | [count]j lub\\ +(plus) lub\\CTRL-J lub\\CTRL-N | [count] znaków w dół. | | 0 | Do pierwszego znaku w linii. | | <Home> | Do pierwszego znaku w linii. | | ^ | Do pierwszej nie-spacji w linii. | | $ | Do końca linii. | | g0 or\\ g<Home> | Jeżeli wiersze się zawijają, idź do pierwszego znaku w linii ekranowej. Działa inaczej niż ''0'' na ekranach różnej szerokości.Kiedy linie nie zawijają się: idź do znaku najbardziej po lewej w danej linii na ekranie. | | g^ | Kiedy linie się zawijają: idź do pierwszej nie-spacji na linii ekranowej. J.w. działa inaczej niż ''^''. | | g$ | Kiedy linie się zawijają: idź do ostatniego znaku w linii ekranowej. J.w. działa inaczej niż ''$'', które każe iść do końca linii tekstu. | | f{char} | Idź w prawo do wystąpienia znaku {char}. | | F{char} | Idź w lewo do wystąpienia znaku {char}. | | t{char} | Idź w lewo do wystąpienia znaku {char}. Kursor stanie na znaku na lewo od {char} | | T{char} | Idź w lewo do wystąpienia znaku {char}. Kursor stanie na znaku na prawo od {char} | | ; | Powtarzaj ostatnie ''f, t, F lub T''. | | , | Powtarzaj ostatnie ''f, t, F lub T'' w przeciwnym kierunku. | /* | _ <underscore> | [count] - 1 lines downward, on the first non-blank character (linewise). | */ | <C-End> or\\ G | Idź do ostatniej linii. | | <C-Home> or\\ gg | Idź do pierwszej linii. | | <S-Right> or\\ w | słowo naprzód (w prawo). Rozpoznaje znaki inne niż spacja. | | <C-Right> or\\ W | słowo naprzód (w prawo). Rozpoznaje tylko spacje. | | e | Na koniec słowa. Wg nie tylko spacji. | | E | Na koniec słowa. Wg tylko spacji. | | <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 | | [[ | [count] sections backward or to the previous '{' in the first column | | [] | [count] sections backward or to the previous '}' in the first column | ---- ==== Marks ===== | m{a-zA-Z} | Set mark {a-zA-Z} at cursor position (does not move the cursor, this is not a motion command). | | m' or\\ m` | Set the previous context mark. This can be jumped to with the "''" or "``" command (does not move the cursor, this is not a motion command). | | :[range]ma[rk] {a-zA-Z} | Set mark {a-zA-Z} at last line number in [range], column 0. Default is cursor line. | | :[range]k{a-zA-Z} | Same as :mark, but the space before the mark name can be omitted. | | '{a-z} | To the first non-blank character on the line with mark {a-z} (linewise). | | '{A-Z0-9} | To the first non-blank character on the line with mark {A-Z0-9} in the correct file | | `{a-z} | To the mark {a-z} | | `{A-Z0-9} | To the mark {A-Z0-9} in the correct file | | :marks | List all the current marks (not a motion command). | | :marks {arg} | List the marks that are mentioned in {arg} (not a motion command). For example: | ---- ==== Searching ===== | /{pattern}[/] | Search forward for the [count]'th occurrence of {pattern} | | /{pattern}/{offset} | Search forward for the [count]'th occurrence of {pattern} and go {offset} lines up or down. | | /<CR> | Search forward for the [count]'th latest used pattern | | //{offset}<CR> | Search forward for the [count]'th latest used pattern with new. If {offset} is empty no offset is used. | | ?{pattern}[?]<CR> | Search backward for the [count]'th previous occurrence of {pattern} | | ?{pattern}?{offset}<CR> | Search backward for the [count]'th previous occurrence of {pattern} and go {offset} lines up or down | | ?<CR> | Search backward for the [count]'th latest used pattern | | ??{offset}<CR> | Search backward for the [count]'th latest used pattern with new {offset}. If {offset} is empty no offset is used. | | n | Repeat the latest "/" or "?" [count] times. | | N | Repeat the latest "/" or "?" [count] times in opposite direction. | ---- ==== Selecting Text (Visual Mode) ===== To select text, enter visual mode with one of the commands below, and use [[#motion|motion commands]] to highlight the text you are interested in. Then, use some command on the text. 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! | ---- [[http://www.catb.org/hacker-emblem/| {{Vim%20Commands%20Cheat%20Sheet_files/glider.png}} ]] Daniel Gryniewicz / [[mailto:dang@fprintf.net|dang@fprintf.net]] ===== Różne czyt-szyty ===== {{:linux:vi-vim-cheat-sheet.gif?direct&300|Najprostszy czyt-szyt}} * {{:linux:digital-preview-letter.png?linkonly|inny 01}} * {{:linux:vim.jpg?linkonly|inny 02}} * {{:linux:vim_cheat_sheet_for_programmers_print.png?linkonly|inny 03}} * {{:linux:win32assemblycheatsheet.png?linkonly|inny 04}} ===== vimrc ===== {{:linux:vimrc.text|mój vimrc}} - nic ciekawego, skopiowałem go z [[http://vim.wikia.com/wiki/Example_vimrc|wiki vima]]. Mam zamiar poprawiać upload, gdy coś zmienię w tym pliku. Na razie mi się podoba. ===== Pluginy do Vima ===== ==== vim-templates ==== Bardzo fajoski. Szymele dokumentów znajdują się w katalogu ~/.vim/templates/ i mogą się nazywać jak bądź (więc nie tylko formatem, ale i innymi cechami mogą się różnić). Wywołanie: '':setf html'' czyli **:setf**SPACJA//nazwa szymelku// [[http://www.vim.org/scripts/script.php?script_id=1172|Źródełko]] ==== VIM-LATEXSUITE ==== * [[http://michaelgoerz.net/refcards/vimlatexqrc.pdf|cheat sheet]] - szybkie komendy * [[http://vim-latex.sourceforge.net/documentation/|PEŁNA DOKUMENTACJA]] LatexSuite potrafi ukryć (to fold) całe partie pliku ''.tex''. Odsłania się je tak: * wejść w tryb NORMALNY (np. Esc) * najechać kursorem na znacznik zafoldowanej linii * napisać '':za'' ==== INNE ==== * [[http://karolsamborski.blogspot.com/2011/11/vim-ciekawsze-pluginy.html|ciekawe pluginy od Krzysztofa Samborskiego (nie jego autorstwa, tylko opis]] ===== Makra w Vimie ===== [[http://karolsamborski.blogspot.com/2011/11/makra-w-vimie.html| z tej strony]] ==== Tworzenie makr ==== Nagrywanie makra rozpoczynamy wciskając ''q'' oraz literę (''a-z''). Oznacza ona nazwę rejestru, do którego będą zapisywane wciskane klawisze. Ta informacja przyda nam się później do przypisywania skrótu klawiszowego. Gdy już rozpoczniemy nagrywanie to wykonujemy kolejno czynności, które chcielibyśmy powtarzać, a później kończymy nagrywanie wciskając klawisz ''q''. W tym momencie możemy wykonać makro wciskając ''@'' oraz literę, którą wybraliśmy przy nagrywaniu makra. Podam teraz przykład bardzo prostego makra. Będzie ono wstawiać zaznaczony tekst w cudzysłowy, czyli jak zaznaczymy tekst "Ala ma kota." i wykonamy makro to w efekcie dostaniemy "Ala ma kota.". Cały trik polega na tym, że wycinamy zaznaczony tekst, wstawiamy cudzysłów, wklejamy tekst i wstawiamy cudzysłów. Wykonujemy więc kolejno: - zaznaczamy kawałek tekstu - rozpoczynamy nagrywanie makra "''a''": ''qa'' - wycinamy tekst: ''c'' - wstawiamy cudzysłów: ''"'' - wychodzimy z trybu wstawiania: ''escape'' - wklejamy wycięty tekst: ''p'' - przechodzimy do trybu wstawiania: ''a'' - wstawiamy cudzysłów: ''"'' - wychodzimy z trybu wstawiania:''escape'' - kończymy nagrywanie makra: ''q'' Teraz możemy przetestować działanie naszego makra poprzez zaznaczenie dowolnego tekstu i wciśnięcie ''@a''. ==== Przypisanie skrótu klawiszowego ==== Skróty tworzy się poleceniem ''map''. Jego składnia z grubsza wygląda tak:\\ '':map '' \\ Aby więc zmapować jakieś makro potrzebujemy nagranej sekwencji. Jak już wspominałem wcześniej makra zostają zapisane do wybranego rejestru, tzn. jeżeli na początku wcisnęliśmy qa to nasza sekwencja znajduje się w rejestrze ''a''. Możemy więc w bardzo prosty sposób ją wyciągnąć. Mianowicie jak już wpiszemy np. '':map '' to wciskamy '''' po czym naciskamy literę odpowiedniego rejestru czyli w naszym przypadku jest to ''a''. Sekwencja w ten sposób zostanie wklejona po czym pozostaje nam tylko zatwierdzić wciskając ''enter''. ==== Zapisanie skrótu na stałe ==== Każde wykonane polecenie map jest pamiętane jedynie dopóki nie zamkniemy Vima. Aby temu zapobiec musimy dopisać wywołanie tego polecenia w pliku .vimrc. W tym celu otwieramy ów plik i dopisujemy: \\ ''map '' \\ Jeżeli chcemy wkleić zawartość rejestru a do treści pliku to wystarczy poprzedzić komendę p kombinacją ''"'' czyli w naszym wypadku wciskamy ''"ap''. \\ Nasza linijka powinna wyglądać mniej więcej tak: \\ ''map c" ^]pa"^]'' === Na koniec kilka uwag: === * Skrót '''' oznacza przytrzymanie przycisku Ctrl oraz wciśnięcie klawisza t, * Aby podejrzeć zawartość rejestrów bez wklejania można wywołać polecenie '':registers'', * Skrót '''' służący do wklejania zawartości rejestrów (i nie tylko ale o tym może innym razem) można wywołać także w trybie wprowadzania, * Do powtarzania tylko ostatniej czynność możemy użyć klawisza ''. (kropka)'' zamiast nagrywania makra, np. gdy chcemy po prostu wstawić jakiś tekst parę razy to wstawiamy go raz a potem ''. (kropka)'' będzie robić to za nas.