- Table of Content
- vim navi
- vim scripting with python
- colors highlighting
- get processing syntax for vim
- history
- marks
- show logs and recent messages in vim
- get processing syntax for vim
- search and replace umlaute with a shortcut
- shortcut to change working path fast
- easygrep
- escaped characters
- search "reactor" in several files
- write new line into file
- vim scripting
- (home) registers copy and paste
- nerdtree
- vimium
- set encoding in vim
- number sequence
- exit ex mode
- rename in several files at once
- open several files in buffers
- command line from vim
- fast search
- fast replace
- circle up history
- leave insert mode for 1 command
- replace visual selection
- vim formatierung
- nerdtree
- surround plugin
- vimcast
- vim from scratch without config in a terminal
- edit .gvimrc
- switch syntax to html
- macros in text files
- rename
- mehrere zeilen einruecken
- while in insert mode
- normal mode
How to find stuff
Please use Browser Search or Scroll down.
vim navi
-------------------------------------- fast up/down [ jump page top H jump page middle M juml page bottom L page up/down crtl + f/b next paragraph { copy word yiw select word viw paste over viwp
when in insert mode
copy line yy enter crtl + j/h delete word crtl + w copy line yy --------------------------------------
vim scripting with python
create ~/.vim/autoload/test.vim
python3 << en import vim def testMessage(): print("Hello World") en nmap <silent> ,m :python3 testMessage()<CR>
in .vimrc add
source ~/.vim/autoload/test.vim
call with
:py3 testMessage() ,m
src
https://dzone.com/articles/how-write-vim-plugins-python http://codeseekah.com/2012/03/04/vim-scripting-with-python-lookup-ip-country/
colors highlighting
create .vim/ftdetect/foo.vim and add this
autocmd BufRead,BufNewFile *.txt set filetype=txt
in ~/.gvimrc_ add txt filetype
au BufNewFile,BufRead /data/files/* set filetype=txt _orange_ __red__ +green+ ++purple++
in ~/.gvimrc add foo filetype:
au BufNewFile,BufRead /data/files/* set filetype=help.addcolors create .vim/syntax/addcolors.vim and add this: " available colors "================ "red cd6a43 "orange fdb86b "green 7a9c6c "grau 888888 "blue 2d5393 "purple c6b7ec syn match cTransA "_.*_" contains=delimA syn match cTransB "+.*+" contains=delimB syn match cTransC "__.*__" contains=delimC syn match cTransD "++.*++" contains=delimD syn match delimA contained '_' conceal syn match delimB contained '+' conceal syn match delimC contained '__' conceal syn match delimD contained '++' conceal hi cTransA ctermfg=cyan guifg=#fdb86b hi cTransB ctermfg=red guifg=#7a9c6c hi cTransC ctermfg=red guifg=#cd6a43 hi cTransD ctermfg=red guifg=#c6b7ec hi cTransA ctermfg=215 guifg=#fdb86b hi cTransB ctermfg=107 guifg=#7a9c6c hi cTransC ctermfg=131 guifg=#cd6a43 hi cTransD ctermfg=104 guifg=#c6b7ec (create _.vim/ftdetect/foo.vim_ and add this:) autocmd BufRead,BufNewFile *.foo set filetype=foo
src
http://ftp.vim.org/pub/ftp/editors/vim/runtime/syntax/help.vim regex meanings https://regex101.com/
get processing syntax for vim
download this
http://www.vim.org/scripts/script.php?script_id=2115 copy syntax/processing.vim to .vim/syntax folder
add this to .gvimrc
"set filetype html for *.pde processing au BufNewFile,BufRead *.pde set filetype=processing
history
:earlier 15m :later 10min
marks
(works like recording) ma set mark on current line (ma,ms,md,mf) 'a jump to mark a ('a, 's, 'd, 'f) 'a v 's d to delete/copy selection usw
show logs and recent messages in vim
:messages
get processing syntax for vim
download this
copy syntax/processing.vim to .vim/syntax folder http://www.vim.org/scripts/script.php?script_id=2115
add this to .gvimrc
"set filetype html for *.pde processing au BufNewFile,BufRead *.pde set filetype=processing
search and replace umlaute with a shortcut
copy this in .gvimrc
map <F4> :s/ae/ä/g\|'<,'>s/oe/ö/g\|'<,'>s/ue/ü/g<CR><CR>
usage
v to select text, then press f4 example: But you'll have to escape it in the map command :map <F3> :%s!<!\<!g\|:%s!>!\>!g<CR>
shortcut to change working path fast
put this in .gvimrc
" CDC = Change to Directory of Current file "command CDC cd %:p:h command CDC cd /Volumes/FOLDER/
usage
:CDC to change to path
easygrep
:Grep <Pattern> :GrepOptions http://www.vim.org/scripts/script.php?script_id=2438
escaped characters
. * {} - = ? <> () $ ' " \ | ; [] # ~ %
search "reactor" in several files
:cd projectpath :noautocmd (to speed things up) :vimgrep /titletext/j ** :vimgrep /titlebar/j **/*.css :vimgrep /reactor/j ../**/*.php :cw :cn 'or' :cp (jump to files) j, k select file -> ctrl + w, f 'or' gf 'or' gF to open file
write new line into file
!echo "asdf dfdf" >> test.txt
vim scripting
:help vim-script-intro
yank these lines
:let i = 1 :while i < 5 : echo "count is" i : let i += 1 :endwhile
then :@" to execute
(home) registers copy and paste
xp switch characters ddp switch lines # to search for the word under cursor! crtl r + a to paste from register in insert mode, works in command line mode too yiw copy current word into default reg viw to select current word p crtl r + a + reg to paste in insert mode from reg (a, s, d)
nerdtree
f2 open nerdtree b open bookmarks shift d delete the current bookmark p jump to parent dir s open in vertical split i open in horizontal split m display DELETE dialog t open file in new tab, stay in nt ? Help :Bookmark newmark create new bookmark :ClearBookmarks NAMES delete bookmark
vimium
/: find mode (just type away..) x close tab yy copy URL gs view page source j or k up/down f open links shift + f open links in new tab shift + j/k cycle through the tabs b open bookmarks (type here!) ? show shortcuts
set encoding in vim
set encoding=utf-8 set fileencoding=utf-8
number sequence
:r! for i in $(seq 1 10); do echo "This is line \#${i}"; done :r! for i in $(seq 1 10); do echo "'row-${i}\"',"; done
exit ex mode
:visual
rename in several files at once
:args **/*.txt (projectfolder/subfolder) :set hidden (navigate away without save) :argdo %s/OLDWORD/NEWWORD/ge | update (ge to supress error msg, update to save) :ls :b 4 (to jump to buffer 4) :b tab (really cool with wild menu)
put this in ~.gvimrc to tab through buffers
set wildchar=<Tab> wildmenu wildmode=full set wildcharm=<C-Z> nnoremap <F10> :b <C-Z> <f10> :b tab
open several files in buffers
:shell cd WHERETHEFILESARE vim *.php :ls (to view buffers)
command line from vim
cd something, start vim $ grep -n Menu * (access external) or :grep Menu * (build in vim) !ls (! is firing off a one off command, $ not) :shell to enter a shell
fast search
* (while cursor under word)
fast replace
move cursor under word * <cw>NEWWORD n.
circle up history
<crtl + p> <crtl + n>
leave insert mode for 1 command
crtl + o
replace visual selection
:'<,'>s/old/new/g replace visual selection
vim formatierung
|UPPERCASE| 'font': [roman] > code code2 <
nerdtree
f2 open nerdtree b open bookmarks :bookmark newmark create new bookmark d delete the current bookmark p jump to parent dir s open in vertical split i open in horizontal split m display DELETE dialog t open file in new tab, stay in nt ? Help
surround plugin
s<li>
vimcast
http://vimcasts.org http://vimeo.com/vimlondon/videos
autokorrektur von typos
:iabbr the the :iabbr -> →
Folding
put this in .gvimrc: nnoremap <Space> za create a fold with zf then toggle folds with SPACE
Tabs
install tabular.vim one = 1 two = 2 three = 3 four = 4 ,a= title: "Aligning assignments" h264Src: "/media/alignment.mov", oggSrc: "/media/alignment.ogv" posterSrc: "/media/alignment.png" duration: 320, ,a:
move lines up/down
v (to select) cmd + shift + up/down
split windows
crtl + w, v split window vertically crtl + w, s split window horizontally :vsp filename split vertically filename :sp filename split horizontally filename crtl + w, w cycle next window crtl + w, h focus left window crtl + w, l focus right window crtl + w, j focus down window crtl + w, k focus upper window crtl + w, = equalize windows crtl + w, x switch windows crtl + w, r rotate window
tcomment
installation
copy vba file into plugin folder :so %
usage
comment gc uncomment gc
more src
http://vim.wikia.com/wiki/VimTip271
draw a box
open lines with tabs \ l (to show tabstops and line ends) crtl + V (vertical selection), move down crtl + I (insert), create some tabstops crtl + V, press $ r # move to 2nd line, 2nd letter crtl + V, draw selection r <space> R (to write)
indenting
command + [
.gvimrc:
nmap <D-[> << nmap <D-]> >> vmap <D-[> <gv vmap <D-]> >gv
autoindenting html files
ggVG (select all) command + [ to remove indents ggVG =G (to autoindent)
show hidden characters
insert this into .gvimrc
" mapping hidden characters to short cut "\ l" " Shortcut to rapidly toggle `set list` nmap <leader>l :set list!<CR> " Use the same symbols as TextMate for tabstops and EOLs set listchars=tab:▸\ ,eol:¬ "Invisible character colors highlight NonText guifg=#4a4a59 highlight SpecialKey guifg=#4a4a59
vim from scratch without config in a terminal
vim -u NONE (to get a default installation) :set path=** :syntax on
edit .gvimrc
e ~/.gvimrc
switch syntax to html
in .gvimrc
open MacVim :cd :e .gvimrc au BufRead,BufNewFile *.ss set filetype=html
oder live:
:setf c :setf html :setf php ... :set syntax=html
macros in text files
in macvim
:e ~/.vim/snippets/_.snippets
oder terminal go to .vim/snippets vim _.snippets (globale snippets :))) ${1:VORGABE1} // vorgabe1 wird definiert per tab zum naechsten springen! $(2:$1) // vorgabe1 wird eingefuegt tab $(3:VORGABE2} // vorgabe2 wird definiert usw ${4:$3} // vorgabe2 wird eingefuegt
rename
: %s/75/272/g (find all 75 und rename to 272)
mehrere zeilen einruecken
ctrl + v zeilen markieren (nur erstes zeichen) shift + i tab esc 'margin' ---------------------------------------------------- :set wm=10 'tags' =helplinks ---------------------------------------------------- crtl t back crtl ] forward (if cursor is on link) 'sessions' ---------------------------------------------------- :mksession <file> save session :source <file> restore vim -S <file> restore 'dictionary' ---------------------------------------------------- :set spell turn on spellcheck z= move cursor over word and hit z = 'marks' ---------------------------------------------------- mq sets mark on letter q `q jumps to the mark on q :marks shows all current marks d`q delete from mark to cursor `` moves between the last 2 locations `. jumps to line with last modification 'taschenrechner' ---------------------------------------------------- crtl+r = 1+3 strftime('%c') 'registers' ----------------------------------------------------
while in insert mode
crtl+r / /searchterm
normal mode
q/ search history, then press enter to get it into register "1y yank selection into reg 1 (in visual mode) "2p paste content of reg 2 :6d1 delete line 6 into register 1 :reg show register :reg 2 show content of register 2 "2 use register 2 for next delete, yank, put u undo crt+r redo g- more undo (when already overwritten!) :earlier 10m travel 10min back in history time :later 5m jump ahead 5 min 'makro' 'macros' --------------------------------------------------------------- <ESC> q 1 start recording in register 1 q stop <ESC> @1 execute recording in register 1 (not :@1 !!) 5@1 execute 5 times (make sure line jumps are in makro!) 'replace' --------------------------------------------------------------- :'<,'>s/old/new/g replace visual selection %s;http://www.microsoft.com/;http://www.linux.org;g 1,8s/<[^>]*>//g Remove all html tags (ie strings enclosed in <> ) in lines 1 to 8 /^[A-Z].*\. *$ will search for any line that begins with a capital letter and ends with a period and any number of blanks /[^c]an will search for any "an" preceded by any character other than a c /[a-z]as search for any lowercase letter followed by "as" /[0-9]\{3}[ -][0-9]\{4} search for any 7 digit phone number /foo.*bar Find each occurrence of 'foo' with some stuff in between foo and bar %s/foo/bar/g Find each occurrence of 'foo', and replace it with 'bar' %s/foo/bar/gci Change each 'foo' (case insensitive) to 'bar'; ask for confirmation. s/foo/bar/g changes each 'foo' to 'bar' in the current line. %s/foo/bar/g changes each 'foo' to 'bar' in all lines. 5,12s/foo/bar/g changes each 'foo' to 'bar' for all lines between line 5 and line 12. %s/\<foo\>.\{5}// On each line, delete the whole word "foo" and the following five characters. g: global c: confirmation i: case insensitive I: case sensitive :%s/Someting.*somethingelse/replacetext/g .* is wildcard of any number of letters 'folding' --------------------------------------------------------------- {Visual}zf :Operator to create a fold. zf to create fold (after selecting in in visual mode) zo and zc open/close ONE fold zm and zn open/close ALL folds zE deletes all folds. za toggle current fold, open/close zj jump forward one fold, zk jump backwards one fold 'edit' --------------------------------------------------------------- insert at beginning of line I insert at end of line A substitute line S change uppercase/lowercase v to select, then gU for uppercase, gu for lowercase syntax autocomplete crtl-x crtl-o go to line 54 54G continue editing gi exit ZZ ZQ reload file e! delete from current line to end dG exit insert mode crtl + c (!) wort ersetzen c w loeschen d w kopieren y w markieren v w ueberschreiben R ganze zeile ersetzen S loeschen d d kopieren y y rest zeile kopieren y $ ersetzen c $ loeschen d $ markieren v $ new line below/after o / O join lines J markieren v $ v 0 vertikal crtl + v erneut markieren g v paste p zeile einruecken markieren, dann shift+> buffer 2-0/a-z write " h y read " h p undo u redo crtl + r buchstaben ersetzen r loeschen x auto-complete word crtl + p line crtl + X L replace :%s/alt/neu/g innerhalb der markierung :'<,'>s/alt/neu/g regex repeat . 5x repeat 5 . makro record start q a stop q run @ a run 100x 100 @ a 'abkuerzen' (in .vimrc) ----------------------------------- :ab hh heidi hoppla :iab ä \"{a}<Esc>Bhx2e a :iab <p> <p> </p><Esc>bbhi :iab asdf <?php echo ?><Left><Left><Left> Key mapping (http://www.vim.org/htmldoc/usr_40.html) mehrere zeilen auskommentieren: markieren mit Strg-V und dann I # dann ESC drücken alles lower case: V u upper V U close vim Z Z Umlaute "a oder "A 'navigation' --------------------------------------------------------------- {} next paragraph crtl+f page down crtl+b page up i insert mode R Replace mode :177 goto line 177 { previous, next paragraph * search next under cursor H top of page M middle of page L bottom 500G line 500 * searches for the word unter cursor, hit n und N to jump to next 50% to go to middle of document ( ) move to next/previous sentence { } move from paragraph to paragraph :3 go to line 3 w & b go to next/previous word 0 go to beginning of line $ go to end of line O insert above line o insert below line I insert beginning of line A insert at the end of line to switch between tabs: ⌘⇧[ / ⌘⇧] Page down crtl + d/f up crtl + b cursor page middle M page top H page bottom L cursor line beginning ENTER end - jump next word w bigword W jump last word b bigword B jump back last edit crtl + o zu zeile 200 springen 200 g g zeilennummer crtl + g dokument-anfang g g dokument-ende G zur zeile springen NUMMER G suchen / next n previews N ignore case :set ic colorize :set hls is open links in helpfile Strg-AltGr-9 zoom nach unten z enter mitte z . nach oben z - vim2html :runtime! syntax/2html.vim :let use_xhtml = 1 :let html_use_css = 1 .vimrc ändern: let use_xhtml = 1 let html_use_css = 1 abbr 2html <Esc>:runtime! syntax/2html.vim <CR> /usr/share/vim/vim64/syntax/2html.vim zeile 197 folgernd ändern: exe "normal! a<html>\n<head>\n<title>Info\e" zeile 198 folgernd ändern: exe "normal! a</title>\n\e" zeile 200 folgernd ändern: exe "normal! a<meta name=\"Generator\" content=\"Vim" . '"' . tag_close . "\n\e" vimtutor eintippen! (http://www.strcat.de/tmp/tutor.ge) http://www.viemu.com/vi-vim-cheat-sheet.gif syntax highlighting einschalten:
vim ~/.vimrc
:r $VIMRUNTIME/vimrc_example.vim :w tabstop :set tabstop=4 autoeinrückung :set autoindent :set noautoindent zeilennummer :set number :set nonumber 'dateistuff' --------------------------------------------------------------- dateibrowser Sex oder e . o (open file in new window) - (ebene höher) zeile 20-25 extern :20,25w dateiname externes einlesen :r dateiname neues fenster :sp dateiname (vertikal :vs) wechseln Crtl + W (2mal) groesser Ctrl + W _ alle gleich Ctrl + W = C+w s - horizontal split view C+w v - vertical split view C+w {h,j,k,l} - move to window in respective direction :sp - horizontal split :vsp - vertical split 'externalcommands' --------------------------------------------------------------- :r filename embed a file in document :r! command execute system commands (ls) :r! date put date into a file V then !sort filter a region through a command :sh opens a shell 'nerdtree' --------------------------------------------------------------- F2 to open NERDtree hjkl to navigate the files. o to open the file in a new buffer or open/close directory. t to open the file in a new tab. p to go to parent directory. r to refresh the current directory. B to turn on Bookmarks I to show hidden files Bookmark NAME RevealBookmark NAME OpenBookmark NAME ClearBookmarks NAMES ClearAllBookmarks transparency macvim -> preferences -> enable experimental renderer