Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

[自分メモ]vim 差分を目視しながらファイル間コピペ

$
0
0

違うファイルから内容を一部コピーして持ってきたいメモ

設定

 今いる階層: /common/hoge/piyo
 コピペ元ファイルがある階層: /common/geho/piyo
 ファイル名: file.txt (適当)

普通に複数のファイルを開く方法

 vimではファイルを開くときに、引数を後ろに追加していくことが可能とのこと。
vim file.txt file2.txt file3.txt
 普通にfile.txtだけを開いたときと見た目が変わらないが、:nで次の引数、:prevで前の引数にと、vimを起動し直さずにファイルを移動することができます。設定の状況だとこう:
vim ../../geho/piyo/file.txt file.txt
vimは起動し直すと、ヤンク(コピー)が50行までしか保持されないので、広範囲をコピペしたいときはこのようにファイルを開くのがよさげです。参考:teratail - Vimでヤンクした内容がファイルをまたぐと50行までしか保持されていない。
 私は色々なことを知らなかったので、いちいちコピペ元を:e file.txtしてからヤンクして、:q!とかで終わらせて、それからコピペ先を:e file.txtして挿入したいところにpで貼り付けようとしては、200行ぐらいコピったのになんで50行なのふえぇ……:pig2::sweat_drops:ということになっていました。

もっとわかりやすく作業したい

 隣で並べながら作業できたらいいなという願いと、差分を見られたらいいなという願いがありました。そこで、:vsplitのようなコマンドが便利だとわかりました。
 まずコピペ元を開きます。
vim ../../geho/piyo/file.txt
image
 それから、画面を分割した上で、コピペ先のファイルを開きます。
:vsplit file.txt
image
 このぐらい短い内容ならそのままでもコピペ作業して大丈夫そうですが、diffthisで差分にマークもできます。既存の記事に、vsplitの機能と共に紹介されています:Qiita - vimですでに開いているファイルと別ファイルとの差分を表示する方法
 私は、前項のような複数ファイルを開く方法を覚えても、中身が長かったり部分的にコピペするとき、似たようなコンポーネントの記述が続いていたりすると、進んで戻ってしているときにどこからどこまでをコピペしたらよいのかの判断がつきにくくなり、テキスト/コードエディタから2つのファイルを開いて手作業でやった方が早いんじゃないの!?:thought_balloon: となってしまいました。

基礎的なところ:how to ヤンク

 ノーマルモードの状態で、コピりたい最初の行にカーソルを合わせてms、最後の行でmeとタイプ後、:'s,'eyでコピーができます。それからペーストしたい場所にカーソルを合わせてノーマルモードでpです。なお、範囲指定で削除の時は、:'s,'edです。

 


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>