YON CISE

Vim 变量

Variables

Vim 中可以通过 let 对变量进行赋值, 比如:

:let foo = "bar"

Options as Variables

Vim 中可以通过 set 对 options 进行设置, 比如:

:set foldlevel=24

但是我们也可以通过一个特殊的语法把 options 当做变量来操作:

:let &foldlevel=24

foldlevel 前面加上 & 就是为了告诉 Vim 我们想把 foldlevel 这个 option 当成变量, 如果没有这个 &, 我们就是在对 foldlevel 这个变量赋值.

Registers as Variables

同样的道理, 我们也可以将 registers 当成变量, 只不过这里用的不是 & 而是 @ 而已:

:let @a = "foobar"
:reg

你会发现 a 寄存器里的值已经变成了 foobar.

特殊的寄存器 =

我们可以利用这个寄存器将变量的值插入到文本中.

Insert mode:

<C-r>=VARIABLES

Normal mode:

"=VARIABLES<CR>p

将 VARIABLES 换成你自己的变量名, 可以使用上面提到的三种变量, 只是别忘了 & 和 @ (如果需要的话). 其实这里的 VARIABLES 也可以是 Vim 的函数, 比如在插入模式下:

<C-r>=expand('%:t')

就会将当前文件的文件名插入到文本中.

Variables / Learn Vimscript the Hard Way