我正在尝试在vim中实现绝对和可变行编号之间的切换,我想做一个单行而不是编写if函数。
我目前的代码是:
nnoremap <F4> :( &rnu == 1 ? "set nu" : "set rnu" )<CR>
哪个不起作用;谁知道我怎么能让它发挥作用?
答案 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
命令。