SlideShare a Scribd company logo
OSSF




       Vim Hacks
                 (Cornelius)

       cornelius.howl@gmail.com
        http://c9s.blogspot.com/
        c9s@(plurk|twitter).com
Demo
To get Vim installed


• on Debian/Ubuntu: $ sudo apt-get install
  vim vim-gnome
• on MacOS: $ sudo port install vim vim-app
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 ...
To compile your Vim
$ ./configure --prefix=/opt/local 
     --enable-rubyinterp 
     --enable-perlinterp 
     --with-features=huge 
     --enable-multibyte 
     --enable-cscope 
     --enable-mzschemeinterp

$ make
$ make install
Basic Editing
             Normal Mode

ESC

      Command Mode (start with ‘:’)
          Insert Mode (i,o,a)
         Visual Mode (v,V,c-v)
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
Edit your .vimrc file
$ vim ~/.vimrc

“iset nu<ESC>”

“:wq”

$ vim ~/.vimrc
Basic Options
set nocompatible
syntax on
filetype on
filetype plugin on
filetype indent on
set nu
set wrap
set shiftwidth=4
set tabstop=4
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
Insert Mode

• iI
• aA
• oO
Visual Mode

•v
•V
• Ctrl-v
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%
Basic Motion
b,w,e
B,W,E

f[x]    F[x]   ;   ,

( )        sentence
{ }        paragraph
[ ]        section
Buffer
$ vim file1 file2 file3
:bufdo tab split
:bufdo %s!pattern!string!g
:bufdo mkview
:[n]buffer
    :bn
    :bp
    :sb
  :buffers
 :buffers!
Window
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
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>
Tabpage
:[n]tabdo   :tabnew
:tabn       :tabclose
:tabp       :tabfirst
:sb         :tabfind
:tabs       :tablast
:tabs!
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>
“ 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>
Syntax
syntax.txt
Macro
*macro*
Mapping
map.txt
Autocommand
  autocmd.txt
Cases
Case 1: Copy & Paste


• copy text between terminal vim and gui
• Solution: fakeclip plugin
Case 2: Browsing File


• Solution: nerd tree plugin
• e to open nerd tree window
Case 3: Switching Buffer



• Solution: bufexplorer.zip
• be to open buffer explorer
Case 4: reformating code


• Problem: Coding Style Problem
• Solution: ‘equalprg’ option
• setlocal equalprg=/path/to/your/format_prg
Case 5: code snippets



• Problem:
• Solution:   snipmate.vim
Case 6: completion


• Problem:            C-x C-n
  completion
• Solution:   autocomplpop.vim
VimL
• variable
• function
• condition
• looping
• vim built-in functions
• command
• vim runtime path
• $VIM/
• $VIMRUNTIME/
See Also

• Vim.org
• Vim Tips wiki
• :tab help
Utilities


• Vimana
• VIM::Packager
Selected Help Section

• ‘C-editing’
• ‘completion’
• ‘tips.txt’
• ‘autocmd’
• ‘eval.txt’
vim script authors
      on github.com
• http://github.com/c9s
• http://github.com/kana
• http://github.com/mattn
• http://github.com/tpope
• etc...

More Related Content

PDF
Vim Hacks
PDF
VIM for (PHP) Programmers
PDF
Using the Command Line with Magento
PDF
De 0 a 100 con Bash Shell Scripting y AWK
PDF
Introduction to Vim, the text editor
PPT
01 linux basics
PPTX
Cis 216 – shell scripting
PDF
Beware sharp tools
Vim Hacks
VIM for (PHP) Programmers
Using the Command Line with Magento
De 0 a 100 con Bash Shell Scripting y AWK
Introduction to Vim, the text editor
01 linux basics
Cis 216 – shell scripting
Beware sharp tools

What's hot (20)

PDF
PDF
Unix cheatsheet
PPTX
App-o-Lockalypse now!
PPTX
Process monitoring in UNIX shell scripting
PDF
我在豆瓣使用Emacs
PDF
Introduction to Bash Scripting, Zyxware Technologies, CSI Students Convention...
PDF
Shell Script
ODP
Perl - laziness, impatience, hubris, and one liners
KEY
Clojure入門
PDF
Beware: Sharp Tools
PPT
Os Secoske
PPTX
Unix shell scripting
PDF
Ruby 1.9
PPTX
Unix - Shell Scripts
PDF
Bash Scripting Workshop
PDF
Paexec -- distributed tasks over network or cpus
ODP
DevChatt 2010 - *nix Cmd Line Kung Foo
PDF
Scroll pHAT HD に美咲フォント
PDF
Iteration
Unix cheatsheet
App-o-Lockalypse now!
Process monitoring in UNIX shell scripting
我在豆瓣使用Emacs
Introduction to Bash Scripting, Zyxware Technologies, CSI Students Convention...
Shell Script
Perl - laziness, impatience, hubris, and one liners
Clojure入門
Beware: Sharp Tools
Os Secoske
Unix shell scripting
Ruby 1.9
Unix - Shell Scripts
Bash Scripting Workshop
Paexec -- distributed tasks over network or cpus
DevChatt 2010 - *nix Cmd Line Kung Foo
Scroll pHAT HD に美咲フォント
Iteration

Similar to Vim Hacks (OSSF) (20)

PDF
ODP
Vim and Python
PDF
Rubizza #1 | Special Lecture. Vim
KEY
Vim week
PDF
Vim再入門
PDF
Tuffarsi in vim
KEY
VIM for the PHP Developer
PDF
Coding with Vim
PDF
Vim Cheat Sheet.pdf
PDF
Vim For Php
PPT
Vim Vi Improved
PDF
Vim Hacks
PPT
PDF
Mission vim possible-full
PPTX
andrew's guide to vim
PDF
PDF
VIM for Programmers
PPTX
Introduction to Vim
PDF
Vim Eye for the Rails Guy - Cheatsheet
PDF
Useful Vim Plugins
Vim and Python
Rubizza #1 | Special Lecture. Vim
Vim week
Vim再入門
Tuffarsi in vim
VIM for the PHP Developer
Coding with Vim
Vim Cheat Sheet.pdf
Vim For Php
Vim Vi Improved
Vim Hacks
Mission vim possible-full
andrew's guide to vim
VIM for Programmers
Introduction to Vim
Vim Eye for the Rails Guy - Cheatsheet
Useful Vim Plugins

More from Lin Yo-An (12)

PDF
Code Generation in PHP - PHPConf 2015
PDF
Getting merged
PDF
OSDC.TW - Gutscript for PHP haters
PDF
OSDC.TW 2014 building popular open source projects
PDF
Happy Go Programming
PDF
Happy Go Programming Part 1
PDF
Secret sauce of building php applications
PDF
LazyRecord: The Fast ORM for PHP
PDF
Vim Script Programming
PDF
CPAN 模組二三事
PDF
Perl.Hacks.On.Vim Perlchina
PDF
Perl.Hacks.On.Vim
Code Generation in PHP - PHPConf 2015
Getting merged
OSDC.TW - Gutscript for PHP haters
OSDC.TW 2014 building popular open source projects
Happy Go Programming
Happy Go Programming Part 1
Secret sauce of building php applications
LazyRecord: The Fast ORM for PHP
Vim Script Programming
CPAN 模組二三事
Perl.Hacks.On.Vim Perlchina
Perl.Hacks.On.Vim

Vim Hacks (OSSF)

  • 1. OSSF Vim Hacks (Cornelius) cornelius.howl@gmail.com http://c9s.blogspot.com/ c9s@(plurk|twitter).com
  • 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
  • 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
  • 16. $ vim file1 file2 file3
  • 20. :[n]buffer :bn :bp :sb :buffers :buffers!
  • 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>
  • 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>
  • 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
  • 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...