From 5f285c43ea7b0a5e2571898a09e7b8c49a71a0c0 Mon Sep 17 00:00:00 2001 From: "Rico Sta. Cruz" Date: Thu, 16 Apr 2015 23:06:32 +0800 Subject: [PATCH] Update vimscript --- vimscript.md | 82 ++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 57 insertions(+), 25 deletions(-) diff --git a/vimscript.md b/vimscript.md index cb0639f86..43e6aaa4c 100644 --- a/vimscript.md +++ b/vimscript.md @@ -1,27 +1,26 @@ --- -title: vimscript -layout: default +title: Vim script --- Variables --------- -```vim +```vimscript let var = "hello" ``` ### Variable prefixes -```vim +```vimscript let g:ack_options = '-s -H' " g: global -let s:ack_program = "ack" " s: local to script +let s:ack_program = 'ack' " s: local to script let l:foo = 'bar' " l: local to function let w:foo = 'bar' " w: window let b:state = 'on' " b: buffer let t:state = 'off' " t: tab echo v:var " v: vim special -let @/ = "" " @ register (this clears last search patterN) +let @/ = '' " @ register (this clears last search patterN) echo $PATH " $ env " they're actually a dictionary @@ -31,8 +30,8 @@ keys(s:) ### Vim options Prefix with `&` -```vim -echo "tabstop is " . &tabstop +```vimscript +echo 'tabstop is ' . &tabstop if &insertmode echo &g:option echo &l:option @@ -40,15 +39,15 @@ echo &l:option ### Operation assignment -```vim +```vimscript let var -= 2 let var += 5 -let var .= "string" " concat +let var .= 'string' " concat ``` ### Strings -```vim +```vimscript let str = "String" let str = "String with \n newline" @@ -57,7 +56,7 @@ let literal = 'literal, no \ escaping' echo "result = " . re " concatenation ``` -```vim +```vimscript strlen(str) " length strchars(str) " character length ``` @@ -65,7 +64,7 @@ strchars(str) " character length Functions --------- -```vim +```vimscript " prefix with s: for local script-only functions function! s:Initialize(cmd, args) " a: prefix for arguments @@ -75,23 +74,46 @@ function! s:Initialize(cmd, args) endfunction ``` +### Namespacing + +```vimscript +function! myplugin#hello() +``` + ### Calling functions -```vim +```vimscript call s:Initialize() call s:Initialize("hello") ``` ### Consuming arguments -```vim +```vimscript echo "Result: " . s:Initialize() ``` +### Abortable +Aborts when error is detected + +```vimscript +function! myfunction() abort +endfunction +``` + +### Dynamic arguments + +```vimscript +function! infect(...) + echo a:0 + echo a:1 +endfunction +``` + Commands -------- -```vim +```vimscript command! Save set fo=want tw=80 nowrap command! Save call s:Foo() ``` @@ -101,7 +123,7 @@ Flow ### Conditionals -```vim +```vimscript let char = getchar() if char == "\" " ... @@ -112,9 +134,15 @@ else endif ``` +### Single line + +```vimscript +if empty(a:path) | return [] | endif +``` + ### Boolean logic -```vim +```vimscript if g:use_dispatch && s:has_dispatch endif ``` @@ -122,7 +150,7 @@ endif Lists ----- -```vim +```vimscript let mylist = [1, two, 3, "four"] let first = mylist[0] @@ -131,7 +159,11 @@ let last = mylist[-1] " Supresses errors let second = get(mylist, 1) let second = get(mylist, 1, "NONE") +``` +### Functions + +```vimscript len(mylist) empty(mylist) @@ -143,14 +175,14 @@ split('hello there world', ' ') ### Concatenation -```vim +```vimscript let longlist = mylist + [5, 6] let mylist += [7, 8] ``` ### Sublists -```vim +```vimscript let shortlist = mylist[2:-1] let shortlist = mylist[2:] " same @@ -159,14 +191,14 @@ let shortlist = mylist[2:2] " one item ### Push -```vim +```vimscript let alist = [1, 2, 3] let alist = add(alist, 4) ``` ### Map -```vim +```vimscript call map(files, "bufname(v:val)") " use v:val for value call filter(files, 'v:val != ""') ``` @@ -199,7 +231,7 @@ let extend(s:fruits, { ... }) Casting ------- -```vim +```vimscript str2float("2.3") str2nr("3") float2nr("3.14") @@ -208,7 +240,7 @@ float2nr("3.14") Math ---- -```vim +```vimscript sqrt(100) floor(3.5) ceil(3.3)