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 扩展)
- 打开命令面板和 运行“首选项:打开键盘快捷键 (JSON)”以打开
keybindings.json
.
- 在数组末尾添加以下对象:
{
"key": "ctrl+alt+j",
"command": "editor.action.insertCursorBelow",
"when": "vim.active && editorTextFocus"
},
{
"key": "ctrl+alt+k",
"command": "editor.action.insertCursorAbove",
"when": "vim.active && editorTextFocus"
}
- 使用 Ctrl+K 打开键盘快捷键 Ctrl+S 。搜索
ctrl + alt + j
和 ctrl + alt + k
并删除任何与 Ctrl+Alt+j 冲突的键绑定 或 Ctrl+Alt+k.
结果:
使用可视块模式
移动光标到1px
.
进入视觉块模式:
<C-v>
见:help visual-mode
。
将块扩展到 5px
:
<Down><Down><Down><Down>
或:
jjjj
或:
/5p<CR>
或任何您觉得直观的东西。
请参阅 :help motion.txt
以获取一些灵感。
追加一个零:
A0<Esc>
参见 :help v_b_A
。
替换
视觉上 select 线条。
您可以使用三种视觉模式中的任何一种,没关系。
运行 select离子上的置换:
:'<,'>s/px/0&<CR>
细分:
'<,'>
是后面的命令将运行的范围。这个代表视觉 select 离子,当您在视觉模式下按 :
时,它会自动为您插入。参见 :help :range
。
s/pattern/replacement
是替换命令。参见 :help :s
。
px
是我们的格局。
0&
是替换,其中 &
代表整个匹配。在这里,我们将 px
替换为 0px
。参见 :help s/\e
。
使用搜索和点命令
跳转到第一个px
:
/px<CR>
将匹配更改为 0px
:
cgn0px<Esc>
跳转到下一场比赛:
n
重复更改:
.
根据需要重复步骤 3-4 多次。
参见 :help gn
和 :help .
。
例如,这是您的起始代码:
.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 扩展)
- 打开命令面板和 运行“首选项:打开键盘快捷键 (JSON)”以打开
keybindings.json
. - 在数组末尾添加以下对象:
{
"key": "ctrl+alt+j",
"command": "editor.action.insertCursorBelow",
"when": "vim.active && editorTextFocus"
},
{
"key": "ctrl+alt+k",
"command": "editor.action.insertCursorAbove",
"when": "vim.active && editorTextFocus"
}
- 使用 Ctrl+K 打开键盘快捷键 Ctrl+S 。搜索
ctrl + alt + j
和ctrl + alt + k
并删除任何与 Ctrl+Alt+j 冲突的键绑定 或 Ctrl+Alt+k.
结果:
使用可视块模式
移动光标到
1px
.进入视觉块模式:
<C-v>
见
:help visual-mode
。将块扩展到
5px
:<Down><Down><Down><Down>
或:
jjjj
或:
/5p<CR>
或任何您觉得直观的东西。
请参阅
:help motion.txt
以获取一些灵感。追加一个零:
A0<Esc>
参见
:help v_b_A
。
替换
视觉上 select 线条。
您可以使用三种视觉模式中的任何一种,没关系。
运行 select离子上的置换:
:'<,'>s/px/0&<CR>
细分:
'<,'>
是后面的命令将运行的范围。这个代表视觉 select 离子,当您在视觉模式下按:
时,它会自动为您插入。参见:help :range
。s/pattern/replacement
是替换命令。参见:help :s
。px
是我们的格局。0&
是替换,其中&
代表整个匹配。在这里,我们将px
替换为0px
。参见:help s/\e
。
使用搜索和点命令
跳转到第一个
px
:/px<CR>
将匹配更改为
0px
:cgn0px<Esc>
跳转到下一场比赛:
n
重复更改:
.
根据需要重复步骤 3-4 多次。
参见 :help gn
和 :help .
。