用于切换颜色方案的vim函数
目前,我正在使用两个不同的键来调整配色方案用于切换颜色方案的vim函数,vim,Vim,目前,我正在使用两个不同的键来调整配色方案 map <F8> :colors wombat256 <cr> map <F9> :colors dimtag <cr> 我的问题是ToogleDimTags()每次调用都会将光标位置重置为第一行,这是不可取的。感谢您的建议。如评论中所述,问题在于您的地图调用:执行 行为有点不同,您可能需要的是:调用: nnoremap <F5> :call ToggleDimTags() 所以:exec
map <F8> :colors wombat256 <cr>
map <F9> :colors dimtag <cr>
我的问题是
ToogleDimTags()
每次调用都会将光标位置重置为第一行,这是不可取的。感谢您的建议。如评论中所述,问题在于您的地图调用:执行
行为有点不同,您可能需要的是:调用:
nnoremap <F5> :call ToggleDimTags()
所以:execute
真正做的是计算表达式以查找字符串
它将作为Ex命令(也称为冒号命令)执行。换言之:
exec ToggleDimTags() | " <-- ToggleDimTags() is evaluated and returns 0
exec 0
现在,:h:call
:
:cal :call E107 E117
:[range]cal[l] {name}([arguments])
Call a function. The name of the function and its arguments
are as specified with |:function|. Up to 20 arguments can be
used. **The returned value is discarded**.
[...]
更新
我一直在考虑你的函数,使用三元运算符和一点
of:执行
magic,您可以将其简化到丢弃多余部分的程度
功能:
nnoremap <silent> <F9> :exec "color " .
\ ((g:colors_name == "wombat256") ? "dimtag" : "wombat256")<CR>
当g:colors\u name
设置为wombat256
时,表达式的计算结果为:
"color dimtag"
否则:
"color wombat256"
然后通过:exec
对其中任何一个进行评估。你当然可以加入队伍
(没有忘记删除反斜杠),我这样做只是为了避免
行太长。能否添加用于调用ToggleDimTags()
的:map
命令?我怀疑这可能是根本原因。请尝试:call ToggleDimTags()
@如果有效,请将其添加为答案。@sidyll有效,添加它以便我可以将其设置为answered@sidyll:请添加您的评论作为答案,以便Eric能够接受。@Eric Fortis&@yoda:谢谢,但我会为此感到难过@我想他的答案是可以接受的。让我们等一下,直到他再次登录。非常好的总结。很高兴你添加了它。啊哈@值得注意的编译器发现:-)我希望你不介意,但我代替你发布了这个答案,同时添加了一些参考书目。@Eric Fortis,我刚刚用另一种解决方案更新了答案。一点也不介意。你在评论中添加的内容比我多,你的回答比我的要有用得多。干杯
nnoremap <silent> <F9> :exec "color " .
\ ((g:colors_name == "wombat256") ? "dimtag" : "wombat256")<CR>
"color " . ((g:colors_name == "wombat256") ? "dimtag" : "wombat256")
"color dimtag"
"color wombat256"