web-dev-qa-db-ja.com

2つの垂直ブロックをvimとマージする

私は2つのファイルを持っています

file1.txt
a =
b =

file2.txt
1
2

Gvimを使用してそれらをマージし、出力が次のようになるようにすることはできますか?
a = 1
b = 2

4
simplfuzz

垂直ブロックをヤンクする:例を選択します。 file2.txtの行 CTRLv、とヤンク yfile1.txtの最初の行の終わりに移動した後に貼り付けます p

GNUスタックでvimを実行する場合は、pasteプログラムを使用して同じことを行うこともできます。-dを使用して、区切り文字を指定します。ファイルのフィールド間で使用します。

paste -d "" 1 2 > merged.txt
7

純粋なvimでも動作します:

 % vim -O file1.txt file2.txt  # open both files vertically splitted

次に、file1.txtで、ブロックを名前付きレジスタにヤンクします。たとえば、「a」と言います。

  • gg ファイルの先頭に移動
  • ctrlv ブロックモードの選択に移動
  • G 最後の行に移動
  • $ 最後の行の最後の文字に移動します
  • "ay 'a'を登録するためのヤンク

次に、file2.txtに切り替えて、次の手順を実行します。

  • gg ファイルの先頭に移動
  • "aP レジスタ「a」の内容をテキストの前に貼り付けます
1
akira

また、Linuxでコマンド:readを使用して、あるファイルのテキストを別のファイルに貼り付けることもできます。次に例を示します。

どちらの場合も、ファイルのセクションに配置して実行した後、最初にvimでファイルを開きます。

:read file1.txt

または

: 読んだ! cat file1.txt

2つ以上のファイルのコンテンツを結合するのに非常に便利です...

unixまたはLinuxで作業している場合は、pasteコマンドを使用するだけです。

:%!paste-file2.txt

これは、クラシックviでも機能するか、コマンドラインから直接機能します。

$ペーストfile1.txtfile2.txt> out.txt

お役に立てれば

0
kdo