选择模式是什么,何时与选择模式相关?


36

我无意中gh以正常模式按下并开始选择,因此我查找了文档并找到了:h Select-mode

据我了解,选择模式与视觉模式很接近,除了:

  • 输入一个可打印的字符,<CR>或者<BS>将删除选择,开始插入模式,然后用输入替换选择。
  • hjkl 其他正常或视觉模式的移动将不会扩展选择范围,除非它们带有前缀 <Shift>
  • <CTRL-O><CTRL-G>将切换到视觉模式。
  • 该文档还说明了以下内容,如果我理解正确,则意味着可以进行按行选择,然后按特征进行处理:

    在“选择”模式下使用运算符并且选择是按行选择时,将对选定的行进行操作,但与按字符选择一样。例如,当删除整行时,可以稍后将其粘贴到一行的中间。

我有点困惑,因为我不明白为什么要创建此模式:我所看到的就是它不如可视模式方便,并且不提供更多功能。

另外,我所做的所有搜索都给出了在可视模式下进行选择的结果,但不考虑选择模式。

所以我的问题是:

  • 为什么创建选择模式?
  • 与可视模式相比,它有什么优势?
  • 使用选择模式更有趣的用例是什么?

MetaNote我不知道哪个标签与此问题相关,请根据需要随时重新标签。


对我来说,这听起来像大多数GUI编辑器所期望的。(选择一行并不意味着它将在粘贴时移至新行,Shift +箭头将其扩展,键入替换选择,这是我希望从记事本中得到的所有内容)。
muru

@muru:我同意它使人想起了这种编辑器,但这是否意味着已经实施了该模式,只是为了取悦一些希望将Vim用作较差的文本编辑器的用户?实际上,这对我来说似乎很奇怪。
statox

实际上,该粘贴属性在某些情况下很有用。我确定有人在这里发布了有关粘贴的问题。至于覆盖,它可以节省击键次数(您不必按c),因此根据您要执行的操作,选择模式可能会有用。可惜我一直忘了它。
大师

我将尝试找到这个问题。对于覆盖,我真的不觉得这c是保存的击键,因为选择不像在可视模式下那样方便(因为您不能使用eiw直接使用)。
statox

1
您说对了:当'selectmode'包含mouse'mouse'包含当前模式的标志时,用鼠标选择将启动选择模式(根据文档)。
statox

Answers:


23

选择模式的全部要点是提供一种类似于常规编辑器中使用的选择行为。

同时,还有一个mswin.vim,它更改了许多选项和映射,使Vim像是常规编辑器。

我只能假设添加这些是为了取悦一部分Vim用户,可能是在Vim移植到Windows时(我在文档中对Windows感到有些不屑)。

无论如何,选择模式对于摘要扩展插件至关重要,可以被滥用以获取乐趣和收益:

nnoremap § *``gn<C-g>
inoremap § <C-o>gn<C-g>
snoremap <expr> . @.

2
我认为在Windows上移植Vim并创建这种模式来取悦用户非常令人惊讶:如果他们想要“经典”编辑器,为什么他们会使用Vim呢?但这似乎是唯一的解释。。。我也不是很了解您的映射的好处:据我所知,一旦您完成了映射,为什么选择了光标下方的单词呢?有用?
statox

1
选择单词后,键入一些内容,然后按§选择下一个出现的单词,键入其他内容然后再按§一次选择下一个出现的单词,依此类推。您可以按.重复上一次插入。它是“点公式”的一种变体。
romainl 2015年

我还是不明白。选择行为以哪种方式更像常规编辑器?
still_dreaming_1 2016年

7
@ still_dreaming_1,在常规编辑器中,键入foo并选择它。您不需要按任何键来替换选择的内容,对吗?这就是选择模式所模拟的。
romainl '16

1
@romainl您输入的那个“双S”字符是什么?您如何键入该字符?
迈克尔
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.