pluvet
V2EX  ›  问与答

Vim 如何选中往后两个相同词然后批量编辑?

  •  
  •   pluvet · Apr 19, 2022 · 3386 views
    This topic created in 1668 days ago, the information mentioned may be changed or developed.

    比如我想把前三个 1 替换成 weight,在 vscode ,我会先选中第一个,然后按两次 Ctlr+D 在下一个光标重复选中,然后输入 weight 批量编辑。使用 VIM 如何操作?

    [1, 0, 0, 0, 0] [0, 1, 0, 0, 0] [0, 0, 1, 0, 0] [0, 0, 0, 0, 1] [1, 0, 0, 1, 0]

    10 replies  •  2022-04-20 12:18:01 +08:00
    PyTx
    PyTx
    Apr 19, 2022
    1
    试下 ctrl +v ,方向键往下选择,shift + i ,更改第一行,esc+w 保存
    lululau
    lululau
    Apr 19, 2022
    2
    搜 vim multi cursor
    975779964
    975779964
    Apr 19, 2022
    3
    f1sweight<Esc>;.;.

    解释,f1 找到 当前行第一个 1 的字符

    s 删除当前字符并进入编辑模式

    然后 输入 weight

    esc 退出 编辑模式

    ; 查找当前行 下一个 1 字符

    . 重复上一个编辑模式的操作

    ; 查找当前行 下一个 1 字符

    . 重复上一个编辑模式的操作

    我只会这种笨办法 ……
    pluvet
    pluvet
    OP
    Apr 19, 2022
    4
    @PyTx 万一只有一行呢?而且即便分行,要更改的也不在同一列。希望有一个比较通用的办法。

    目前自己找出一个方法,但比较繁琐,耗时增加一个数量级:

    1. 首先,按 v 进入 Visual 模式
    2. 按 `iw` 选中当前词
    3. 按 `*` 寻找相同词,光标会跳到下一个词
    4. 按 `shift+n`,回到上一个词
    5. 退出 Visual 模式
    6. 按 ciw 替换光标下的词为新词,按 esc 退出编辑
    7. 按 yw 复制光标下的新词
    8. 按 `gn` 跳到下一个词
    9. 按 `viw` 选中当前词
    10. 按 `p` 覆盖
    xlcoder166
    xlcoder166
    Apr 19, 2022
    5
    基于数据量和数据格式有:

    1. 2 楼的 vim multi cursor
    2. 3 楼的 直接操作
    3. 选择性替换
    4. 宏
    pluvet
    pluvet
    OP
    Apr 19, 2022
    6
    multi cursor 不错,不过就得额外装插件了
    SmallZheng
    SmallZheng
    Apr 19, 2022
    7
    搜索,点重复操作。 循环.
    ynyounuo
    ynyounuo
    Apr 19, 2022
    8
    :/1/|s//weight
    3@:
    ynyounuo
    ynyounuo
    Apr 19, 2022
    9
    *2@:
    DrakeXiang
    DrakeXiang
    Apr 20, 2022
    10
    之前查类似的问题看到的就是搜索替换了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   3776 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 09:57 · PVG 17:57 · LAX 01:57 · JFK 04:57
    ♥ Do have faith in what you're doing.