V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
pluvet
V2EX  ›  问与答

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

  •  
  •   pluvet · 2022-04-19 17:32:41 +08:00 · 1486 次点击
    这是一个创建于 730 天前的主题,其中的信息可能已经有所发展或是发生改变。

    比如我想把前三个 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 条回复    2022-04-20 12:18:01 +08:00
    PyTx
        1
    PyTx  
       2022-04-19 17:45:45 +08:00
    试下 ctrl +v ,方向键往下选择,shift + i ,更改第一行,esc+w 保存
    lululau
        2
    lululau  
       2022-04-19 17:46:26 +08:00
    搜 vim multi cursor
    975779964
        3
    975779964  
       2022-04-19 17:49:31 +08:00
    f1sweight<Esc>;.;.

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

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

    然后 输入 weight

    esc 退出 编辑模式

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

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

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

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

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

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

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

    1. 2 楼的 vim multi cursor
    2. 3 楼的 直接操作
    3. 选择性替换
    4. 宏
    pluvet
        6
    pluvet  
    OP
       2022-04-19 18:15:51 +08:00
    multi cursor 不错,不过就得额外装插件了
    SmallZheng
        7
    SmallZheng  
       2022-04-19 18:26:36 +08:00
    搜索,点重复操作。 循环.
    ynyounuo
        8
    ynyounuo  
       2022-04-19 18:48:13 +08:00
    :/1/|s//weight
    3@:
    ynyounuo
        9
    ynyounuo  
       2022-04-19 18:48:31 +08:00
    *2@:
    DrakeXiang
        10
    DrakeXiang  
       2022-04-20 12:18:01 +08:00
    之前查类似的问题看到的就是搜索替换了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2981 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 15:03 · PVG 23:03 · LAX 08:03 · JFK 11:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.