2つのファイルを使用していますが、1つのファイルから数行をコピーして、別のファイルに貼り付ける必要があります。同じファイルにコピー(yy)と貼り付け(p)する方法を知っています。しかし、それは別のファイルでは機能しません。これはどのように行われますか?
また、カットアンドペーストする方法はありますか?グーグルを試しましたが、ほとんどのリソースはコピー&ペーストについてのみ説明しています。
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-線をカットします(または3ddで3本の線をカットします)
"*yy--行をコピーします(または3行をコピーする場合は3yy)
"*p -カーソルの後の行に行を貼り付けます
"*P -カーソルの前の行に行を貼り付けます
別々のVimウィンドウ間またはVimとPCアプリケーション(メモ帳、Microsoft Wordなど)間で貼り付けることができます。
カットするd
ようなのバリエーションを使用してください。dd
ある範囲の行を別のファイルに書き込むには、次を使用できます。
:<n>,<m> w filename
ここ<n>
で、および<m>
は行の範囲を指定する数字(または記号)です。
デスクトップクリップボードを使用するには、+g
コマンドを確認してください。
他のファイルを開いて、と入力できます:r file_to_be_copied_from
。または、バッファリングすることもできます。または、最初のファイルに移動し、コピーする行に移動して入力"qY
し、貼り付けたいファイルに移動して入力します"qP
。
"
buffer_name、バッファにコピーします。Y
ヤンクでP
置かれます。お役に立てば幸いです。
これを行う1つの方法があります。
両方のファイルを表示することもできます。Ctrlたとえば+で画面を分割しますw s。
カットに関しては、dカットして、カットしたものをヤンクバッファーに入れます。dd線を「カット」します。
これらはすべて素晴らしい提案ですが、別のファイル内のテキストの場所がわかっている場合は、sedを簡単に使用してください。:r! sed -n '1,10 p' < input_file.txt
これにより、すでに開いているファイルのカーソルの現在の位置に10行が挿入されます。
2017-05アップデート:
次の行をvimrcファイルに追加すると、
クリップボードを設定=名前なし
次に、Vimはシステムクリップボードを使用しています。
異なるVimインスタンスウィンドウ間でコンテンツをコピーする方法では、ヤンクの方法が機能しないことがわかりました。(少なくとも、私のVimの知識に基づいては機能しません。それを機能させる別の方法があるかどうかはわかりません)。
私のテストによると、ヤンクの方法は、同じウィンドウで複数のファイルを開く方法でのみ機能します。
これを実行したい場合は、Ctrl+ x、Ctrl+ c(Windowsの場合)などのOSのカットコピーと過去の方法を使用することをお勧めします。
ファイルを編集しているときに、開始と終了を使用する場所にマークを付けます
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を押して、受信者ファイルにテキストを挿入します。「*y」も使用できますが、覚えにくい場合もあると思います。Ctrlv
これは、Vimからクリップボードにテキストをコピーする場合にも役立ちます。
PS:
set mouse+=a
することができます.vimrc
-余分な要素(行番号など)を選択せずに、マウスを使用してVimで行を選択できるようになります注意:マウスで選択したテキストをコピーする機能がブロックされますVimからシステムクリップボードに。目標:あるファイルの一部を別のファイルに保存します。
解決策:
選択したテキストを新しいファイルに保存します。: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行目でfileAから開始し、50行をコピーして、fileBに貼り付けます。
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
以下のオプションは、ほとんどの場合、また後で貼り付ける場合にも機能します。
"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*'
、現在のカーソル位置の後にコピーされます
ファイルの一部をコピーして、そのコンテンツを別のファイルの途中に貼り付ける場合は、この方法で行うことができます。
: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
コマンドモードに入り、実行します
:r! sed -n '<start_line_num>, <end_line_num> p' file_to_extract_text_from
たとえば、現在開いているファイルに行20-30
を抽出しますfilename
:r! sed -n '20, 30p' filename
あなたの:を設定viminfo
します.vimrc
set viminfo=%,<1000,'10,/50,:100,h,f0,n~/.viminfo
~/.viminfo
これにより、 Vimを終了したときに、ファイル内に最大1,000行のヤンクされたもの(「レジスタ」)が保持されます。Vimを起動すると復元されるので、別のファイルに貼り付けることができます。
セッション間で持続する可能性のある他のすべてのものについては、viminfo
ドキュメントを参照してください。