![](/img/trans.png)
[英]Replace segment of text, across multiple lines between two strings - regex
[英]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和Down Arrow放置多个光标并同时键入所有内容。
您将如何在 Vim 中执行此操作?
注意:这不是这个问题: Vim:在多行中插入相同的字符(但我希望它是......)
我在问如何在多行的同一位置执行此操作,这个问题是针对行的开头。
将 cursor 移动到1px
。
进入视觉块模式:
<Cv>
请参阅:help visual-mode
。
将块扩展到5px
:
<Down><Down><Down><Down>
或者:
jjjj
或者:
/5p<CR>
或者任何你觉得直观的东西。
请参阅:help motion.txt
以获得一些灵感。
Append 一个零:
A0<Esc>
请参阅:help v_b_A
。
视觉上 select 线条。
您可以使用三种视觉模式中的任何一种,没关系。
对选择运行替换:
:'<,'>s/px/0&<CR>
分解:
'<,'>
是后面的命令将运行的范围。 这代表视觉选择,当您在视觉模式下按下:
时,它会自动为您插入。 请参阅: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.
.
使用替换命令。 您可以将其锚定在px
上:
:%s/px/0px/
这是我在正常模式下映射Ctrl + Alt + j以在下方添加 cursor 和Ctrl + Alt + k以在上方添加 cursor 的方式。 (我假设您使用的是VSCodeVim扩展)
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 + alt + j
和ctrl + alt + k
并删除任何与Ctrl + Alt + j或Ctrl + Alt + k冲突的键绑定。结果:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.