行の内容全体 (最後の改行を除く) を行自体に追加したい。ここでこの解決策を見まし:%s/$/\*/g
た:
Vimの各行の最後に文字列を追加するにはどうすればよいですか?
ただし、文字 * を行に追加しています。両方試しまし:%s/$/*/g
た:%s/$/\*/g
が同じ結果でした。
VIM を使用しています - Vi IMproved バージョン 7.3.46
PS: 新しいユーザーとして、この質問をコメントとして投稿することは許可されていないようです。ありがとう。
繰り返しになりますが、コマンドモードは非常に過小評価されています。
:t.|-j
終わり
更新私はあなたが範囲のためにこれをしたいという別のコメントで見ました。これも簡単です。下記参照
これは基本的にExと同等ですyyPJx
。
:%s
ベースの回答のように)@:
マクロやマッピングなしですぐに繰り返すことができます:)yyPJx
アプローチでは3つの個別のアンドゥステップが発生します)説明:
:t
の同義語です:copy
:j
の略です:join
:-j
の略で:-1join
、意味:前の行を後継と結合します注:先頭の空白を(のyyPgJx
代わりにyyPgJx
)保持する場合は、次を使用します。
:t.|-j!
視覚的な選択タイプで、繰り返しの更新
:'<,'>g/^/t.|-j
これは、視覚的な選択のすべての行に対してそれを繰り返します。(もちろん、:'<,'>
ビジュアルモードで自動的に挿入されます)。このアプローチのもう1つの利点は、複製する行のフィルターを簡単に指定できることです。
:g/foo/t.|-j
現在のバッファーに「foo」を含むすべての行を「複製」します(これを大量のバッファーにスケーリングするには、windo、bufdo、argdoを参照してください)。
この置換を使用できます:
:s/^.*$/&&
^.*$
.*
「行の先頭(^
)と末尾( )の間にあるもの()は何でも」を意味$
します。&
一致したテキストを表すため、行全体をそれ自体に置き換え、その後に再びそれ自体を続けます。編集
Ingoのコメントは:s/.*/&&
的確です。タイピングを減らしても同じことができます。
それ自体に追加する行に移動します。次に、次のように入力します。 0y$$p
説明:
0 - 行の先頭に移動する場合
y$ - カーソルから行の末尾まですべてをヤンクする $ - 行
の末尾に移動する場合
p - ヤンク バッファを「配置」する場合
試してみませんか: yyPJx
.
これにより、現在の行のコピーが自分自身に追加されます。
次のこともできます。
noremap ,l yyPJx
これ.vimrc
を実現するためにキーストロークをマップする場合は、.