vim - 如何使用VISUAL BLOCK选择不同大小的单词?

标签 vim

我想从来没有人问过这个问题。
假设您只想选择 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
    
    哪里注册aqaq 清除和正常模式命令 w"Ayiwh"Ayiw :
  • 使用 w 将光标移动到下一个单词,
  • 将其附加到寄存器 a"Ayiw ,
  • 使用 h 将光标移动到前面的空格,
  • 将其附加到寄存器 a"Ayiw ,

  • '{,'} 范围内的每一行上执行,代表当前段落。
    随着时间的推移,这些事情会自然而然地发生。

    关于vim - 如何使用VISUAL BLOCK选择不同大小的单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68146473/

    相关文章:

    vim - 如何粘贴指定行号的寄存器内容?

    vim - 如何结合 vim wiki 插件的两个功能?

    vim - 在没有 vimrc 的情况下启动 vim/使用打开的文件更改 vimrc

    linux - 我想在linux中通过vim blowfish2加密来保护配置文件

    vim - 更智能的 Vim 恢复?

    Vim:在编辑器中运行命令而不是退出

    vim - 复制一个单词,然后粘贴一个单词

    vim缩进: don't remove tabs indent when closing }

    vim - 使用 ":"使 vim 始终处于命令行模式

    vim - 如何让 Vim 在插入模式下自动进入成对的字符?