【问题标题】:Vim: Insert at same column across multiple linesVim:跨多行插入同一列
【发布时间】:2021-06-05 16:42:07
【问题描述】:

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

.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向下箭头同时键入所有内容.

你会如何在 Vim 中做到这一点?

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

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

【问题讨论】:

    标签: visual-studio-code vim


    【解决方案1】:

    带视觉块模式

    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. 直观地选择线条。

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

    2. 对所选内容运行替换:

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

      细分:

      • '&lt;,'&gt; 是后面的命令将运行的范围。这个代表视觉选择,当您在视觉模式下按: 时,它会自动为您插入。见:help :range
      • s/pattern/replacement 是替换命令。见:help :s
      • px 是我们的模式。
      • 0&amp; 是替换,&amp; 代表整个匹配。在这里,我们将px 替换为0px。见:help s/\e

    使用搜索和点命令

    1. 跳转到第一个px

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

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

      n
      
    4. 重复更改:

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

    请参阅 :help gn:help .

    【讨论】:

    • 完美!这正是我想要的。
    【解决方案2】:

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

    :%s/px/0px/
    

    【讨论】:

      【解决方案3】:

      这是我如何映射 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+jCtrl冲突的键绑定>+Alt+k.

      结果:

      【讨论】:

        猜你喜欢
        • 2012-03-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-08-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多