vi/vim 替代 sublimetext 的“扩展选择范围”

vi/vim 替代 sublimetext 的“扩展选择范围”

Sublime Text 有一个很酷的功能叫做“扩大选择范围SHIFT+CMD+空格选择范围内的所有内容。

它选择范围内的所有内容,完美运行 ( ) 或 [ ] 或 { } 重复它将范围扩展到其父级。

我希望使用 vim 实现同样的效果。

答案1

如果您的意思是vim您可以使用视觉模式(:help visual-mode)和文本对象(:help text-objects)来做到这一点。

要选择花括号内的块,请执行以下操作:++ v,要选择封闭的块,请重复+ 。请注意,您可以选择仅使用而不是选择括号内的内容。a{a{ia

这些命令与 vim 中的许多其他命令一样,由一个操作和文本对象组成,其中文本对象可以添加一个数字,以包含受该操作影响的更多对象。因此,您也可以通过替换为 来删除对象,v或者d将其更正为c等。

()除了、{}和之外,还有很多其他的文本对象,[]例如:

  • a+w表示一个单词。
  • a+s表示一个句子。
  • a+p表示一个段落。
  • a+<表示<>块。
  • a+'表示单引号字符串。
  • a+"表示双引号字符串。

您可能还对以下方面感兴趣环绕插件允许您添加/替换/删除周围的字符甚至标签。

答案2

vim-expand-region 插件允许将视觉选定区域扩展/缩小为(可配置的)文本对象集。即,您可以先选择一个变量,然后是赋值,然后是块,然后是函数,等等。

答案3

只是在 2020 年更新了这个答案,希望有人觉得这有用。如果你使用共轭亚油酸我希望您使用它在 vim/neovim 中添加 Intellisense。

从它的自述文件中您可以绑定 Ctrl-S 来扩展选择

" Use CTRL-S for selections ranges.
" Requires 'textDocument/selectionRange' support of LS, ex: coc-tsserver
nmap <silent> <C-s> <Plug>(coc-range-select)
xmap <silent> <C-s> <Plug>(coc-range-select)

因此,您只需按下Ctrl-s,它就会将选择范围扩展到当前范围,然后重复调用它只会将范围扩大一个。截至撰写本文时,这仅适用于 Typescript/JavaScript。

相关内容