web-dev-qa-db-ja.com

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

使ってみた Ctrl + V viエディタードキュメントにコンテンツを貼り付ける場合 Ctrl + V 貼り付けとして解釈されません。

158
Rpj

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

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

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

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

185
Attila O.

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

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

62
Daniel Jonsson
  1. 内容の貼り付けをコピーする場合は、同じファイル内を使用し、yankおよびpasteを使用します。

  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 貼り付けます。

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

29
47dev47null

私はいつも使う Shift+Insert ターミナルにテキストを貼り付けたい場合、すべてのターミナルプログラムで動作します。

(これは、押すことができないラップトップを手に入れない理由でもあります Insert 二次キーを押さずに)

17
Magnus Jonsson

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

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

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

10
will-ob

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

6
GC 13

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

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

コピー(YANK)

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

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

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

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

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

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

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

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

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

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

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

貼り付け(PUT)

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

  • コマンドモードで、pと入力します

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

  • コマンドモードで、Pと入力します
5
slayernoah

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のネイティブペースト(Linuxではctrl+shift+V、Macではcmd+V)を使用できます。挿入モードではiを押さないでください。

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

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

1
wisbucky

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

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

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

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

使用できます Ctrl+Shift+V ターミナルバージョンのvimに貼り付けますが、Neovim-QtのようなGUIバージョンのvimでは、システムクリップボードからテキストを貼り付けます 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)
0
Yossarian42

rootの場合: Ctrl+Shift+V

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

0
Elliptical view

Vimの外部からテキストを貼り付けたい場合は、挿入モードでテキストとvimの内部をコピーし、「shift + Insert」を押します

0
xollad