我确定曾经有过这种插件的插件,但现在我需要它,我似乎无法找到它(自然而然),所以我只会问好看和简单。
在括号,引号或匹配字符列表之间选择最简单的方法是什么?
write ( *, '(a)' ) 'Computed solution coefficients:'
例如,我在此处选择(a)
或Computed solution coefficients:
。
我对多线感兴趣,只是在一条线上发生的情况。
答案 0 :(得分:255)
使用您想要进入括号内的任何导航键,然后您可以使用yi(
或yi)
复制匹配的parens中的所有内容。这也适用于方括号(例如yi]
)和花括号。除了y
之外,您还可以删除或更改文字(例如ci)
,di]
)。
我尝试使用双引号和单引号,它似乎也在那里工作。对于您的数据,我这样做:
write (*, '(a)') 'Computed solution coefficients:'
将光标移至C
,然后键入yi'
。将光标移动到空白行,点击p
,然后获取
Computed solution coefficients:
作为CMS noted,这也适用于视觉模式选择 - 只需使用vi)
,vi}
,vi'
等。
答案 1 :(得分:238)
要在单引号之间进行选择,我通常会vi'
(“选择内部单引号”)。
在括号内,我使用vib
(“选择内部块”)
在花括号块中,您可以使用viB
(“大写B”)
要选择“包含”(也请选择引号,括号或大括号),您可以使用a
代替i
。
您可以详细了解手册中的Text object selections或vim中的:help text-objects
。
答案 2 :(得分:27)
这种选择方法是内置的,并且在Vim帮助中有很好的介绍。它涵盖了XML标签等。
请参阅:help text-objects
。
答案 3 :(得分:19)
要在单引号内选择,请使用vi'
。
要在括号内选择,请使用vi(
。
答案 4 :(得分:7)
使用箭头或hjkl
转到其中一个包围表达式,然后v
选择可视(即选择)模式,然后%
跳转到另一个括号。
答案 5 :(得分:3)
使用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.
[...]
答案 6 :(得分:2)
我会在最投票的答案中添加一个细节:
如果您正在使用gvim并希望复制到剪贴板,请使用
"+<command>
复制括号(或parens或花括号)之间的所有内容
例如:"+yi}
会将光标所在的花括号之间的所有内容复制到剪贴板。
答案 7 :(得分:1)
我制作了一个插件vim-textobj-quotes
:https://github.com/beloglazov/vim-textobj-quotes
它为最接近的任何类型的引号对提供文本对象。仅使用iq
或aq
,它允许您操作当前围绕光标的单个(&#39;),双(&#34;)或后面(?)引号的内容,位于光标前面或后面(按优先顺序排列)。换句话说,当需要达到报价时,它会向前或向后跳跃。
通过查看示例(光标显示为|
)更容易理解:
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
上面的例子是针对单引号给出的,插件的工作方式与double(&#34;)和back(`)引用完全相同。
您还可以使用任何其他运算符:ciq
,diq
,yiq
,viq
等。
请查看上面链接的github页面了解更多详情。
答案 8 :(得分:-6)
vim中的简单键映射可以解决此问题。 map viq F“lvf”hh 上面的命令将viq映射到用于在引号之间搜索的键。将“替换为任何字符并创建您的键盘映射。 在启动期间将其粘贴在vimrc中,您应该每次都能使用它。