Vim-在每个字母之间插入一些内容
在vim中,我有一行文本如下:Vim-在每个字母之间插入一些内容,vim,Vim,在vim中,我有一行文本如下: abcdef qqa_<esc>lq4@q :%s/\a\zs\ze\a/_/g 现在,我想在每个字母之间添加一个下划线或其他内容,结果如下: a_b_c_d_e_f 我所知道的唯一方法是录制如下宏: abcdef qqa_<esc>lq4@q :%s/\a\zs\ze\a/_/g qqa_lq4@q 有更好更简单的方法吗?:%s/\(\p\)\p\@=/\1\ug/g :启动一个命令 %搜索整个文档 \(\p\)将匹配并
abcdef
qqa_<esc>lq4@q
:%s/\a\zs\ze\a/_/g
现在,我想在每个字母之间添加一个下划线或其他内容,结果如下:
a_b_c_d_e_f
我所知道的唯一方法是录制如下宏:
abcdef
qqa_<esc>lq4@q
:%s/\a\zs\ze\a/_/g
qqa_lq4@q
有更好更简单的方法吗?:%s/\(\p\)\p\@=/\1\ug/g
启动一个命令:
搜索整个文档%
将匹配并捕获可打印符号。例如,如果只想匹配字符,可以将\(\p\)
替换为\p
\w
执行前瞻检查,以确保匹配的(第一个)\p@=
后面是另一个\p
。第二个,即\p
不构成匹配的一部分。这很重要\p\@=
- 在替换零件中,
填写匹配的(第一个)\1
值,并且\p
是一个文本\u
- 最后一个标志,
是标准的“全部完成”标志g
:%s/\(.\(.\)\@=\)/\1_/g
这将匹配任何字符后跟任何字符,除了
换行符
如果您只想在字母之间添加。
,您可以这样做:
abcdef
qqa_<esc>lq4@q
:%s/\a\zs\ze\a/_/g
如果需要多于ASCII字母,请用其他模式替换\a
要了解这是如何工作的:
:help\a
,:help\zs
,:help\ze
,,以下是一种快速且更具交互性的方法,所有操作都在正常模式下进行
光标位于行首时,按:
i_x
插入和删除分隔符。(我们这样做是为了产生副作用。)
gp
将分离器放回原位
,按住它直到作业完成
不幸的是,我们不能在这里使用带有
的计数,因为它只会在现场粘贴分隔符“count”次。:%s/./&:/g
这将在每两个字符后为整行添加“:”。
前两个句点表示要跳过的字符数。
vim解释“&”(来自我收集的信息)以确定要添加的字符。
只需在“&”后面指示该字符即可
“/g”在全局范围内进行更改。
但是,我还没有弄清楚如何排除行的结尾,结果是插入的字符被标记到了结尾…因此类似于:
“c400ad4db63b”
变成“c4:00:ad:4d:b6:3b:”像这样的东西正是我想要的!可能添加0步骤:0。g0(或gg)“将光标引导到行(文件)的开头”