如何在 Vim 中的括号(或引号或...)之间进行选择?
-
21-08-2019 - |
题
我确信曾经有一个用于此类东西的插件,但现在我需要它,我似乎无法找到它(自然),所以我只会问一个简单的问题。
在括号、引号或匹配字符列表之间进行选择的最简单方法是什么?
write ( *, '(a)' ) 'Computed solution coefficients:'
例如,这里我想选择 (a)
, , 或者 Computed solution coefficients:
.
我对多行不感兴趣,只对发生在一行上的情况感兴趣。
解决方案
使用任何导航键,你想要得到的括号内,那么你可以使用yi(
或yi)
到匹配的括号内的所有内容复制。这也适用于方括号(例如yi]
)和大括号。除了y
,也可以删除或更改文本(例如ci)
,di]
)。
我试图与双和单引号和它出现在那里工作,以及。为您的数据,我做的:
write (*, '(a)') 'Computed solution coefficients:'
将光标移至C
,然后键入yi'
。将光标移动到一个空行,击中p
,并获得
Computed solution coefficients:
其他提示
要的单引号我通常一个vi'
(“选择内单引号”)之间选择
里面一个括号块,我使用vib
( “选择内部块”)
里面一个大括号块可以使用viB
( “资本B”)
要进行的选择“包容性”(也选择了引号,括号或大括号),可以使用a
代替i
。
可以阅读有关文本对象选择的手册上的或者VIM内:help text-objects
。
选择的该方法内置和很好地覆盖在Vim的帮助。它涵盖XML标签和其他。
请参阅:help text-objects
。
有关单引号内选择使用vi'
。
有关括号使用vi(
内选择。
使用箭头或hjkl
去的包围表达式之一,然后v
选择视觉(即选择)模式,然后%
跳转到其他托架。
使用searchpair
内置函数写入一个Vim函数中的.vimrc:
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
它为任何类型的最接近的引号对提供文本对象。仅使用 iq
或者 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
, , ETC。
请查看上面链接的 github 页面以了解更多详细信息。
在vim一个简单的键映射将解决这个问题。 地图言语智商F” LVF” HH 上面这条命令映射到VIQ键引号之间进行搜索。替换“以任何字符,并创建你的键盘布局。 启动过程中的vimrc坚持这一点,你应该能够每次使用它。