【问题标题】:Vim -- detecting ex mode in vimrcVim -- 在 vi​​mrc 中检测 ex 模式
【发布时间】:2015-08-08 17:26:38
【问题描述】:

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

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

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

同样适用于 nvi 的解决方案会很好,但不是必需的。

【问题讨论】:

  • 如果这两个编辑器实际上是两个编辑器,那么我可以分别配置它们。

标签: vim configuration text-editor vi line-numbers


【解决方案1】:

你可以试试这样的:

let &number = mode(1) ==# 'ce'
nnoremap <silent> Q :set number<CR>Q

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

【讨论】:

  • 这在切换到 ex 模式和使用例如启动编辑器时有效。 vim -e(或只是ex),正如你所说。但它不会在(重新)进入视觉模式时调用set nonumber
  • @Kusalananda:是的,这就是我上面所说的:当您切换回视觉时,number 不会被清除。我不知道如何检测到视觉的切换。
【解决方案2】:

Vim 的 Autocmd 似乎是您最好的选择,因为它有事件监听器。一个例子是

:autocmd InsertLeave * :set nonumber
:autocmd InsertEnter * :set number

显示/隐藏行号

但是,当我查看时,我找不到任何用于 Ex 模式的 events

【讨论】:

  • 是的,这看起来是一个好的开始,但正如你所说,进入 ex 或 visual 模式没有任何事件。
猜你喜欢
  • 1970-01-01
  • 2016-02-29
  • 2019-05-23
  • 1970-01-01
  • 2011-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-17
相关资源
最近更新 更多