我想从来没有人问过这个问题。
假设您只想选择 import
之后的变量文本中每行(设置、过滤器、用户、国家/地区、收藏夹)上的单词:
import settings from './settings';
import filters from './filters';
import user from './user';
import countries from './countries';
import favorites from './favorites';
我试图将光标放在 settings
的开头字,按C-V4jE
但不是成功。我也尝试在进入 VISUAL BLOCK
后申请 REGEX模式,某事喜欢
/\w\s
但产生相同的结果(固定列长度的文本块):settings
filters f
user from
countries
favorites
我期望在 Vim 上做的结果是这样的:settings
filters
user
countries
favorites
我想我在 VS Code 上看到了这个功能,但是在多次搜索之后我在 Google 上找到了关于这个解决方案的 0 个结果,每个人都只展示了如何选择固定列长度的文本或者只是说使用 $
这仅适用于您要选择到行尾的文本。有人知道吗?谢谢!
最佳答案
这是视觉- 区块模式:您选择的是整个块,而不是它的任意子集或超集。
“视觉选择”多个任意长度的非连续文本片段不是内置方法可以完成的,因此您可以尝试某种“多光标”插件或以不同方式解决您的问题......
例如,如果您想将这些单词括在大括号中,因为它们不再是默认导出,您可以执行以下操作:
:'{,'}norm wciw{ <C-v><C-r>" }<CR>
其中普通模式命令wciw{ <C-v><C-r>" }
:w
将光标移动到下一个单词, ciw
更改内部单词, {
, <C-r>"
插入未命名寄存器的内容( <C-v>
用于插入文字 ^R
), }
, 在
'{,'}
范围内的每一行上执行,代表当前段落。或者,根据您的评论,如果您想提取这些词以备后用,您可以执行以下操作:
qaq
:'{,'}norm w"Ayiwh"Ayiw
哪里注册a
用 qaq
清除和正常模式命令 w"Ayiwh"Ayiw
:w
将光标移动到下一个单词, a
与 "Ayiw
, h
将光标移动到前面的空格, a
与 "Ayiw
, 在
'{,'}
范围内的每一行上执行,代表当前段落。随着时间的推移,这些事情会自然而然地发生。
关于vim - 如何使用VISUAL BLOCK选择不同大小的单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68146473/