Vim
Moving Around
word
w: forward to beginning of a wordb: backward to beginning of a worde: to the end of a word3wforward 3 words.
line
$: to end of line0: to beginning of line^: to first non-blank character of the line
sentence and paragraph
): forward one sentence(: backward one sentence}: forward one paragraph{: backward one paragraph
screen
H: top of screenM: middle of screenL: bottom of screen
Ctags
set tags=./tags;/C-]- go to definitionC-T- Jump back from the definition.C-W C-]- Open the definition in a horizontal splitg C-]- opens a quick dialog to select one between multiple definitions
Add these lines in vimrc
map <C-\> :tab split<CR>:exec("tag ".expand("<cword>"))<CR>
map <A-]> :vsp <CR>:exec("tag ".expand("<cword>"))<CR>- `C-‘ - Open the definition in a new tab
A-]- Open the definition in a vertical split
After the tags are generated. You can use the following keys to tag into and tag out of functions:
Ctrl-Left_MouseClick- Go to definitionCtrl-Right_MouseClick- Jump back from definition
vimgrep
:vim[grep][!] /{pattern}/[g][j] {file}greturn all matchesjspecifies vim will not jump to first match autometically
recursive search
use ** in file pattern to search recursively
:vimgrep /findme/j ../**/*.jssearch using word under cursor
use <cword> for word under cursor, and % for current file
view results
cw[indow],copento open result windowcn[ext],cp[revious]to jump between resultscnf[ile],cpf[ile]jump between filescr[ewind],cla[st]to go beginning or end of quickfix listcol[der],cnew[er]to iterate through historical quickfix list
back to original file
C-^ will do
disable noautocmd to increase search speed
:noautocmd vimgrep /{pattern}/[flags] {file(s)}:e to reload file in order to enable syntax highlighting (disabled by :noautocmd)
map as shortcuts
nnoremap <leader>nav :vimgrep /function /gj % <esc>:cw<CR>
nnoremap <leader>* :execute 'vimgrep /'.expand('<cword>').'/gj '.expand('%') <esc>:cw<CR>auto format
js-beautify
an easy way to re-format js files. download js-beaufify, i use php version.
put few lines to support read from stdin :
$opts = new BeautifierOptions();
$opts->indent_size = 2;
$jsb = new JSBeautifier();
echo $jsb->beautify(file_get_contents('php://stdin'), $opts);add #!/usr/local/bin/php on first line and chmod +x jsbeautifier.php makes it executable.
test it by
> cat sample.js | ./jsbeautifier.phpwhen editing js files, to replace current buffer with re-formatted text:
:%!/path/to/jsbeautifier.phpyou can do the same with other formatter: tidy, astyle, phpCB, autopep8
Chiel92/vim-autoformat is a vim bundle to do it but I failed installing it.