Vim: 在同一列插入多行

Vim: Insert at same column across multiple lines

例如,这是您的起始代码:

.pt-1 {padding-top: 1px}
.pt-2 {padding-top: 2px}
.pt-3 {padding-top: 3px}
.pt-4 {padding-top: 4px}
.pt-5 {padding-top: 5px}

您想将每个数字从 n 更改为 n0(例如,1px -> 10px)。 结果应该是这样的:

.pt-1 {padding-top: 10px}
.pt-2 {padding-top: 20px}
.pt-3 {padding-top: 30px}
.pt-4 {padding-top: 40px}
.pt-5 {padding-top: 50px}

我习惯了 VS Code,通常你可以放置多个光标并使用 ctrl+alt[=31 同时键入所有内容=] 和 向下箭头

在 Vim 中你会怎么做?

注意: 这是不是这个问题:Vim: insert the same characters across multiple lines(但我希望它是...)

我问的是如何在多行的同一位置执行此操作,这个问题是针对行的开头说的。

使用替代命令。您可以将其锚定在 px:

:%s/px/0px/

这是我映射 Ctrl+Alt+j 以在下方添加光标和 Ctrl+Alt+k 在正常模式下在上方添加光标。 (我假设您使用的是 VSCodeVim 扩展)

  1. 打开命令面板和 运行“首选项:打开键盘快捷键 (JSON)”以打开 keybindings.json.
  2. 在数组末尾添加以下对象:
  {
    "key": "ctrl+alt+j",
    "command": "editor.action.insertCursorBelow",
    "when": "vim.active && editorTextFocus"
  },
  {
    "key": "ctrl+alt+k",
    "command": "editor.action.insertCursorAbove",
    "when": "vim.active && editorTextFocus"
  }
  1. 使用 Ctrl+K 打开键盘快捷键 Ctrl+S 。搜索 ctrl + alt + jctrl + alt + k 并删除任何与 Ctrl+Alt+j 冲突的键绑定Ctrl+Alt+k.

结果:

使用可视块模式

  1. 移动光标到1px.

  2. 进入视觉块模式:

    <C-v>
    

    :help visual-mode

  3. 将块扩展到 5px:

    <Down><Down><Down><Down>
    

    或:

    jjjj
    

    或:

    /5p<CR>
    

    或任何您觉得直观的东西。

    请参阅 :help motion.txt 以获取一些灵感。

  4. 追加一个零:

    A0<Esc>
    

    参见 :help v_b_A

替换

  1. 视觉上 select 线条。

    您可以使用三种视觉模式中的任何一种,没关系。

  2. 运行 select离子上的置换:

    :'<,'>s/px/0&<CR>
    

    细分:

    • '<,'>是后面的命令将运行的范围。这个代表视觉 select 离子,当您在视觉模式下按 : 时,它会自动为您插入。参见 :help :range
    • s/pattern/replacement是替换命令。参见 :help :s
    • px是我们的格局。
    • 0& 是替换,其中 & 代表整个匹配。在这里,我们将 px 替换为 0px。参见 :help s/\e

使用搜索和点命令

  1. 跳转到第一个px:

    /px<CR>
    
  2. 将匹配更改为 0px:

    cgn0px<Esc>
    
  3. 跳转到下一场比赛:

    n
    
  4. 重复更改:

    .
    
  5. 根据需要重复步骤 3-4 多次。

参见 :help gn:help .