如何在Vim中的括号(或引号或…)之间进行select?
我确定曾经有过这样一个插件,但现在我需要它,我似乎无法find它(自然),所以我只会问好和简单。
什么是最简单的方法来select括号内,或报价,或一般的匹配字符列表?
write ( *, '(a)' ) 'Computed solution coefficients:'
例如,在这里,我想select(a)
或Computed solution coefficients:
。
我对多行不感兴趣,只是发生在一行上的情况。
使用任何你想要在括号内的导航键,然后你可以使用yi(
或yi)
来复制匹配的parens中的所有内容。 这也适用于方括号(如yi]
)和花括号。 除y
,还可以删除或更改文本(例如ci)
, di]
)。
我用双引号和单引号试了这个,看起来也在那里工作。 对于您的数据,我这样做:
write (*, '(a)') 'Computed solution coefficients:'
将光标移到C
,然后键入yi'
。 将光标移动到一个空白行,按p
,然后获取
Computed solution coefficients:
正如CMS指出的 ,这也适用于视觉模式select – 只要使用vi)
, vi}
, vi'
等
要select单引号之间我通常做一个vi'
(“select内部的单引号”)。
在括号内,我使用了vib
(“select inner block”)
在大括号内,你可以使用viB
(“大写B”)
为了使select“包容”(也可以select引号,括号或大括号),你可以使用a
而不是i
。
您可以阅读手册上关于文本对象select的更多信息。
这个select的方法是内置的,在Vim的帮助下很好的覆盖了。 它涵盖了XML标签等等。
请参阅:help text-objects
。
在单引号内select使用vi'
。
为了在括号内select使用vi(
。
使用箭头或hjkl
来到一个括号expression式,然后v
select视觉(即select)模式,然后%
跳转到另一个括号。
使用searchpair
内置函数在.vimrc中编写一个Vim函数:
searchpair({start}, {middle}, {end} [, {flags} [, {skip} [, {stopline} [, {timeout}]]]]) Search for the match of a nested start-end pair. This can be used to find the "endif" that matches an "if", while other if/endif pairs in between are ignored. [...]
我做了一个插件vim-textobj-quotes
: https : //github.com/beloglazov/vim-textobj-quotes
它为任何types的最接近的引号提供文本对象。 只使用iq
或aq
它允许你操作当前围绕游标的单引号('),双引号(“)或后退引号(')的内容,位于游标前面或后面(按照偏好),换句话说,当需要达到报价时,它向前或向后跳转。
通过查看示例更容易理解(光标显示为|
):
- 之前:
foo '1, |2, 3' bar
; 按下diq
:foo '|' bar
foo '|' bar
- 之前:
foo| '1, 2, 3' bar
foo| '1, 2, 3' bar
; 按下diq
:foo '|' bar
foo '|' bar
- 之前:
foo '1, 2, 3' |bar
; 按下diq
:foo '|' bar
foo '|' bar
- 之前:
foo '1, |2, 3' bar
; 在按下daq
:foo | bar
foo | bar
- 之前:
foo| '1, 2, 3' bar
foo| '1, 2, 3' bar
; 在按下daq
:foo | bar
foo | bar
- 之前:
foo '1, 2, 3' |bar
; 在按下daq
:foo | bar
foo | bar
上面的例子是针对单引号给出的,这个插件对于double(“)和back(”)引用的工作方式完全一样。
您也可以使用其他任何操作符: ciq
, diq
, yiq
, viq
等
请看上面链接的github页面以获取更多细节。
我会添加一个细节,以最多的投票答案:
如果您使用的是gvim并想要复制到剪贴板,请使用
"+<command>
要复制括号(或parens或大括号)之间的所有内容,
例如: "+yi}
将复制到剪贴板中您的光标所在花括号之间的所有内容。
vim中的一个简单的键盘映射将解决这个问题。 map viq F“lvf”hh上面这个命令将viq映射到两个键之间,用来在引号之间进行search。 replace“任何字符,并创build您的键盘映射。在启动期间粘贴在vimrc中,你应该能够每次使用它。