基本上我想做的是
map ,e :call ToggleEssayMode()<CR>
function! ToggleEssayMode()
if toggle==true
:map j gj
:map k gk
toggle=false
else
:umap j
:umap k
toggle=true
enndfunction
我环顾四周,但我能找到的人使用的是保留的 vim 变量。我可以创建自己的变量吗?有没有更正确的方法来做到这一点?
最佳答案
除非您使用单独的函数来启用和禁用,否则您将需要一个标志变量,为了将其与其他配置隔离,我建议编写一个小插件。例如,创建一个文件 essay.vim
(实际名称无关紧要,只要以 .vim
结尾即可)在 ~/.vim/plugin/
中具有以下内容:
let s:enabled = 0
function! ToggleEssayMode()
if s:enabled
unmap j
unmap k
let s:enabled = 0
else
nnoremap j gj
nnoremap k gk
let s:enabled = 1
endif
endfunction
要调用的映射
ToggleEssayMode()
然后可以在同一个文件中或在您的 .vimrc
中.关于您的代码的一些评论:
let
为了分配变量(参见 set
选项)。 true
和 false
;使用 1
和 0
反而。 if
需要关闭 endif
. umap
应该是 unmap
;前者不存在。 nnoremap
应该使用以避免递归映射。 :
在脚本中的命令之前是不必要的。 关于function - vim 中的切换功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20579142/