私は2つのファイルで作業しています、私は1つのファイルから数行をコピーして別のファイルに貼り付ける必要があります。同じファイルに(yy)と(p)をコピーする方法を知っています。しかし、それは異なるファイルに対してはうまくいきません。
また、カットペーストする方法はありますか?グーグルを試したことがありますが、ほとんどのリソースはコピー&ペーストについてのみ説明しています。
テキストを切り取る方法はすでにわかっているので、ここに別のファイルに貼り付けるためのいくつかのアイデアを示します。
:e /path/to/other/file
)内から2番目のファイルを開き、それを貼り付けます分割ウィンドウで両方のファイルを一緒に開き、を使用してそれらの間を移動します Ctrl + w、 Up/Down どちらかによって:
vi -o /path/to/file1 /path/to/file2
WindowsでVIMを使用している場合は、次のコマンドを使用してクリップボードにアクセスできます(MSコピー/ペースト)。
"*dd - 線を切る(または3行に切るには3dd)
"*yy - 1行コピーする(3行コピーする場合は3yy)
"*p - カーソルの後の行に行を貼り付ける
"*P - カーソルの前の行に行を貼り付ける
これにより、別々のVIMウィンドウ間、またはVIMとPCアプリケーション(メモ帳、Wordなど)の間に貼り付けることができます。
カットするにはd
のようなdd
のバリエーションを使います。
ある範囲の行を別のファイルに書き込むには、次のようにします。
:<n>,<m> w filename
<n>
と<m>
は、行の範囲を示す数字(または記号)です。
デスクトップのクリップボードを使用するには、+g
コマンドを見てください。
これを行う1つの方法があります。
両方のファイルを表示可能にすることもできます。画面を次のように分割します。 CTRL + ws
切断は、 d カットしたものをヤンクバッファに入れる。 dd 行を「カット」します。
他のファイルを開き、:r file_to_be_copied_from
と入力します。またはあなたがバッファすることができます。または、最初のファイルに移動し、コピーする行に移動して"qY
と入力し、貼り付けるファイルに移動して"qP
と入力します。
"
buffer_name、バッファにコピーします。 Y
はヤンク、P
はputです。それが役立つことを願っています!
これらはすべて素晴らしい提案ですが、別のファイル内のテキストの場所を知っている場合は、sedを簡単に使用してください。 :r! sed -n '1,10 p' < input_file.txt
これはすでに開いているファイルの現在のカーソル位置に10行挿入します。
ファイルを編集しているときに、開始と終了を使用したい場所にマークを付けます。
ma
- a
マークを設定します
mb
- b
マークを設定します
それから、それを別のファイルにコピーするには、w
コマンドを使います。
:'a,'bw /name/of/output/file.txt
これらのリマップは私にとって魅力的なように機能します。
vmap <C-c> "*y " Yank current selection into system clipboard
nmap <C-c> "*Y " Yank current line into system clipboard (if nothing is selected)
nmap <C-v> "*p " Paste from system clipboard
したがって、ビジュアルモードに入っているときに、必要な行を選択し、Ctrl + Cを押してからCtrl + Vを押して、受信側ファイルにテキストを挿入します。あなたは "* yを使うこともできますが、これを覚えるのは難しいと思います。
これはテキストをvimからクリップボードにコピーするのにも便利です。
出典: http://vim.wikia.com/wiki/Copy_and_paste_between_sessions_using_a_temporary_file
201705アップデート:
次の行をあなたのvimrcファイルに追加すれば、
set clipboard =無名
それからVIMはシステムクリップボードを使用しています
異なるVIMインスタンスウィンドウ間でコンテンツをコピーする方法では、ヤンクウェイがうまくいかないことがわかりました。 (少なくとも、それは私のVIM知識に基づいては機能しません。それを機能させる他の方法があるかどうかはわかりません)。
ヤンクウェイは私のテストによると同じウィンドウで複数のファイルが開かれる方法でのみ機能します。
それをしたい場合は、ctrl + x、ctrl + c(Windowsの場合)のようなOSのカット - コピー - 過去の方法を使用したほうがよいでしょう。
ここでは簡単な答えを見つけていないので、自分で投稿します。
目標:あるファイルを別のファイルに保存する。
解決策:
選択したテキストを新しいファイルに保存します。タイプ :wSpace そして新しいファイルの名前。実際に見るでしょう
:'<,'>w new.txt
その後を押します Enter
VIMの同じインスタンスで開かれている2つのバッファ(==ファイル)間でテキストをコピーしても問題ありません。 y (あなたが以前にビジュアルモードでコピーする領域をマークしたと仮定して)それからもう一方のバッファに貼り付けます。 p。同じVIMのインスタンスにある限り、異なるタブでも機能します。
VIMの同じインスタンスで2つのファイルを開く方法は、システムによって異なります。
vim file1 file2
でそれを達成することができます--remote-silent
オプションを指定してください。VIMの2つの異なるインスタンスで2つのファイルを開いた場合は、システムクリップボードを使用する必要があります。最初のVIMでは、"+y
を使用してテキストをシステムクリップボードにヤンクします。次に、2番目のVIMに移動して、クリップボードをそこに貼り付けます:"+p
。
私のシナリオでは、ファイル1からファイル2に、途中でn行、不明なn行をコピーする必要がありました。
:'a,'bw /name/of/output/file.txt
例:fileAとfileB - ファイルの25行目から開始し、50行をコピーしてfileNに貼り付ける
fileA
Goto 25th line
25G
copy 50 lines into buffer v
"v50yy
Goto fileB
:e fileB
Goto line 10
10G
paste contents of buffer v
"vp
コマンドモードを入力して実行
:r! sed -n '<start_line_num>, <end_line_num> p' file_to_extract_text_from
filename
から20-30
行を現在開いているファイルに抽出するE.g
:r! sed -n '20, 30p' filename
ファイルの一部をコピーしてその内容を別のファイルの途中に貼り付ける場合は、この方法を使用できます。
:linenumber,linenumber write newfile
例:
:2,34 write temp1
または
:'mark, 'mark write newfile
例:
:'a,'b write temp1
これで行は別のファイルにコピーされました。コピー後にそれらの行を削除したい場合は、
:linenumber1,linenumber2 d
または
:'mark1,'mark2 d
さて、他のファイルに行きます。次に、貼り付けたい行にカーソルを置きます。
タイプ
:r!cat temp1
これで、一時ファイルの内容がここに貼り付けられました。内容を貼り付けた後、コマンドライン自体から一時ファイルを削除できます。
:!rm temp1
これを何度もコピー&ペーストしたい場合に役立ちます。
もう1つの方法は、2つの分割バッファで2つのファイルを開き、目的の行を視覚的に選択した後に次の「スニペット」を使用することです。
:vnoremap <F4> :y<CR><C-W>Wr<Esc>p
下記のオプションは、ほとんどの場合、また後で貼り付ける場合にも有効です。
"xnyy
x - buffer name
n - number of line to Yank - optional
ヤンクした行はバッファ'x'
に格納されます。編集のどこでも使用できます。
他のファイルに行を貼り付けるには、
:e filename&location
例:現在の編集で下記のコマンドを入力します
:e /u/test/Test2.sh
and paste using "xP
P - before cursor
p - after cursor
完了操作
ファイル1を開く:
vi Test1.sh
a10yy
-Yanked 10 lines
- 現在の編集から2番目のファイルを開く
*:e /u/test/Test2.sh*
- 貼り付けが必要な行にカーソルを移動します
*"ap*
- バッファ'*a*'
からの行は現在のカーソル位置の後にコピーされます
:echo has('clipboard')
は1
を返すべきです0
を返すなら(例えばOSX、少なくともEl Capitan、Mavericks、そしてMountain Lion - クリップボードをサポートしていないVimバージョンが付属しています)、brew install vim
経由でVimバージョンをインストールする必要があります。インストール後の端末)P: