viエディターで貼り付け内容をコピーする方法


165

私が使用してみましたCtrl+をVviエディタの文書の内容を貼り付けるために、しかしCtrl+ Vペーストとして解釈されません。


16
ただし、Viを使用する主な理由は、Vimがインストールされていないためです。Vimがインストールされている場合は、代わりにそれを使用する価値があります。Viには、Unixのすべてのインストールに既に存在するという点以外に、実際には利点はありません。私の意見では、Vimを習得する最良の方法は、ターミナルエミュレータ(Vim内からではなく)を開いて、「vimtutor45分ほどで使用可能な場所に高速化する」と入力することです。
ベンモルデカイ

1
+1 @BenMordecai-便利なサブシェル機能を含むvi(古いものから)に既に慣れていましたが、その更新が必要でした。素晴らしいチュータリング。風のようにそれを通過しました。ありがとう。
Cbhihe 14年

回答:


192

まず、編集モードになっていることを確認します(を押しますi)。次のようなターミナルエミュレータを使用している場合は、Ctrl+ Shift+ Vで貼り付けることができますgnome-terminal(または右クリックメニューから[貼り付け]を選択します)。

また:set paste、貼り付ける前にvimを入力して自動インデントなどを無効にすることもできます。その後:set nopaste、コンテンツを貼り付けた後。

詳細については、stackoverflow.comでこの質問も確認してください。

vim(クリップボードの内容を貼り付けるのではなく)行をコピー/貼り付けする場合は、yankコマンドをチェックアウトします。ここに役立つチートシートがあります。


1
マウスカーソルをオンにしている場合、Ctrl + Shift + Vを使用して貼り付けることはできません。
アルビンウォン

14
ご注意ください、I大文字と小文字は区別されます。小文字iは、挿入モードに入る通常の方法です。Capital Iは、カーソルを行の先頭に移動し、挿入モードに入ります。
ベンモルデカイ

64

Vi(およびVim)の動作は、Geditなどの通常のテキストエディターとは大きく異なります。また、非常に急な学習曲線もあります。いくつかの基本的なコマンドを学習したい場合は、このインタラクティブなチュートリアルから始めてください

ただし、質問に答えるために。システムクリップボードのコンテンツには、プラスレジスタからアクセスできます。そのため、システムクリップボードから何かを貼り付けるには、通常モードから次のボタンを押します"+p(同時にではなく、次から次へ)。


3
これは今まで知りませんでした。また、さらにもう1つのすばらしいvimチュートリアルをリンクするための+1。
アッティラO.

19
エディターの学習曲線といえば、「いくつかの一般的なエディターの古典的な学習曲線」、blog.thilelli.net / public / store / attached / curves.jpgがあります。
-hlovdal

GNOMEターミナルでは、コピーと貼り付けのショートカットは、それぞれCtrl-Shift-CとCtrl-Shift-Vです。
フリム

1
順番に<kbd> "</ kbd>、<kbd> + </ kbd>および<kbd> p </ kbd>、さらに<kbd>" </ kbd>および<kbd> p < / kbd>そして何も起こりませんでした。私が間違ったことは何ですか?私が使用しviていないvim
user907860

1
それが正しい答えです。例えばを使用して Ctrl-Shift-vは、最も単純なコンテンツでのみ機能します(端末にいる場合、改行を使用するとインデントが実際に間違ってしまい、使用するのを忘れてしまいますset :paste)。
rsenna

29
  1. 同じファイル内の貼り付け内容をコピーする場合は、とを使用yankpasteます。

  2. 内容をターミナル間でコピーする場合は、最初のファイルを開き、目的のテキストをヤンクしてから、vim内で2番目のファイル(例:)を開き、:tabnew /path/to/second/fileを押しpて貼り付けます。

  3. 貼り付け内容をvimから外部プログラムにコピーする場合は、システムクリップボードにアクセスする必要があります。Ubuntuを使用すると仮定します。GUIバージョンのvimは常にクリップボードをサポートしていますが、ターミナルからVimを使用する場合は、X11クリップボードのサポートを確認する必要があります。

    コンソールから次を入力します。

    $ vim --version | grep xterm
    

    -xterm_clipboardが見つかった場合、2つのオプションがあります。

    1)xterm_clipboardフラグをオンにしてvimを自分でコンパイルする

    2)vimをアンインストールし、代わりにgvim(vim-gtkまたはvim-gnome)をインストールします。以前と同じ方法で、ターミナルからvimを呼び出すことで、非GUI vimに固執することができます。今回チェックすると、+ xterm_clipboradが見つかるはずです

    あなたはいくつかのテキストをヤンクする場合さて、+あなたのvimエディタ(例えば「+ YY)の内側に登録し、それはまた、あなたが使用して、geditのエディタのような外部プログラムから取得することができ、システムのクリップボードにコピーされますCtrl+をV

  4. コンテンツを外部プログラムからvimに貼り付けたい場合は、まずCtrl+を使用してテキストをシステムクリップボードにコピーしC、次にvimエディター挿入モードで、マウスの中央ボタン(通常はホイール)をクリックするか、Ctrl+ Shift+ Vを押して貼り付けます。

    これらは、vimに関連する4つの基本的なコピー&ペースト条件です。これがお役に立てば幸いです。


:tabnew / path / to / second / fileのポイントは何ですか?:vi / path / to / second / fileを指定して2番目のファイルを開き、その中に貼り付け(p / P)すると、最初のファイルをヤンク/コピー/カットするのとまったく同じことが実現できます。少なくとも私の場合は...または、+ xterm_clipboard vim機能が有効になっているからですか?それとも、それだけではなく、タブニューするべきものがありますか?
Cbhihe 14年

1
Ubuntuにvim-gtkxterm_clipboardサポートがあり、Fedoraにはサポートxvimがあります。
icc97

18

ターミナルにテキストを貼り付けるときは、常にShift+ を使用しInsertます。すべてのターミナルプログラムで動作します。

(これはInsert、セカンダリキーを押さないと押せないラップトップを手に入れない理由でもあります)


2
Vi/ Vim!=ターミナル;)
0xC0000022L

1
わかりましたが、それでも動作します:)
マグナスジョンソン

このため+1は...あなたは何を言って実行するために使うのですかCtrl+ACtrl+Cまた?
アラップラクシット

DE内で端末を使用する場合、通常はマウスでテキストを選択し、Ctrl + Shift + Cでコピーします。
マグナスジョンソン

Shift + Insertはgvimでも機能します。(Ubuntu 13.10を実行していますが、それが違いを
生む

10

マウスの中央ボタンを使用して、他の場所で強調表示したテキストを挿入します。

システムクリップボードにアクセスできない場合に便利です(たとえば、リモートSSHセッションで)。

Vimの編集/挿入モードである必要があります。


6

viに入ったら、を押しiて挿入モードに入り、ターミナルを右クリックして、貼り付けをクリックします。


小文字だと思ったi。大文字Iは何をしますか?
フリム

@Flimmは、別の回答に関するBen Mordecaiのコメントで既に説明されています。
sierrasdetandil

回答を小文字に編集しましたi。大文字Iは、挿入モードに入る前にカーソルを行の先頭に移動しますが、ここでは必要ありません。
フリム

6

yankおよびを使用してviのテキスト行をコピー/貼り付ける詳細な手順put

(vi のコマンドモードで次を使用します)

コピー(YANK)

viで1行をコピーするには:

  • コマンドモードで、カーソルをコピーする必要がある行に移動し、入力yyまたは入力しますY

viで2行をコピーするには:

  • コマンドモードで、コピーする必要がある最初の行にカーソルを移動し、入力2yyまたは入力します2Y

(同様に、任意の数の行をコピーできます)

現在の場所からファイルの最後まですべての行をコピーするには:

  • コマンドモードで、コピーする必要がある最初の行にカーソルを移動し、入力します yG

現在の場所から現在の単語の末尾にすべてのテキストをコピーするには:

  • コマンドモードで、テキストをコピーする必要がある場所にカーソルを移動し、入力します yw

すべてのテキストを現在の場所から行末までコピーするには:

  • コマンドモードで、テキストをコピーする必要がある場所にカーソルを移動し、入力します y$

貼り付け(PUT)

クリップボードにテキストを貼り付けるには- カーソルの位置のに:

  • コマンドモードで、次を入力します。 p

クリップボードにテキストを貼り付けるには- カーソルの位置のに:

  • コマンドモードで、次を入力します。 P

1

Vimのインストールがクリップボードをサポートしいないため、問題が発生しました。

vim --version | grep clip
-clipboard       +insert_expand   +path_extra      +user_commands
+emacs_tags      -mouseshape      +startuptime     -xterm_clipboard

クリップボードをサポートするvim-gnomeをインストールしてから、もう一度確認しました。

vim --version | grep clipboard
+clipboard       +insert_expand   +path_extra      +user_commands
+emacs_tags      +mouseshape      +startuptime     +xterm_clipboard

これで、それぞれ「+ y」と「+ p」を使用してコピーと貼り付けができるようになりました。


これで問題が解決しました!
アストロフアンル

1

LinuxまたはMacでVim 8+を使用すると、OSのネイティブペースト(ctrl+shift+VLinux、cmd+VMac)を簡単に使用できます。i挿入モードの場合は押さないでください。

OSクリップボードの内容を貼り付け、自動インデントを追加せずにスペースとタブを保持します。それは古いと同等だ:set pasteictrl+shift+Vesc:set nopaste方法。

もうvim機能+clipboard+xterm_clipboardvim機能をインストールする必要はありません。この機能は「ブラケットペースト」と呼ばれます。詳細については、https://stackoverflow.com/questions/2514445/turning-off-auto-indent-when-pasting-text-into-vim/56781763#56781763を参照してください


それが私が探している答えです。Vimはgnu / linuxディストリビューションではデフォルトではないため、ubuntuでもインストールする必要があります。さらに、Viのアップダウンボタンは、ubuntuおよびハイライトでは機能しません。
itsnotmyrealname

0

ルートの場合:Ctrl+ Shift+V

root以外の場合:マウスを中央クリックします。


0

Windows上でGit Bashを介してVimを使用するpと、挿入モードにならずにマウスを使用または中央クリックすることができます。PuTTYを介し Vimを使用すると、右クリックできます。そして、強調表示はコピーを行います。

これがUbuntuのSEであることに気付かずにここに来たので、私はこれに注意しました。

その他の役立つコマンド:

  • yy(行数)-ヤンク(コピー)
  • dd(行数)-削除
  • p -現在の行の下に行を貼り付けます
  • Shift+ p-現在の行の上に行を貼り付け
  • u -元に戻す
  • r -やり直し
  • i -挿入モード
  • v -視覚モード

Windows Git Bashでそれはうまくいきませんでした。どのコンソールを使用していますか、minttyまたはwindows cmd?
ウィスバッキー

私はそれがミンティだったと信じています。
タイラークリスチャン

0

あなたは使用することができますCtrl+ Shift+ Vのようなしかし、GUI版のvimのため、ターミナルバージョンのvimに貼り付けるNeovim-Qtと、システムクリップボードからテキストを貼り付け、Ctrl+ Shift+はV、単に動作しません。クリップボード"+または"*vimエディターにアクセスする必要があります。

新しいキーバインドを追加.vimrcすると、単にコピー/貼り付けコマンドが追加されます:

" paste from system clipboard, align indentation with surroundings
noremap <Leader>p "*]p:set nopaste<CR>
" copy a sentence into system clipboard
noremap <Leader>y "+y)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.