在vimscript中检出哪个可视模式当前处于活动状态(可视还是可视块)的最佳方法是什么?
我读过关于mode()的文章,但我无法使它发挥作用。
echo mode()不适合我
if mode() == "v"也不适合我。
发布于 2012-04-09 14:29:40
请看mode()的帮助。有关部分:
v Visual by character V Visual by line CTRL-V Visual blockwise
您需要检查mode() == "\<C-V>" (文字^V字符),而不是mode() == "v",以检查分块视觉模式。
发布于 2013-11-10 13:09:23
雷蒙已经在评论中说过了,但我不太清楚。我就是这样看到结果的:
function! F()
normal! gv
throw mode()
endfunction
vnoremap <F9> <ESC>:call F()<CR>进入不同的视觉模式,然后点击F9查看。
我需要抛出,因为-- VISUAL --行包含任何回显消息。有人能在视觉模式下回音吗?
通常,当您需要mode()时,我认为最好的做法是创建两个不同的映射,然后是两个执行完全不同的事情的不同函数:
function! Fnorm()
endfunction
function! Fvis()
endfunction
nnoremap <F9> :call Fnorm()<CR>
nnoremap <F9> <ESC>:call Fvis()<CR>gv或者一个函数,并根据映射给它提供不同的参数:
function! F(param)
endfunction
nnoremap <F9> :call F(1)<CR>
nnoremap <F9> <ESC>:call F(2)<CR>gv另一个相关的技巧是,如果你想在视觉模式下做什么,比如移动光标。我所能做的就是:
function! Fvis()
normal! gv
cursor(1, 1)
endfunction
nnoremap <F9> <ESC>:call Fvis()<CR>gvhttps://stackoverflow.com/questions/10073294
复制相似问题