如何使用vim向非空行添加字符
我有一个文本文档,其中有空行和以大写月份开头的行 我想在每个非空行的开头加上“-” 我试过这个:如何使用vim向非空行添加字符,vim,Vim,我有一个文本文档,其中有空行和以大写月份开头的行 我想在每个非空行的开头加上“-” 我试过这个: 1,$s/^[A-Z]/- / 并删除当月的第一个字母(例如,应为“-June”时的“-une”) 我怎样才能把那封信加回去?或者有一个“更好”的方法来做一个大文件,我需要保持空白行未被触摸。 试试这个,它会给你想要的 %s/^[A-Z]/- &/ 或者使用:g: :g/^[A-Z]/s/^/- / 试试这个,它会给你想要的 %s/^[A-Z]/- &/ 或者使用:g: :
1,$s/^[A-Z]/- /
并删除当月的第一个字母(例如,应为“-June”时的“-une”)
我怎样才能把那封信加回去?或者有一个“更好”的方法来做一个大文件,我需要保持空白行未被触摸。 试试这个,它会给你想要的
%s/^[A-Z]/- &/
或者使用:g
:
:g/^[A-Z]/s/^/- /
试试这个,它会给你想要的
%s/^[A-Z]/- &/
或者使用:g
:
:g/^[A-Z]/s/^/- /
您有一个答案,要么将匹配的文本添加回,要么在替换过程中避免完全匹配文本。另一种方法是将匹配指定为零宽度,或设置匹配的结尾,以便匹配但不替换文本:
%s/^[A-Z]\@=/- /
或
请参见
:help zero width
,:help/\@=
,:help/\ze
,您得到的答案要么将匹配的文本重新添加,要么在替换过程中避免完全匹配文本。另一种方法是将匹配指定为零宽度,或设置匹配的结尾,以便匹配但不替换文本:
%s/^[A-Z]\@=/- /
或
请参见
:help zero width
,:help/\@=
,:help/\ze
,或者如果更容易记住,\0
与替换部分中的&
几乎相同。vimgolf:如果行确实是空的,那么我们可以使用
,因此:%s/^.-&
或者如果更容易记住,\0
与替换零件中的&
几乎相同。vimgolf:如果行是真正的空白,那么我们可以使用
,因此:%s/^./-&
两个答案都有效,我感谢这一个答案中的帮助和解释。两个答案都有效,我很感激这篇文章中的帮助和解释。