首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查视觉模式

检查视觉模式
EN

Stack Overflow用户
提问于 2012-04-09 12:39:10
回答 3查看 2.5K关注 0票数 10

在vimscript中检出哪个可视模式当前处于活动状态(可视还是可视块)的最佳方法是什么?

我读过关于mode()的文章,但我无法使它发挥作用。

echo mode()不适合我

if mode() == "v"也不适合我。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 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",以检查分块视觉模式。

票数 9
EN

Stack Overflow用户

发布于 2013-11-10 13:09:23

雷蒙已经在评论中说过了,但我不太清楚。我就是这样看到结果的:

代码语言:javascript
复制
function! F()
    normal! gv
    throw mode()
endfunction
vnoremap <F9> <ESC>:call F()<CR>

进入不同的视觉模式,然后点击F9查看。

我需要抛出,因为-- VISUAL --行包含任何回显消息。有人能在视觉模式下回音吗?

通常,当您需要mode()时,我认为最好的做法是创建两个不同的映射,然后是两个执行完全不同的事情的不同函数:

代码语言:javascript
复制
function! Fnorm()
endfunction

function! Fvis()
endfunction

nnoremap <F9> :call Fnorm()<CR>
nnoremap <F9> <ESC>:call Fvis()<CR>gv

或者一个函数,并根据映射给它提供不同的参数:

代码语言:javascript
复制
function! F(param)
endfunction

nnoremap <F9> :call F(1)<CR>
nnoremap <F9> <ESC>:call F(2)<CR>gv

另一个相关的技巧是,如果你想在视觉模式下做什么,比如移动光标。我所能做的就是:

代码语言:javascript
复制
function! Fvis()
    normal! gv
    cursor(1, 1)
endfunction

nnoremap <F9> <ESC>:call Fvis()<CR>gv
票数 1
EN

Stack Overflow用户

发布于 2021-04-06 03:58:09

老问题。通过DDG搜索来到这里。

函数模式在vimscript中不工作。

有一个新函数视觉模式,用于vimscript函数中。它返回最后使用的视觉模式。所以要检查块视觉模式..。

代码语言:javascript
复制
if visualmode() == "\<C-V>"
   " we are in visual block mode
endif
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10073294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档