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。