4

I have 2 files

file1.txt
a =
b =

file2.txt
1
2

Can I merge them using gvim so that the output looks like :
a = 1
b = 2

1

4 Answers 4

7

Yank a vertical block: Select e.g. the lines in file2.txt with CTRLv, yank with y and paste after moving to end of the first line in file1.txt with p.

If you run vim on a GNU stack you could also use the paste program to do the same. Use -d to specify what delimiter to use between the fields from the files.

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

if you're working on Unix or Linux, just use the paste command:

:%!paste - file2.txt

this also works in the classic vi, or direct from the command line:

$ paste file1.txt file2.txt >out.txt

Hope, this helps

1

works with pure vim as well:

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

then in file1.txt yank the block to a named register, lets say 'a':

  • gg go to begin of file
  • ctrlv go to select block mode
  • G go to last line
  • $ go to last character on last line
  • "ay yank to register 'a'

then switch over to file2.txt and do a:

  • gg go to begin of file
  • "aP paste content of register 'a' before text
0

Also could you on Linux use the command :read for paste text of one file to other file, for example:

Both case, first open a file with vim, after you positions in a section of the file and execute:

:read file1.txt

or

: read! cat file1.txt

It´s very useful for join content of two or more files...

1
  • This doesn't answer the question. Your answer is about cut/paste, while the question is very clearly about merging. Please read the questions carefully and avoid posting unrelated information. Jan 26, 2017 at 23:18

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .