变量
几种不同的变量:
- b:name - buffer缓冲区的变量
- w:name - window变量
- g:name - 全局变量
- v:name - Vim预定义变量
- s:name - 作用域是当前脚本的变量
Vim中有一些特殊变量,包括:
- % - 当前文件名
- %< - 当前文件名,去后缀
- <cword> - 光标所在的单词
测试一下这些简单变量
:echo expand("%") :!echo %
对%/%<
更复杂的一些应用,例如我们在~/.vimrc中添加2个函数,并映射到F3/F4,按F3编译程序,按F4运行程序:
func! Compile() let type = b:current_syntax if type == "c" exec "!gcc -g -o %< %" elseif type == "cpp" exec "!g++ -g -o %< %" endif endfunc func! Run() let type = b:current_syntax echo type if type == "c" || type == "cpp" exec "!./%<" elseif type == "php" exec "!php %" elseif type == "javascript" exec "!node %" endif endfunc map <F3> :call Compile()<CR> map <F4> :call Run()<CR>
表达式
数值、字符串都是表达式,其他常见的表达式包括:
- $name - 环境变量名
- &name - Vim选项名
- @r - Vim寄存器名
:echo $HOME 查看环境变量$HOME :echo &ts 查看tabstop选项的值 :echo @u 查看寄存器u的值
参考|expression-syntax|了解Vim表达式语法。
函数
自定义函数:
function! Min(n1, n2) if a:n1 < a:n2 return a:n1 endif return a:n2 endfunction
自定义函数的几个特点:函数名以大写字母打头;函数体内访问参数用a:number的形式;function!的形式可重新定义一个已定义过的函数。可以在Ex中测试,如:
:echom Min(1024,1000)
将输出1000(通过echom而不是echo输出的信息,可以通过:messages查看)。