Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Vim Script Programming

14,168 views

Published on

Published in: Technology, Education

Vim Script Programming

  1. 1. Vim Script Programming Vim Script (c9s) Fork Me on Github http://github.com/c9s
  2. 2. • Programmable interface • vim script • Perl / Python / Ruby / Mzscheme ...
  3. 3. Outline - Vim Script • Comment • Looping • Variable • Command • Variable scope • Mapping • Special variable • Completion • Function • Autocommand • function scope • Autogroup • built-in function • Utility • Condition • vim-makefile
  4. 4. Prepare
  5. 5. Region Eval http://gist.github.com/444528 * Press ‘V’ then select region * Press ‘e’ to evaluate region
  6. 6. To run script :source [filename] :source % # current file
  7. 7. Debugging :messages :set verbose=10 “ verbose mode :verbose *command*
  8. 8. Help section :help *section* option :help ‘option_name’ mode :help [icv]_..... command :help :command_name
  9. 9. Alias • source => so :so • function => func :func Foo(bar) • endfunction => endf :endf
  10. 10. Variable let variable = 123 let string = “string” let list = [1,2,3] let strlist = [ “bar” , “foo” ] let dict = { ‘phone’: ‘01234567’ } let dict.name = “Chopin” echo dict
  11. 11. Variable Scope • non-prefix = global • g: global • s: script • b: buffer • v: vim built-in • a: function arguments
  12. 12. Variable Scope • let var = “string” • let g:var_global = “global” • let s:var_script = “script” • let b:var_buffer = “buffer”
  13. 13. Condition if boo > 2 elseif str == “string” elseif str =~ ‘[a-z]+’ endif
  14. 14. Looping while running == 1 echo “Run...” endwhile for i in [1,2,3,4] endfor
  15. 15. Looping for i in range(1,10) “ i = 1 ~ 10 endfor
  16. 16. Override Function Uppercase fun! Test() .. blah endf
  17. 17. Override Function Uppercase fun! Test() .. blah endf call Test() “ no return value
  18. 18. Override Function Uppercase fun! Test() .. blah return 3 endf let ret = Test() Return 3
  19. 19. Function arguments fun! Foo(bar) echo a:bar endf fun! Foo(...) echo a:000 echo a:001 endf
  20. 20. Function arguments fun! Foo(bar) echo a:bar endf non-modifiable fun! Foo(...) echo a:000 echo a:001 endf
  21. 21. Function arguments fun! Foo(bar) echo a:bar endf non-modifiable fun! Foo(...) echo a:000 count of args echo a:001 endf
  22. 22. Function arguments fun! Foo(bar) echo a:bar endf non-modifiable fun! Foo(...) echo a:000 count of args echo a:001 endf arg1
  23. 23. Function Scope fun! s:Foo() endf Script Scope fun! g:Foo() endf Global Scope fun! b:Foo() endf Buffer Scope
  24. 24. Built-in Functions • List related: add() , remove() , filter() , map (), len() , sort(), empty(), join(), range() ... • Dictionary related: keys() , values() , has_key() , has_value(), extend() ... • String related: stridx(), strridx(), strlen(), substitute() , submatch(), strpart(), expand () ...
  25. 25. Built-in Functions • List related: add() , remove() , filter() , map (), len() , sort(), empty(), join(), range() ... • Dictionary related: keys() , values() , has_key() , has_value(), extend() ... • String related: stridx(), strridx(), strlen(), substitute() , submatch(), strpart(), expand () ... *function-list*
  26. 26. Built-in Function • Buffer related: bufnr() , bufexists() , buflisted () , bufname() ... etc • Window related: winbufnr(), bufwinnr(), winnr() • Misc: getreg(), setreg(), system(), eventhandler () , getpid() ...
  27. 27. Autoload function Define your library function: ~/.vim/autoload/foo.vim fun! foo#blah() endf In your script: call foo#blah()
  28. 28. Command com! -range DoWrite :write flags command name execute
  29. 29. Command Define line range for command: -range -range=% -range=N -count=N
  30. 30. Command Other options: -bang -bar -register -buffer -complete=[type]
  31. 31. Command Template arguments: <line1>,<line2> <count> <bang> <reg> <args> <f-args> <q-args> <lt>
  32. 32. Syntax • syn list • syn keyword [ID] .... • syn match [ID] .... • syn region [ID] ... • hi [ID] [Attributes]
  33. 33. Runtime Directory /Users/c9s/.vim/ |-- after |-- autoload |-- colors |-- doc |-- ftdetect |-- ftplugin | |-- c | |-- cabal | |-- cg .... |-- indent |-- plugin |-- syntax | |-- c | |-- javascript | `-- perl
  34. 34. Utilities • vim-makefile • vim-uploader • Vimana
  35. 35. Vim Makefile • make install • make uninstall • make link • make dist
  36. 36. Thanks http://github.com/c9s

×