在.vimrc中使用inline if运算符

时间:2011-11-29 16:57:19

标签: vim

我正在尝试在vim中实现绝对和可变行编号之间的切换,我想做一个单行而不是编写if函数。

我目前的代码是:

nnoremap <F4> :( &rnu == 1 ? "set nu" : "set rnu" )<CR>

哪个不起作用;谁知道我怎么能让它发挥作用?

1 个答案:

答案 0 :(得分:6)

这就是我如何做到这一点:

:nnoremap <f4> :setl <c-r>=&nu ? "rnu" : "nu"<cr><cr>

对于未来的Google员工而言,较长的版本可能会更加清晰:

:nnoremap <f4> :setlocal <c-r>=&number ? "relativenumber" : "number"<cr><cr>

<C-r>=告诉vim使用表达式寄存器来评估行的其余部分作为vim命令。尾部双<cr>是必需的,因为第一个计算表达式,第二个执行:setlocal命令。