Vim——检测vimrc中的ex模式

Vim——检测vimrc中的ex模式,vim,configuration,text-editor,vi,line-numbers,Vim,Configuration,Text Editor,Vi,Line Numbers,我以前在comp.editors中问过这个问题,但没有得到任何答复 这应该很简单:我想将vim配置为每当编辑器处于ex模式时设置编号(以获取可见的行号),但永远不要在可视模式下设置该选项。怎么做 如果解决方案涉及必须启动ex而不是vim,这很好,但理想情况下,解决方案还应涵盖从可视模式进入ex模式的情况(例如,在vim可视模式中使用Q) 一个同样适用于nvi的解决方案是不错的,但不是必需的 Vim的Autocmd似乎是您最好的选择,因为它有事件侦听器。例如 :autocmd InsertLeav

我以前在
comp.editors
中问过这个问题,但没有得到任何答复

这应该很简单:我想将vim配置为每当编辑器处于ex模式时设置编号(以获取可见的行号),但永远不要在可视模式下设置该选项。怎么做

如果解决方案涉及必须启动ex而不是vim,这很好,但理想情况下,解决方案还应涵盖从可视模式进入ex模式的情况(例如,在vim可视模式中使用Q)


一个同样适用于nvi的解决方案是不错的,但不是必需的

Vim的Autocmd似乎是您最好的选择,因为它有事件侦听器。例如

:autocmd InsertLeave * :set nonumber
:autocmd InsertEnter * :set number
其中显示/隐藏行号


但是,当我查看时,找不到任何适用于Ex模式的选项。

您可以尝试以下内容:

let&number=模式(1)=#“ce”
nnoremap Q:集合编号Q

当您运行
vim-e
和使用Q进入
ex
模式时,这将设置
number
,但当您返回到视觉模式时,它不会清除。据我所知,没有办法检测切换模式的实际事件。耸耸肩

是的,这看起来是一个好的开始,但正如你所说,没有进入ex或视觉模式的事件。这在切换到ex模式和使用例如
vim-e
(或只是
ex
)启动编辑器时起作用,正如你所说。但它不会在(重新)进入视觉模式时调用
set nonnumber
。@Kusalananda:是的,这就是我上面说的:
number
在切换回视觉模式时不会被清除。我不知道如何检测切换到visual。如果这两个编辑器实际上是两个编辑器,那么我可以分别配置它们。