我想将行的全部内容(不包括结束换行符)附加到行本身。我在这里看到了这个解决方案:%s/$/\*/g
:
如何在 Vim 的每一行末尾添加一个字符串?
但它将字符 * 附加到行中。我尝试了两者:%s/$/*/g
,:%s/$/\*/g
但结果相同。
我正在使用 VIM - Vi 改进版 7.3.46
PS:看来,作为新用户,我不允许在此处发表此问题作为评论。谢谢。
再一次,命令模式被大大低估了:
:t.|-j
完毕
更新我在另一条评论中看到您想对某个范围执行此操作。这也很容易。见下文
这基本上是 Ex 等价于yyPJx
except
:%s
基于答案)@:
- 没有宏,没有映射:)yyPJx
方法将导致 3 个单独的撤消步骤)解释:
:t
是同义词:copy
:j
简称:join
:-j
是 的缩写:-1join
,意思是:将上一行与它的后继连接起来注意:如果您想保留前导空格(例如yyPgJx
代替yyPgJx
),请使用:
:t.|-j!
使用视觉选择类型更新重复
:'<,'>g/^/t.|-j
对视觉选择中的每一行重复它。(当然:'<,'>
是在可视模式下自动插入)。这种方法的另一个好处是您可以轻松地指定要复制哪些行的过滤器:
:g/foo/t.|-j
将“复制”当前缓冲区中包含“foo”的所有行(请参阅windo、bufdo、argdo 以将其扩展到大量缓冲区而不会出汗)。
您可以使用此替换:
:s/^.*$/&&
^.*$
表示“无论 ( .*
) 位于行的开头 ( ^
) 和结尾 ( $
) 之间”。&
表示匹配的文本,所以我们用它自己替换整行,然后再替换它自己。编辑
Ingo 的评论很到位::s/.*/&&
用更少的打字做同样的事情。
转到要附加到自身的行。然后输入: 0y$$p
解释:
0 - 到行
首 y$ - 将光标处的所有内容拉到行尾
$ - 到行尾
p - “放置” yank 缓冲区
你为什么不试试:yyPJx
。
这会将当前行的副本附加到其自身。
你甚至可以:
noremap ,l yyPJx
如果你.vimrc
想映射一个击键来完成这个。