繁体   English   中英

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 + altDown Arrow放置多个光标并同时键入所有内容。

您将如何在 Vim 中执行此操作?

注意:这不是这个问题: Vim:在多行中插入相同的字符(但我希望它是......)

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

使用视觉块模式

  1. 将 cursor 移动到1px

  2. 进入视觉块模式:

     <Cv>

    请参阅:help visual-mode

  3. 将块扩展到5px

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

    或者:

     jjjj

    或者:

     /5p<CR>

    或者任何你觉得直观的东西。

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

  4. Append 一个零:

     A0<Esc>

    请参阅:help v_b_A

有替换

  1. 视觉上 select 线条。

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

  2. 对选择运行替换:

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

    分解:

    • '<,'>是后面的命令将运行的范围。 这代表视觉选择,当您在视觉模式下按下:时,它会自动为您插入。 请参阅: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. .

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

:%s/px/0px/

这是我在正常模式下映射Ctrl + Alt + j以在下方添加 cursor 和Ctrl + Alt + k以在上方添加 cursor 的方式。 (我假设您使用的是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冲突的键绑定。

结果:

结果

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM