假设我有下面的文本,光标停留在第一个A,
AAAA
BBB
CC
D
Run Code Online (Sandbox Code Playgroud)
如何在每条线的前面添加空格以使其成为可能,如果可以即时指定空格列数,那将是很好的,例如,这里有两个.
AAAA
BBB
CC
D
Run Code Online (Sandbox Code Playgroud)
我想有一种方法可以在视觉模式下快速完成,但任何想法?
目前我正在以可视模式复制第一列文本两次,并将整个两列替换为空格,这涉及> 5次击键,太麻烦了.
约束:
很抱歉,我没有明确说明问题,可能会产生一些混淆.
目标只是较大文件的一部分,因此如果A可以指定从第一个开始的行数和列数,则会很好.
编辑:
感谢@DeepYellow和@Johnsyweb,显然>}并且>ap都是我不知道的很好的提示,在我澄清我的问题的答案的具体要求之前它们都可以是有效的答案,但无论如何,@ luser droog答案是唯一可行的答案.谢谢大家!
lus*_*oog 47
我用了 :%s/^/ /
您还可以指定一系列行 :10,15s/^/ /
或相对范围 :.,+5s/^/ /
或者为位置使用正则表达式:/A/,/D/>.
为了复制代码粘贴在SO上,我通常使用来自终端的sed sed 's/^/ /' filename
我刚刚为此学到了一个新技巧.你进入视觉模式v,选择区域(使用常规移动命令),然后点击:它给你这个:
:'<,'>
Run Code Online (Sandbox Code Playgroud)
准备好只键入上述命令的命令部分,标记'<并'>自动设置为视觉选择的边界.
要选择并缩进当前段落:
vip>
Run Code Online (Sandbox Code Playgroud)
要么
vip:>
Run Code Online (Sandbox Code Playgroud)
接着是enter.
编辑:
根据注释中的要求,您还可以使用任何元字符\{n}上的正则表达式,在行的中间添加空格..
:%s/^.\{14}/& /
Run Code Online (Sandbox Code Playgroud)
这会在每条线上从左侧增加14个字符.当然%可以用以上任何指定ex命令范围的选项代替.
Nig*_*igu 27
当在第一个A上时,我将进入块可视模式ctrl-v,选择要修改的行,按I(插入带有大写的模式i),然后对第一行应用我想要的任何更改.离开可视模式esc会将第一行的所有更改应用于所有行.
可能不是最有效的击键次数,但在离开视觉模式之前为您提供所需的所有自由.当我必须在regex命令中手动指定行和列范围时,我不喜欢它.
小智 13
我想要Nigu。另一种解决方案是使用:normal:
<S-v> 进入VISUAL-LINE模式3j或jjj或/D<CR>选择行:norm I<Space><Space>,'<,'>系统会自动插入正确的范围():normal 对于这种特定情况,这可能有点过大,但有时您可能想在一系列行上执行一堆复杂的操作。