繁体   English   中英

vi VIM如何为自己添加线路?

[英]vi VIM How to append line to itself?

我想将行的整个内容(不包括结尾换行符)附加到行本身。 我看到了这个解决方案:%s/$/\\*/g这里: 如何在Vim中每行的末尾添加一个字符串?

但它将字符*附加到行上。 我尝试了两个:%s/$/*/g:%s/$/\\*/g但结果相同。

我正在使用VIM - Vi IMproved版本7.3.46

PS:看来,作为新用户,我不允许将此问题作为评论发布。 谢谢。

再一次,命令模式被大大低估了:

:t.|-j

DONE

更新我在另一条评论中看到你想要为一个范围做这个。 这也很容易。 见下文

这基本上是防爆相当于yyPJx

  1. 它不会破坏任何寄存器
  2. 不会移位“0-”9寄存器
  3. 不会影响当前的搜索和/或搜索历史记录(例如:%s基于:%s的答案)
  4. 可以通过执行@:立即重复@: - 没有宏,没有映射:)
  5. 将导致原子撤销(而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 - 用于“放置”猛拉缓冲区

你为什么不试试: yyPJx

这会将当前行的副本附加到它的自身。

你甚至可以:

noremap ,l yyPJx

.vimrc如果要映射击键来完成此操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM