我认为在Vim正常模式中<C-a>
不仅应该增加数字而且应该切换布尔值。如果您将true
和false
视为模2的整数,则有意义。
所以,我downloaded an excellent script做了毛茸茸的工作并为<C-a>
写了一个新的定义:
fun! NewCA()
let cw = tolower(expand("<cword>"))
if cw == "true" || cw == "false"
ToggleWord
else
" run the built-in <C-a>
execute "normal \<C-a>"
endif
endfun
command! NewCA :call NewCA()
nnoremap <C-a> :NewCA<cr>
但实际上,nnoremap
并没有检查内部函数。如果我的光标不在单词true
或false
上,我会得到递归行为。
在这一点上,我发誓很多,为什么Bram没有从Emacs中选择一个好主意,一切都应该是功能和键绑定可以自由选择。然后我就可以检查<C-a>
的函数并在该函数中调用它。但不,我找不到这样的功能,execute "normal foo"
短语似乎是Vim成语。
有关如何使<C-a>
工作的任何建议
true
或false
<C-a>
行为,否则帮助表示赞赏!
答案 0 :(得分:9)
变化
execute "normal \<C-a>":
normal! ^A
您可以在正常模式
中运行
<C-v><C-a>来获取^ A.
“!”在正常结束时说“使用默认映射”
答案 1 :(得分:6)
来自:help :normal
:norm[al][!] {commands}
...
If the [!] is given, mappings will not be used.
....
也不需要定义命令,你可以直接
nnoremap <C-a> :call NewCA()