• Like
Vim Hacks (OSSF)
Upcoming SlideShare
Loading in...5
×

Vim Hacks (OSSF)

  • 3,421 views
Uploaded on

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
  • good
    Are you sure you want to
    Your message goes here
  • so useful !
    Are you sure you want to
    Your message goes here
No Downloads

Views

Total Views
3,421
On Slideshare
0
From Embeds
0
Number of Embeds
3

Actions

Shares
Downloads
144
Comments
2
Likes
9

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. OSSF Vim Hacks (Cornelius) cornelius.howl@gmail.com http://c9s.blogspot.com/ c9s@(plurk|twitter).com
  • 2. Demo
  • 3. To get Vim installed • on Debian/Ubuntu: $ sudo apt-get install vim vim-gnome • on MacOS: $ sudo port install vim vim-app
  • 4. To compile your Vim • some ./configure options: • --with-features=tiny,normal,big,huge • --enable-perlinterp • --enable-rubyinterp • --enable-pythoninterp • --enable-multibyte • --enable-gui , --enable-cscope etc ...
  • 5. To compile your Vim $ ./configure --prefix=/opt/local --enable-rubyinterp --enable-perlinterp --with-features=huge --enable-multibyte --enable-cscope --enable-mzschemeinterp $ make $ make install
  • 6. Basic Editing Normal Mode ESC Command Mode (start with ‘:’) Insert Mode (i,o,a) Visual Mode (v,V,c-v)
  • 7. Basic Editing 1. $ vim file 2. type h,j,k,l to move around. 3. type i to insert some text 4. <ESC> to go back normal mode 5. :w to save file. 6. repeat 3-5 step 7. :wq
  • 8. Edit your .vimrc file $ vim ~/.vimrc “iset nu<ESC>” “:wq” $ vim ~/.vimrc
  • 9. Basic Options set nocompatible syntax on filetype on filetype plugin on filetype indent on set nu set wrap set shiftwidth=4 set tabstop=4
  • 10. Basic GUI Options (.gvimrc) set langmenu=en_US.utf-8 language mes en_US.UTF-8 if has('gui_mac') && has(‘gui_running’) set gfn=Monaco:h12 else "set gfn=Dejavu Sans Mono 9 "set gfn=Andale Mono:h14 set gfn=Bitstream Vera Sans Mono 10 endif set guioptions+=c “use console dialog instead set guioptions-=e “no gui tab set guioptions-=T “no Toolbar set guioptions-=m “no menu set guioptions-=r “no right-hand scrollbar " downlaod a colorscheme you like to ~/.vim/colors/ " colors billw
  • 11. Insert Mode • iI • aA • oO
  • 12. Visual Mode •v •V • Ctrl-v
  • 13. Basic Motion C-d (half-page down) C-u (half-page up) C-f (full-page down) C-b (full-page up) gg (goto the first line) G (goto the last line) 30gg :10 10%
  • 14. Basic Motion b,w,e B,W,E f[x] F[x] ; , ( ) sentence { } paragraph [ ] section
  • 15. Buffer
  • 16. $ vim file1 file2 file3
  • 17. :bufdo tab split
  • 18. :bufdo %s!pattern!string!g
  • 19. :bufdo mkview
  • 20. :[n]buffer :bn :bp :sb :buffers :buffers!
  • 21. Window
  • 22. Ctrl-W v Ctrl-W _ Ctrl-W s Ctrl-W | Ctrl-W h Ctrl-W q Ctrl-W j Ctrl-W k :wincmd w Ctrl-W l :wincmd v Ctrl-W x :wincmd s Ctrl-W w
  • 23. For MacOS nmap <silent> <D--> :resize -5<CR> nmap <silent> <D-=> :resize +5<CR> nmap <silent> <D-]> :vertical resize +5<CR> nmap <silent> <D-[> :vertical resize -5<CR> For Unix-like set winaltkeys=yes nmap <silent> <M--> :resize -5<CR> nmap <silent> <M-=> :resize +5<CR> nmap <silent> <M-]> :vertical resize +5<CR> nmap <silent> <M-[> :vertical resize -5<CR>
  • 24. Tabpage
  • 25. :[n]tabdo :tabnew :tabn :tabclose :tabp :tabfirst :sb :tabfind :tabs :tablast :tabs!
  • 26. nmap tn :tabnew<CR> nmap tl gt nmap th gT nmap te :tabedit “ split current buffer to tabpage nnoremap <silent> ty :tab split<CR> nnoremap <silent> td :exec 'tabedit '.expand('%')<CR> “ close tab ( equal to <C-w>q ) nnoremap <silent> tq :tabclose<CR> “ open new tab nnoremap <silent> tn :tabnew<CR>
  • 27. “ open help in new page nnoremap <silent> th :tab help<CR> “ move tab nnoremap <silent> tmh :exec ':tabmove ' . ( tabpagenr()-2 )<CR> nnoremap <silent> tml :exec ':tabmove ' . tabpagenr()<CR>
  • 28. Syntax syntax.txt
  • 29. Macro *macro*
  • 30. Mapping map.txt
  • 31. Autocommand autocmd.txt
  • 32. Cases
  • 33. Case 1: Copy & Paste • copy text between terminal vim and gui • Solution: fakeclip plugin
  • 34. Case 2: Browsing File • Solution: nerd tree plugin • e to open nerd tree window
  • 35. Case 3: Switching Buffer • Solution: bufexplorer.zip • be to open buffer explorer
  • 36. Case 4: reformating code • Problem: Coding Style Problem • Solution: ‘equalprg’ option • setlocal equalprg=/path/to/your/format_prg
  • 37. Case 5: code snippets • Problem: • Solution: snipmate.vim
  • 38. Case 6: completion • Problem: C-x C-n completion • Solution: autocomplpop.vim
  • 39. VimL
  • 40. • variable • function • condition • looping • vim built-in functions • command
  • 41. • vim runtime path • $VIM/ • $VIMRUNTIME/
  • 42. See Also • Vim.org • Vim Tips wiki • :tab help
  • 43. Utilities • Vimana • VIM::Packager
  • 44. Selected Help Section • ‘C-editing’ • ‘completion’ • ‘tips.txt’ • ‘autocmd’ • ‘eval.txt’
  • 45. vim script authors on github.com • http://github.com/c9s • http://github.com/kana • http://github.com/mattn • http://github.com/tpope • etc...