我敢肯定曾经有一个用于这种东西的插件,但现在我需要它,我似乎(自然)找不到它,所以我只想问得好简单。
在括号、引号或通常匹配字符列表之间进行选择的最简单方法是什么?
write ( *, '(a)' ) 'Computed solution coefficients:'
例如,在这里我想选择(a)
, 或Computed solution coefficients:
.
我对多行不感兴趣,只对发生在一行上的情况感兴趣。
我敢肯定曾经有一个用于这种东西的插件,但现在我需要它,我似乎(自然)找不到它,所以我只想问得好简单。
在括号、引号或通常匹配字符列表之间进行选择的最简单方法是什么?
write ( *, '(a)' ) 'Computed solution coefficients:'
例如,在这里我想选择(a)
, 或Computed solution coefficients:
.
我对多行不感兴趣,只对发生在一行上的情况感兴趣。
要在单引号之间进行选择,我通常会执行一个vi'
(“选择内部单引号”)。
在括号块内,我使用vib
("select inner block")
在花括号块内,您可以使用viB
(“大写 B”)
要使选择“包含”(还选择引号、括号或大括号),您可以使用a
而不是i
.
您可以在手册中或在 vim中阅读有关Text 对象选择的更多信息。:help text-objects
使用您想在括号内获取的任何导航键,然后您可以使用yi(
或yi)
复制匹配括号内的所有内容。这也适用于方括号(例如yi]
)和花括号。除了y
,您还可以删除或更改文本(例如ci)
,di]
)。
我用双引号和单引号试过这个,它似乎也可以在那里工作。对于您的数据,我这样做:
write (*, '(a)') 'Computed solution coefficients:'
将光标移动到C
,然后键入yi'
。将光标移动到空白行,点击p
,然后获取
Computed solution coefficients:
正如CMS 所指出的,这也适用于可视模式选择 - 只需使用vi)
, vi}
,vi'
等。
这种选择方法是内置的,并且在 Vim 帮助中有详细介绍。它涵盖了 XML 标记等。
见:help text-objects
。
对于在单引号内选择,请使用vi'
.
对于括号内的选择,请使用vi(
.
使用箭头或hjkl
到达其中一个括号表达式,然后v
选择视觉(即选择)模式,然后%
跳转到另一个括号。
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.
[...]
我会在投票最多的答案中添加一个细节:
如果您正在使用 gvim 并想复制到剪贴板,请使用
"+<command>
复制括号(或括号或大括号)之间的所有内容
例如:"+yi}
将光标所在大括号之间的所有内容复制到剪贴板。
我做了一个插件vim-textobj-quotes
:https ://github.com/beloglazov/vim-textobj-quotes
它为任何类型的最接近的引号对提供文本对象。使用 onlyiq
或aq
它允许您对当前围绕光标、位于光标前面或后面(按优先顺序)的单引号 (')、双引号 (") 或反引号 (`) 的内容进行操作. 换句话说,它在需要到达引号时向前或向后跳跃。
通过查看示例更容易理解(光标显示为|
):
foo '1, |2, 3' bar
; 按下后diq
:foo '|' bar
foo| '1, 2, 3' bar
; 按下后diq
:foo '|' bar
foo '1, 2, 3' |bar
; 按下后diq
:foo '|' bar
foo '1, |2, 3' bar
; 按下后daq
:foo | bar
foo| '1, 2, 3' bar
; 按下后daq
:foo | bar
foo '1, 2, 3' |bar
; 按下后daq
:foo | bar
上面的示例是针对单引号给出的,该插件对双引号 (") 和反引号 (`) 的工作方式完全相同。
您还可以使用任何其他运算符:ciq
、diq
、yiq
、viq
等。
请查看上面链接的 github 页面以获取更多详细信息。
我想补充已经很好的答案。我来这里是为了寻找一种方法来更改 html 括号内的文本,所以我想为其他也在寻找它的人提供一个答案。
您可能认为ci<
会起作用,但实际上只有当您位于其中一个标签内时才会起作用:
<would work inside here> But not here </would work inside here>
我想要的是更改 html 标签本身之间的文本:
<div>change me</div>
我想要的是“更改内部标签”:cit
感谢另一个提到文档(:help text-objects
)的答案,这就是我找到所需内容的方式。
vim 中的一个简单的键盘映射可以解决这个问题。map viq F”lvf”hh 上述命令将 viq 映射到键以在引号之间进行搜索。将 " 替换为任何字符并创建您的键盘映射。在启动期间将其粘贴在 vimrc 中,您应该可以每次都使用它。