[解決済み】Vimで2つの複数行のテキストブロックをマージする方法は?
質問
Vimで2つの行のブロックをマージしたいのですが、つまり、行を取る
k
を通して
l
の行に追加してください。
m
を通して
n
. 擬似コードでの説明がお好みなら
[line[k+i] + line[m+i] for i in range(min(l-k, n-m)+1)]
.
例えば
abc
def
...
123
45
...
になるはずです。
abc123
def45
一行ずつ手作業でコピー&ペーストすることなく、これを行う良い方法はないでしょうか?
どのように解決するのですか?
ブロックモード選択で)1回のコピー&ペーストで全部できるのは確かですが、あなたが望んでいるのはそれではないでしょう。
もし、これを 例 コマンド
:5,8del | let l=split(@") | 1,4s/$/\=remove(l,0)/
を変換します。
work it
make it
do it
makes us
harder
better
faster
stronger
~
に入っています。
work it harder
make it better
do it faster
makes us stronger
~
UPDATEです。 これだけのアップヴォートを得た回答は、もっと徹底的な説明が必要です。
Vimでは、パイプ文字(
|
) を使って、複数のExコマンドを連結することができます。
:5,8del
:let l=split(@")
:1,4s/$/\=remove(l,0)/
多くのExコマンドは、プレフィックス引数として行の範囲を指定することができます。
5,8
の前に
del
と
1,4
の前に
s///
は、コマンドがどの行で動作するかを指定します。
del
は、指定された行を削除します。 これは、レジスタ引数を取ることができますが、引数が与えられない場合、無名のレジスタに行をダンプします。
@"
通常モードでの削除と同様です。
let l=split(@")
で、削除された行をリストに分割し、デフォルトの区切り文字である空白を使用します。 削除された行に空白があるような入力に対して正しく動作させるには、次のようにします。
more than
hour
our
never
ever
after
work is
over
~
が2つのリスト要素に分割されるのを防ぐために、別のデリミタを指定する必要があります。
let l=split(@","\n")
.
最後に、代入で
s/$/\=remove(l,0)/
というように、各行の最後を置き換えます (
$
という式の値に置き換えてください。
remove(l,0)
.
remove(l,0)
はリストを変更します。
l
で、その最初の要素を削除して返します。これにより、削除された行を読んだ順番に置き換えることができます。代わりに、削除された行を逆順に置き換えるには
remove(l,-1)
.
関連
-
[解決済み] Vimエディタを終了するにはどうすればよいですか?
-
[解決済み] Vimで文字を改行で置き換える方法
-
[解決済み] Vimで大文字小文字を区別しない検索をする方法
-
[解決済み] Vimで行全体を複製する方法は?
-
[解決済み] vimにテキストをペーストする際の自動インデントをオフにする
-
[解決済み] Vimで行末に移動するにはどうしたらいいですか?
-
[解決済み] vimのレジスタはどのように使うのですか?
-
[解決済み] Vimのコマンドラインにヤンクのテキストを貼り付ける方法
-
[解決済み】vimの「sudoで書く」トリックはどうやるの?
-
[解決済み】Vimで複数のファイルを効率的に操作する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] vimで開いたファイルを間違ったユーザーで保存するにはどうしたらいいですか?[クローズド]です。
-
[解決済み] vimで開いているファイルのディレクトリに新規ファイルを作成する?
-
[解決済み】Vimでexpandtabオプションがオンのとき、タブ文字を挿入する方法
-
[解決済み】挿入モードでのテキストの走査について
-
[解決済み】VIMがファイル末尾に改行を追加するのを止めるには?
-
[解決済み】Vimの場合、なぜ୧⃛(๑⃙⃘◡̈๑⃙⃘)୨⃛は改行されるの?
-
[解決済み】タブのファイルからNERDTreeにジャンプバックする方法は?
-
[解決済み】Vimで削除(カットではない)する方法は?
-
[解決済み】Vimで、一連の行にマクロを適用するにはどうすればいいですか?
-
[解決済み】Vim/Viで、カーソルを前の単語の末尾に移動させる方法は?