Your SlideShare is downloading. ×
0
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Vim Hacks
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Vim Hacks

51,481

Published on

Vim Hacks @ COSCUP

Vim Hacks @ COSCUP

Published in: Technology
22 Comments
286 Likes
Statistics
Notes
No Downloads
Views
Total Views
51,481
On Slideshare
0
From Embeds
0
Number of Embeds
57
Actions
Shares
0
Downloads
2,121
Comments
22
Likes
286
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. VIM Hacks Why Vim Vim c9s / Cornelius AIINK.com
  • 2. It doesn’t matter
  • 3. It does matter
  • 4. ...
  • 5. Microsoft Visual Studio
  • 6. Eclipse
  • 7. Code Block
  • 8. Notepad++
  • 9. ....
  • 10. ....
  • 11. •
  • 12. • • IDE , Editor
  • 13. • • IDE , Editor • XXX Editor ..
  • 14. • • IDE , Editor • XXX Editor .. • ....
  • 15. Microsoft Windows ...
  • 16. GEdit
  • 17. Emacs
  • 18. TextMate
  • 19. VIM
  • 20. #!/usr/bin/env perl my $hppiness = COS::CUP();
  • 21. #!/usr/bin/env perl my $hppiness = COS::CUP(); Oops! “a”
  • 22. #!/usr/bin/env perl my $hppiness = COS::CUP(); xN
  • 23. #!/usr/bin/env perl my $hppiness = COS::CUP(); xN
  • 24. #!/usr/bin/env perl my $hppiness = COS::CUP(); xN
  • 25. #!/usr/bin/env perl my $hppiness = COS::CUP(); xN
  • 26. #!/usr/bin/env perl my $hppiness = COS::CUP(); xN
  • 27. #!/usr/bin/env perl my $hppiness = COS::CUP(); xN
  • 28. #!/usr/bin/env perl my $hppiness = COS::CUP(); xN
  • 29. #!/usr/bin/env perl my $hppiness = COS::CUP(); xN
  • 30. #!/usr/bin/env perl my $hppiness = COS::CUP(); xN
  • 31. #!/usr/bin/env perl my $hppiness = COS::CUP(); xN
  • 32. #!/usr/bin/env perl my $hppiness = COS::CUP(); xN
  • 33. #!/usr/bin/env perl my $hppiness = COS::CUP(); xN
  • 34. #!/usr/bin/env perl my $hppiness = COS::CUP(); xN
  • 35. #!/usr/bin/env perl my $hppiness = COS::CUP();
  • 36. #!/usr/bin/env perl my $happiness = COS::CUP();
  • 37. #!/usr/bin/env perl my $happiness = COS::CUP(); ?
  • 38. #!/usr/bin/env perl my $happiness = COS::CUP(); ?
  • 39. The VIM way...
  • 40. VIM: #!/usr/bin/env perl my $hppiness = COS::CUP(); F h
  • 41. VIM: #!/usr/bin/env perl my $happiness = COS::CUP(); a ppend a
  • 42. VIM
  • 43. VIM
  • 44. IDE
  • 45. ...
  • 46. ...
  • 47. !!!
  • 48. !!! !!!
  • 49. VIM
  • 50. VI Improved
  • 51. Learning Curve
  • 52. Vim
  • 53. Vim • Vim
  • 54. Vim • Vim • gVim
  • 55. Vim • Vim • gVim • gVim Easy
  • 56. Vim • Vim • gVim • gVim Easy • MacVim
  • 57. Vim • Vim • gVim • gVim Easy • MacVim • Vi in Emacs
  • 58. Vim • Vim • gVim • gVim Easy • MacVim • Vi in Emacs • Vi in Bash
  • 59. Vim • Vim • gVim • gVim Easy • MacVim • Vi in Emacs • Vi in Bash • etc ...
  • 60. Features
  • 61. 1. Mode
  • 62. INSERT NORMAL VISUAL SELECT ... et cetera
  • 63. ESC [Ii]NSERT NORMAL [Vv]ISUAL
  • 64. 1.1 Normal Mode
  • 65. Motion
  • 66. HJKL ←↓↑→
  • 67. # comments ... foreach my $foo ( @bar ) { # my @outs = grep /pattern/ , @list; } sub func1 { }
  • 68. # comments ... foreach my $foo ( @bar ) { # my @outs = grep /pattern/ , @list; Cursor } sub func1 { }
  • 69. # comments ... foreach my $foo ( @bar ) { # [{ my @outs = grep /pattern/ , @list; } sub func1 { }
  • 70. # comments ... foreach my $foo ( @bar ) { # my @outs = grep /pattern/ , @list; } f@ sub func1 { }
  • 71. # comments ... foreach my $foo ( @bar ) { # my @outs = grep /pattern/ , @list; } $ sub func1 { }
  • 72. # comments ... foreach my $foo ( @bar ) { # my @outs = grep /pattern/ , @list; } ^ sub func1 { }
  • 73. # comments ... H foreach my $foo ( @bar ) { # my @outs = grep /pattern/ , @list; } sub func1 { }
  • 74. # comments ... foreach my $foo ( @bar ) { # my @outs = grep /pattern/ , @list; M } sub func1 { }
  • 75. # comments ... foreach my $foo ( @bar ) { # my @outs = grep /pattern/ , @list; } sub func1 { } L
  • 76. # comments ... foreach my $foo ( @bar ) { # my @outs = grep /pattern/ , @list; } sub func1 { }
  • 77. # comments ... foreach my $foo ( @bar ) { # my @outs = grep } C Insert mode sub func1 { }
  • 78. # comments ... foreach my $foo ( @bar ) { # my @outs = grep /pattern/ , @list; } sub func1 { }
  • 79. # comments ... foreach my $foo ( @bar ) { # my @outs = grep /pattern/ , @list; } % sub func1 { }
  • 80. :h motion.txt
  • 81. 1.2 Insert Mode
  • 82. Editing text
  • 83. Insert Mode • i : Insert text before the cursor
  • 84. Insert Mode • i : Insert text before the cursor • I : Insert text before the first non-blank in the line
  • 85. Insert Mode • i : Insert text before the cursor • I : Insert text before the first non-blank in the line • a : Append text after the cursor
  • 86. Insert Mode • i : Insert text before the cursor • I : Insert text before the first non-blank in the line • a : Append text after the cursor • A : Append text at the end of the line
  • 87. 1.3 Visual Mode
  • 88. Select region
  • 89. Visual Mode • v : start Visual mode per character.
  • 90. Visual Mode • v : start Visual mode per character. • V : start Visual mode linewise.
  • 91. Visual Mode • v : start Visual mode per character. • V : start Visual mode linewise. • Ctrl-v : start Visual mode blockwise.
  • 92. Visual Mode • v : start Visual mode per character. • V : start Visual mode linewise. • Ctrl-v : start Visual mode blockwise. operator y (yank) , d (delete) , c (change) ... etc
  • 93. 2. Syntax Highlight Support
  • 94. /opt/local/share/vim/vim72 $ ls -1 syntax/ | wc -l 520
  • 95. Syntax
  • 96. ~/.vim/syntax/[filetype].vim
  • 97. ~/.vim/syntax/[filetype].vim syn match [id] [re] [options]
  • 98. ~/.vim/syntax/[filetype].vim syn match [id] [re] [options] syn region [id] start=[re] end=[re]
  • 99. ~/.vim/syntax/[filetype].vim syn match [id] [re] [options] syn region [id] start=[re] end=[re] syn keyword [id] [keyword] ...
  • 100. ~/.vim/syntax/[filetype].vim syn match [id] [re] [options] syn region [id] start=[re] end=[re] syn keyword [id] [keyword] ... hi [id] guibg=[color] ctermfg=[color]
  • 101. :help syntax.txt
  • 102. 3. ENCODING
  • 103. :set fencs=utf-8,gbk,big5,euc-jp,utf-16le :set fenc=utf-8 enc=utf-8 tenc=utf-8
  • 104. :set fencs=utf-8,gbk,big5,euc-jp,utf-16le :set fenc=utf-8 enc=utf-8 tenc=utf-8
  • 105. Vim :set fencs=utf-8,gbk,big5,euc-jp,utf-16le :set fenc=utf-8 enc=utf-8 tenc=utf-8
  • 106. :set fencs=utf-8,gbk,big5,euc-jp,utf-16le :set fenc=utf-8 enc=utf-8 tenc=utf-8
  • 107. :set fencs=utf-8,gbk,big5,euc-jp,utf-16le :set fenc=utf-8 enc=utf-8 tenc=utf-8
  • 108. :set fencs=utf-8,gbk,big5,euc-jp,utf-16le :set fenc=utf-8 enc=utf-8 tenc=utf-8 Terminal
  • 109. :help encoding
  • 110. 4. Key Mapping
  • 111. :map :nmap :vmap :imap :smap :xmap ... more
  • 112. :map (all) :nmap (normal mode) :vmap (visual mode) :imap (insert mode) :smap (select mode) :xmap (visual , select mode) ... more
  • 113. :map (all) :nmap (normal mode) :vmap (visual mode) :imap (insert mode) :smap (select mode) :xmap (visual , select mode) ... more
  • 114. :nmap <C-c><C-c> :!gcc -Wall % -o %:r.out<CR> Ctrl C Ctrl C GCC .out
  • 115. Normal Mode Tab Shift-Tab nmap <tab> v> nmap <s-tab> v< vmap <tab> >gv vmap <s-tab> <gv
  • 116. nmap <tab> v> nmap <s-tab> v< vmap <tab> >gv vmap <s-tab> <gv Visual/Select Mode Tab Shift-Tab
  • 117. nmap <tab> v> nmap <s-tab> v< When mappings and menus are defined with the |:vmap| or |:vmenu| command they work vmap <tab> >gv both in Visual mode and in Select mode. When these are used in Select mode Vim vmap <s-tab> <gv automatically switches to Visual mode, so that the same behavior as in Visual mode is effective. Visual/Select Mode Tab Shift-Tab
  • 118. imap <F2> <C-R>=strftime("%c")<CR> Insert Mode F2
  • 119. cmap <c-a> <home> cmap <c-e> <end> cnoremap <c-b> <left> cnoremap <c-d> <del> cnoremap <c-f> <right> cnoremap <c-n> <down> cnoremap <c-p> <up> cnoremap <esc><c-b> <s-left> cnoremap <esc><c-f> <s-right> Command Mode Bash Key Binding
  • 120. :h map.txt
  • 121. 5. TEXT OBJECT
  • 122. Text Object • word • string ⇛ action • paragraph (yank,delete,change ...etc) • block
  • 123. Operator Mapping v|c|d i|a { | [ | ( |“ |‘ visual Region change Inner Object {} delete An Object [] () ““ Operator ‘‘
  • 124. va{
  • 125. function ( blah , blah ) ci( function ( ) function ( new_args )
  • 126. “Hello World” di” “” “Hello New World”
  • 127. 6. TAB PAPGES
  • 128. :tabnew
  • 129. :tabnew :tabedit path/to/file
  • 130. :tabnew :tabedit path/to/file :tabfind path/to/file
  • 131. :help tabpage.txt
  • 132. 7. FOLDS
  • 133. FOLD IS
  • 134. Fold Methods
  • 135. Fold Methods Syntax Fold
  • 136. Fold Methods Syntax Fold :set foldmethod=syntax $VIMRUNTIME/syntax/*.vim
  • 137. Perl : /opt/local/share/vim/vim72/syntax/perl.vim if exists("perl_want_scope_in_variables") “ ..... if exists("perl_extended_vars") “ ..... if exists("perl_fold") “ ..... .vimrc (Fold) let perl_fold = 1 let perl_extended_vars = 1 “ .... etc
  • 138. Fold Methods Syntax Fold Marker Fold
  • 139. Fold Methods Syntax Fold Marker Fold :set foldmethod=marker “{{{“ “}}}”
  • 140. # fold this {{{ function do_something { echo “COSCUP”; } # }}}
  • 141. Fold Methods Syntax Fold Marker Fold Indent Fold
  • 142. Fold Methods Syntax Fold Marker Fold Indent Fold :set foldmethod=indent
  • 143. Fold Methods Syntax Fold Marker Fold Indent Fold Manual Fold
  • 144. :set foldmethod=manual zf
  • 145. autocmd BufWinLeave *.* silent mkview autocmd BufWinEnter *.* silent loadview autocmd mkview , loadview ~/.vim/view/
  • 146. Fold Methods Syntax Fold Marker Fold Indent Fold Manual Fold Expr Fold (Custom Fold Function)
  • 147. :set foldexpr=MyFoldLevel(v:lnum)
  • 148. Fold Methods Syntax Fold Marker Fold Indent Fold Manual Fold Expr Fold (Custom Fold Function) Diff Fold
  • 149. 8.Modeline & FileType
  • 150. ModeLine
  • 151. " vim:fdm=marker:sw=2:ts=2:et:fdl=0: "============================ " Author: Cornelius < cornelius.howl{at}gmail{dot}com >
  • 152. " vim:fdm=marker:sw=2:ts=2:et:fdl=0: "============================ " Author: Cornelius < cornelius.howl{at}gmail{dot}com > Marker Tab Fold (Level 0 )
  • 153. FileType
  • 154. ~/.vim/ftplugin/ruby.vim vimrc
  • 155. ~/.vim/filetype.vim filetype.vim
  • 156. 9. FORMATTING
  • 157. :set equalprg=perltidy
  • 158. :set equalprg=perltidy “=” perltidy
  • 159. autocmd Filetype perl :set equalprg=perltidy autocmd equalprg
  • 160. autocmd Filetype c :set equalprg=indent C GNU Ident
  • 161. SQL $ cat bin/sql-beautify.pl #!/usr/bin/env perl use warnings; use strict; use SQL::Beautify; local $/; my $sql = SQL::Beautify->new( query => <STDIN> , spaces => 4 , break => "n" ); print $sql->beautify; autocmd Filetype sql :set equalprg=sql-beautify.pl SQL Filter
  • 162. 10. QuickFix
  • 163. :grep & :make
  • 164. :grep [pattern] [filepath]
  • 165. :grep [pattern] [filepath] grepprg ( vimgrep) grep QuickFix
  • 166. QuickFix Window
  • 167. :set grepprg=/path/to/grep grepprg ( VIM grep)
  • 168. :make
  • 169. :make makeprg ( make) Makefile. compiler output parser
  • 170. :set makeprg=gmake makeprg ( make)
  • 171. Result ⇛ QuickFix Window
  • 172. :copen QuickFix Window
  • 173. :cclose QuickFix Window
  • 174. :cnext Result
  • 175. :cprevious Result
  • 176. QuickFix Window Toggle com! -bang -nargs=? QFix cal QFixToggle(<bang>0) fu! QFixToggle(forced) if exists("g:qfix_win") && a:forced == 0 cclose unlet g:qfix_win else copen 10 let g:qfix_win = bufnr("$") en endf nn <leader>q :QFix<cr>
  • 177. QuickFix Window Toggle com! -bang -nargs=? QFix cal QFixToggle(<bang>0) fu! QFixToggle(forced) if exists("g:qfix_win") && a:forced == 0 cclose unlet g:qfix_win else copen 10 let g:qfix_win = bufnr("$") en endf nn <leader>q :QFix<cr> nmap “q” , <leader> “”
  • 178. 11. Plugin
  • 179. SnipMate TextMate
  • 180. snippet cla class .. initialize .. end class ${1:`substitute(Filename(), '^.', 'u&', '')`} def initialize(${2:args}) ${3} end end
  • 181. DBExt.vim Oracle, Sybase, MSSQL , MySQL, DBI
  • 182. xml.vim XML
  • 183. FuzzyFinder.vim Fuzzy/Partial pattern explorer
  • 184. The_NERD_TREE.vim
  • 185. The NERD Commenter
  • 186. taglist.vim ctags macro , function , variable
  • 187. cscope C
  • 188. autocomplpop.vim
  • 189. MRU most recently used
  • 190. bufexplorer.vim Buffer Explorer
  • 191. Rails.vim
  • 192. git-vim
  • 193. !
  • 194. !
  • 195. Vimana Vim script Manager
  • 196. • Vimball • Archive File ( zip , rar ) • .vim file
  • 197. POWERED BY Perl
  • 198. CPAN Vimana $ cpan Vimana
  • 199. $ vimana search xml
  • 200. $ vimana search xml rrd.vim - Edit RRD data with Vim. qt.vim - tiny tool for the uic used in Qt from Trolltech syntax-for-xul - Highlighting for XML User interface Language. maven2.vim - Compiler plugin for maven2 .... skip
  • 201. script $ vimana info xml.vim
  • 202. xml.vim $ vimana install xml.vim
  • 203. $ vimana install xml.vim $ vimana install rails.vim $ vimana install the-nerd-tree.vim $ vimana install taglist.vim $ vimana install snipmate $ vimana install fuzzyfinder.vim etc ... ALL Works
  • 204. Git Repository http://github.com/c9s/Vimana/tree/master
  • 205. ENJOY
  • 206. Thank You
  • 207. Demo ....
  • 208. Q &A

×