====== Vim ====== Vim ist ein Consolen Editor. ===== Befehle ===== Folgende Befehle können an vim übergeben werden. ====== Vim Essential Commands ====== Source: http://www.catswhocode.com/blog/130-essential-vim-commands ===== Basics ===== | '':e filename'' | Open //filename// for edition | | '':w'' | Save file | | '':q'' | Exit Vim | | '':q!'' | Quit without saving | | '':x'' | Write file (if changes has been made) and exit | | '':sav filename'' | Saves file as //filename// | | ''.'' | Repeats the last change made in normal mode | | ''5.'' | Repeats 5 times the last change made in normal mode | ===== Rückgängig / Wiederherstellen ===== Änderungen rückgängig machen oder wiederherstellen ^ Befehl ^ Beschreibung ^ | ''u'' | Macht den jeweils letzten Befehl rückgängig (mehrstufig möglich). | | ''^R'' \\ '':redo (Kommandozeilenmodus)'' | Wiederholt den zuletzt rückgängig gemachten Befehl, ''^'' steht hier genauso wie in der VIM-Dokumentation für Strg . | | ''U'' | Stellt die aktuelle Zeile wieder her. | ===== Moving in the file ===== | ''k or Up Arrow'' | move the cursor up one line | | ''j or Down Arrow'' | move the cursor down one line | | ''e'' | move the cursor to the end of the word | | ''b'' | move the cursor to the begining of the word | | ''0'' | move the cursor to the begining of the line | | ''$'' | move the cursor to the end of the line | | ''G'' | move the cursor to the end of the file | | ''gg'' | move the cursor to the begining of the file | | ''L'' | move the cursor to the bottom of the screen | | '':59'' | move cursor to line //59//. Replace //59// by the desired line number. | | ''20|'' | move cursor to column //20//. | | ''%'' | Move cursor to matching parenthesis | | ''[['' | Jump to function start | | ''[{'' | Jump to block start | | ''Cut,'' | copy & paste | | ''y'' | Copy the selected text to clipboard | | ''p'' | Paste clipboard contents | | ''dd'' | Cut current line | | ''yy'' | Copy current line | | ''y$'' | Copy to end of line | | ''D'' | Cut to end of line | ===== Search ===== | ''/word'' | Search //word// from top to bottom | | ''?word'' | Search //word// from bottom to top | | ''| *'' | Search the word under cursor | | ''/\cstring'' | Search //STRING// or //string//, case insensitive | | ''| /jo[ha]n'' | Search //john// or //joan// | | ''| /\< the'' | Search //the//, //theatre// or //then// | | ''/the\>'' | Search //the// or //breathe// | | ''/\< the\>'' | Search //the// | | ''/\< ¦.\>'' | Search all words of 4 letters | | ''/\/'' | Search //fred// but not //alfred// or //frederick// | | ''| /fred\|joe'' | Search //fred// or //joe// | | ''/\<\d\d\d\d\>'' | Search exactly 4 digits | | ''/^\n\{3}'' | Find 3 empty lines | | '':bufdo /searchstr/'' | Search in all open files | | ''bufdo %s/something/somethingelse/g'' | Search //something// in all the open buffers and replace it with //somethingelse// | ===== Replace ===== | '':%s/old/new/g'' | Replace all occurences of //old// by //new// in file | | '':%s/onward/forward/gi'' | Replace onward by forward, case unsensitive | | '':%s/old/new/gc'' | Replace all occurences with confirmation | | '':2,35s/old/new/g'' | Replace all occurences between lines 2 and 35 | | '':5,$s/old/new/g'' | Replace all occurences from line 5 to EOF | | '':%s/^/hello/g'' | Replace the begining of each line by //hello// | | '':%s/$/Harry/g'' | Replace the end of each line by //Harry// | | '':%s/onward/forward/gi'' | Replace //onward// by //forward//, case unsensitive | | '':%s/ *$//g'' | Delete all white spaces | | '':g/string/d'' | Delete all lines containing //string// | | '':v/string/d'' | Delete all lines containing which didn’t contain //string// | | '':s/Bill/Steve/'' | Replace the first occurence of Bill by Steve in current line | | '':s/Bill/Steve/g'' | Replace //Bill// by //Steve// in current line | | '':%s/Bill/Steve/g'' | Replace //Bill// by //Steve// in all the file | | '':%s/^M//g'' | Delete DOS carriage returns (^M) | | '':%s/\r/\r/g'' | Transform DOS carriage returns in returns | | '':%s#<[^>]\+>##g'' | Delete HTML tags but keeps text | | '':%s/^\(.*\)\n\1$/\1/'' | Delete lines which appears twice | | ''Ctrl+a'' | Increment number under the cursor | | ''Ctrl+x'' | Decrement number under cursor | | ''ggVGg?'' | Change text to Rot13 | ===== Case ===== | ''Vu'' | Lowercase line | | ''VU'' | Uppercase line | | ''g~~'' | Invert case | | ''vEU'' | Switch word to uppercase | | ''vE~'' | Modify word case | | ''ggguG'' | Set all text to lowercase | | ''gggUG'' | Set all text to uppercase | | '':set ignorecase'' | Ignore case in searches | | '':set smartcase'' | Ignore case in searches excepted if an uppercase letter is used | | '':%s/\<./\u&/g'' | Sets first letter of each word to uppercase | | '':%s/\<./\l&/g'' | Sets first letter of each word to lowercase | | '':%s/.*/\u&'' | Sets first letter of each line to uppercase | | '':%s/.*/\l&'' | Sets first letter of each line to lowercase | ===== Read/Write files ===== | '':1,10 w outfile'' | Saves lines 1 to 10 in //outfile// | | '':1,10 w >> outfile'' | Appends lines 1 to 10 to //outfile// | | '':r infile'' | Insert the content of //infile// | | '':23r infile'' | Insert the content of //infile// under line 23 | ===== File explorer ===== | '':e .'' | Open integrated file explorer | | '':Sex'' | Split window and open integrated file explorer | | '':Sex!'' | Same as :Sex but split window vertically | | '':browse e'' | Graphical file explorer | | '':ls'' | List buffers | | '':cd ..'' | Move to parent directory | | '':args'' | List files | | '':args *.php'' | Open file list | | '':grep expression *.php'' | Returns a list of .php files contening expression | | ''gf'' | Open file name under cursor | ===== Interact with Unix ===== | '':!pwd'' | Execute the //pwd// unix command, then returns to Vi | | ''!!pwd'' | Execute the //pwd// unix command and insert output in file | | '':sh'' | Temporary returns to Unix | | ''$exit'' | Retourns to Vi | ===== Alignment ===== | '':%!fmt'' | Align all lines | | ''!}fmt'' | Align all lines at the current position | | ''5!!fmt'' | Align the next 5 lines | ===== Tabs/Windows ===== | '':tabnew'' | Creates a new tab | | ''gt'' | Show next tab | | '':tabfirst'' | Show first tab | | '':tablast'' | Show last tab | | '':tabm n(position)'' | Rearrange tabs | | '':tabdo %s/foo/bar/g'' | Execute a command in all tabs | | '':tab ball'' | Puts all open files in tabs | | '':new abc.txt'' | Edit //abc.txt// in new window | ===== Window spliting ===== | '':e filename'' | Edit filename in current window | | '':split filename'' | Split the window and open filename | | ''ctrl-w up arrow'' | Puts cursor in top window | | ''ctrl-w ctrl-w'' | Puts cursor in next window | | ''ctrl-w_'' | Maximize current window vertically | | ''ctrl-w|'' | Maximize current window horizontally | | ''ctrl-w='' | Gives the same size to all windows | | ''10 ctrl-w+'' | Add 10 lines to current window | | '':vsplit file'' | Split window vertically | | '':sview file'' | Same as **:split** in readonly mode | | '':hide'' | Close current window | | '':­nly'' | Close all windows, excepted current | | '':b 2'' | Open #2 in this window | ===== Auto-completion ===== | ''Ctrl+n Ctrl+p (in insert mode)'' | Complete word | | ''Ctrl+x Ctrl+l'' | Complete line | | '':set dictionary=dict'' | Define //dict// as a dictionnary | | ''Ctrl+x Ctrl+k'' | Complete with dictionnary | ===== Marks ===== | ''m {a-z}'' | Marks current position as //{a-z}// | | ''\' {a-z}'' | Move to position //{a-z}// | | ''\'\''' | Move to previous position | ===== Abbreviations ===== | '':ab mail mail@provider.org'' | Define mail as abbreviation of //mail@provider.org// | ===== Text indent ===== | '':set autoindent'' | Turn on auto-indent | | '':set smartindent'' | Turn on intelligent auto-indent | | '':set shiftwidth=4'' | Defines 4 spaces as indent size | | ''ctrl-t, ctrl-d'' | Indent/un-indent in insert mode | | ''>>'' | Indent | | ''<<'' | Un-indent | | ''=%'' | Indent the code between parenthesis | | ''1GVG='' | Indent the whole file | ===== Syntax highlighting ===== | '':syntax on'' | Turn on syntax highlighting | | '':syntax off'' | Turn off syntax highlighting | | '':set syn=perl'' | Force syntax highlighting Perl | | '':set syn=sh'' | Force syntax highlighting Bash | Man kann auch in einer bestimmten Datei ein **VIM-Commando** am Anfang oder Ende der Datei als Kommentar angeben. Hier als Beispiel für das highlighting der SH-Syntax: # vi:syntax=sh Weiterhin kann man VIM auch anweisen alle Dateien mit einer bestimmten **Dateiendung** mit einem bestimmten Syntax-Highlighting zu öffnen. Dazu fügt man in die Datei ''.vimrc'' autocommands ein (Quelle: http://vim.wikia.com/wiki/Forcing_Syntax_Coloring_for_files_with_odd_extensions): Folgendes einfügen wenn man eine bestehende Erkennung eines Dateityps nicht überschreiben möchte, aber ein weiterer bestimmter Dateityp noch nicht erkannt wird: associate *.foo with php filetype au BufRead,BufNewFile *.foo setfiletype php Folgendes einfügen um bestehende Erkennungen von Dateitypen zu überschreiben: au BufRead,BufNewFile *.module set filetype=php Noch ein Beispiel: Vim 7.3 erkennt example.pc als Dateityp ''proc'' hat aber kein Syntax Highlighting für "Pro C". Hiermit kann man diese verhalten zum highlighten überschreiben. au BufRead,BufNewFile *.pc set filetype=c ===== File Encoding ===== | ''set fileencoding='' | Mögliche Zeichenkodierungen sind z.B. \\ ''Unicode'', ''text'', ''UTF-16'' ''UTF-8'', ''little-endian'' |