他のエディターとは異なり、vim はコピーしたテキストを独自のクリップボードに保存します。そのため、Web ページからテキストをコピーして現在の作業ファイルに貼り付けるのは非常に困難です。geditを開くか、手動で入力する必要があります。
システムのクリップボードとの間で vim ペーストを作成できますか?
0 を返す場合:echo has('clipboard')
、システム クリップボードからのコピー/貼り付けは機能しないことに注意してください。この場合、vim はこの+clipboard
機能でコンパイルされていないため、別のバージョンをインストールするか、再コンパイルする必要があります。一部の Linux ディストリビューションでは、デフォルトで最小限の vim インストールが提供されますが、またはパッケージをインストールすると、vim-gtk
vim-gtk3
それでも追加機能を利用できます。
およびレジスタは、システムのクリップボード ( "*
)用です。システムによっては、異なることを行う場合があります。たとえば、OSX や Windows などの X11 を使用しないシステムでは、システム クリップボードの読み取りと書き込みにレジスタが使用されます。X11 システムでは、両方のレジスタを使用できます。詳細については を参照してください。ただし、基本的には X11 の選択 (通常はマウスで選択したものをコピーし、マウスの中央ボタンで貼り付けます) に類似しており、X11 の選択 (適切なクリップボード) に類似しています。"+
:help registers
"*
:help x11-selection
"*
_PRIMARY_
"+
_CLIPBOARD_
以上のことが頭をよぎる場合は、"*yy
またはを使用"+yy
して、システムのクリップボードに行をコピーしてみてください。適切なコンパイル オプションがあると仮定すると、どちらか一方が機能するはずです。
これをより便利なものに再マップすることをお勧めします。たとえば、視覚的に選択して+を押してシステムのクリップボードにヤンクできるようにvnoremap <C-c> "*y
、 yourを入れることができます。~/.vimrc
Ctrlc
'clipboard'
で説明されているオプションも参照してください:help cb
。この場合、すべてのヤンク/削除操作をシステムのクリップボードに自動的にコピーすることができ:set clipboard=unnamed
ます。:set clipboard=unnamedplus
これは、クリップボードに何か他のものを保存している場合、上書きされるため、不便になる可能性があります。
貼り付けるには、 or を使用する"+p
か"*p
(システムや目的の選択に応じて)、これらを別のものにマップすることができます。私はそれらを明示的に入力しますが、挿入モードになっていることがよくあります。挿入モードの場合でも、<C-r><C-p>*
またはを使用して適切なインデントを付けて貼り付けることができます<C-r><C-p>+
。を参照してください:help i_CTRL-R_CTRL-P
。
また、vim のpaste
オプション ( :help paste
) にも言及する価値があります。これにより、vim は他のいくつかのオプションを無効にする特別な「貼り付けモード」になり、端末エミュレーターまたはマルチプレクサーの使い慣れた貼り付けショートカットを使用して簡単に vim に貼り付けることができます。(入力:set paste
して有効にし、コンテンツを貼り付けてから入力:set nopaste
して無効にします。) または、pastetoggle
オプションを使用して、モードを切り替えるキーコードを設定することもできます ( :help pastetoggle
)。
これらのオプションの代わりにレジスタを使用することをお勧めしますが、それでも怖すぎる場合は、vim チョップを完成させる際に便利な回避策になる可能性があります。
詳細については、を参照:help clipboard
してください。
gnome-terminalの貼り付けショートカットを使用してvimに貼り付けることができます。ファイルを挿入モードにして、
Ctrl++ 。Shift_v
事前に覚えておいてください
:set paste
インデントをいじらないようにします。
私の Linux システムでは、レジスタ+
と*
レジスタは X11 選択にマップされ、マウスの中ボタンで貼り付けることができます。:set clipboard=unnamed
とを使用すると:set clipboard=unnamedplus
、レジスタがクリップボードにマップされ、CTRL-V で貼り付けることができます。
詳細は、構成とシステムに多少依存しているように見えるため、マイレージは間違いなく異なります. ただし、間違いなく正しい方向に向けられるはずです。
クリップボード
この選択を保存するための特別なレジスタがあります。それは "* レジスタです。選択されているテキストに関する情報が変更されようとしている場合 (たとえば、どこかをマウスの左クリックでクリックした場合)、または別のアプリケーションが必要な場合を除き、ここには何も入れられません。選択したテキストを貼り付けます。次に、テキストが "* レジスタに配置されます。たとえば、線を切り取って現在の選択範囲にする/クリップボードに置くには:
"*dd
同様に、マウスの中ボタンをクリックするなどして、別のアプリケーションから選択範囲を貼り付ける場合、選択範囲は最初に "* レジスタに配置され、次に他のレジスタと同じように 'put' されます。たとえば、選択範囲を配置するには(クリップボードの内容):
"*p
登録 E354
> There are nine types of registers:
> 1. The unnamed register ""
> 2. 10 numbered registers "0 to "9
> 3. The small delete register "-
> 4. 26 named registers "a to "z or "A to "Z
> 5. four read-only registers ":, "., "% and "#
> 6. the expression register "=
> 7. The selection and drop registers "*, "+ and "~
> 8. The black hole register "_
> 9. Last search pattern register "/
クリップボードから貼り付け
1. Clipboard: Copy
2. Vim insertmode, middle mouse key
ターミナルでの X11 クリップボードのサポートを確認する
ターミナルで Vim を実行したい場合は、クリップボードをサポートしてコンパイルされたバージョンの Vim を探す必要があります。X11 クリップボードのサポートを確認するには、コンソールから次のように入力します。
% vim --version
「+xterm_clipboard」が表示されれば、問題ありません。
http://vim.wikia.com/wiki/Accessing_the_system_clipboard
X サーバーは、次の 3 つの選択肢を維持します。
プライマリ、セカンダリ、およびクリップボード
PRIMARY 選択は、通常、マウスの中ボタンによるコピーと貼り付けを実装するために使用されます。SECONDARY および CLIPBOARD の選択は、アプリケーション プログラムであまり使用されません。
上記の提案を試してみましたが、私の環境ではどれも機能しませんでした。(ssh 経由の Windows PuTTY クローン)
いくつかの追加のグーグルが現れました: https://unix.stackexchange.com/questions/110684/copy-paste-into-sshd-vim-from-local-windows-clipboard
SHIFT+INSERT
私のデスクトップのクリップボードからVimのバッファに貼り付けるためのトリックを使用することを提案したコメントの1つ。Ctrl-C
はすでに Vim からデスクトップのクリップボードにコピーする作業を行っていました。
+clipboard を持っていなかったので、xsel を使用してこの代替ソリューションを思いつきました:
~/.vimrc に追加:
vnoremap <C-C> :w !xsel -b<CR><CR>
OS クリップボードにコピー
ビジュアルモードでテキストを選択し、"*y
OS クリップボードから貼り付け
プレス"*p
*
Vim のインストールがおよび+
レジスタをサポートしていない人のための簡単な注意事項。クリップボードから貼り付けるために新しい Vim インストールをダウンロードする必要はありません。別の方法を次に示します。
インストールparcellite
(メモリ使用量の少ないクリップボード マネージャー);
.vimrc
ファイルに次を追加します。
command Clip r !parcellite -c
vimを再起動します。
:Clip
コマンドとして入力ex
すると、クリップボードの内容がカーソルに貼り付けられます。1 回のキーストロークでこれを実行できるように、新しいコマンドをファンクション キーにマップすることもできます。
これに対する最も簡単な解決策は、異なる Linux マシン間でも機能しssh
ます。
vim が X-11 クリップボードをサポートしているかどうかを確認しますvim --version | grep clipboard
: 報告があった場合は、または(arch Linux の gvim) のいずれかをインストールする必要が-clipboard
あります。-xterm_clipboard
vim-gtk
vim-gnome
に次の行を追加します.vimrc
。
set clipboard=unnamedplus set paste
ssh -Y machine
y
これで、コピーと貼り付けは、単一のマシンでも、別のマシンでも、for yank とp
for pasteのみを使用して期待どおりに動作するはずです。注意:.vimrc
この機能を使用するすべてのマシンで変更します。
この問題は、主要な開発環境として実行vim
されている 2017 年半ばの Macbook Pro で発生しました。iTerm2
他の回答が示唆しているように、実行vim --version
したところ、 が返されることに気付きました。これは、マシンに同梱されて-clipboard
いるバージョンがクリップボード オプションでコンパイルされていないことを意味します。vim
のhomebrew
パッケージvim
はオプションでコンパイルされているように見えるclipboard
ので、私にとっての修正は次のとおりでした:
brew install vim
set clipboard+=unnamed
マイ~/.vimrc
ファイルに追加iTerm2
これは私にとってはうまくいきます:Ctrl+ Shift+V
vimrcなどを変更したい場合は、他のソリューションが適しています...ただし、 vimからシステムキーボードにコピーする簡単な方法が必要でした。これが私が思いついたものです。
v
:
ます(自動的に拡大して表示されます:'<,'>
)y *
( y +
システムによって異なります) と入力して、選択したテキストをシステムのクリップボードにヤンクします。Mac OS X 10.9 の Terminal.app で vim を使用している場合は、設定に加えて、取得できるものを:set clipboard=unnamed
使用する必要があります。デフォルトの vim はクリップボード オプションをサポートしていません。mvim -v
brew install macvim
言及する価値があるかもしれません.Vimを使用するOSXでは、マウスでテキストを選択し、Cmd-CでOSXシステムのクリップボードにコピーでき、コピーされたテキストはVimの外部のクリップボードで利用できます.
言い換えれば、OSX はそれを通常のウィンドウのように扱います。ここで、悪名高い Apple の「コマンド」ボタンが役に立ちます。
B-30
これを行うには、2 つの簡単な方法があります。ファイルを挿入モードにし、1) マウスの中央ボタン (スクロール ホイール) を押すか、2) Ctrl + Shift + V
Windows を使用していて、システム クリップボードの内容を貼り付けたい場合は、次のp
コマンドを入力します。
:set clipboard = unnamed
これで私の問題は解決しました。
"一部の国際キーボードでは、 +を押しSpaceて"
.
その場合は、"Space+yまたは"Space*yコピーする必要があります。
そして"Space+p、または" Space*p貼り付けます。