Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

Neovim や Vim でコピペする方法

$
0
0

最近 Neovim に移行したのですが,Macvim で可能であったビジュアルモードで範囲指定して Ctrl-C でクリップボードへのコピーができなくなりました.
そこで,Neovim 開いたファイルをクリップボードにコピーする方法を調べました.

vim のレジスタ

vim ではヤンクや削除するとレジスタに値が保存されます.レジスタには次のような種類があります.

無名レジスタ

特にレジスタ名を指定しない場合に利用されるレジスタ.
yyではカーソルがある行を無名レジスタに保存し,pでは無名レジスタから値を持ってきて貼り付けます.

指定したレジスタ

保存するレジスタ名を指定してヤンクすることも可能です.指定の方法は"レジスタ名となっています.
例えば,レジスタ r にヤンクしたいときは,"ryyとなります.

0(ゼロ)レジスタ

また,vimには特殊なレジスタとして,0(ゼロ)レジスタというものが存在します.指定の方法は"0となっています.
このレジスタはヤンクされた値は保存しますが,削除された値は保存されません.
以下の gif はその動作例です.

  1. yy -> {無名 = "first line", 0 = "first line"}
  2. dd -> {無名 = "second line", 0 = "first line"}

といったようにレジスタの値が遷移しています.

movie2.gif

クリップボードのレジスタ

そして,レジスタとしてクリップボードを指定することも可能です.指定の仕方は"*となっています.
以下の map を ~/.config/init.vim や .~/vimrc に追加することで,vim でもクリップボードを活用できるようになります.

init.vim
" copy & paste map
nnoremap <Space>d "*dd
vnoremap <Space>d "*dd
nnoremap <Space>y "*yy
vnoremap <Space>y "*yy
nnoremap <Space>p "*p
vnoremap <Space>p "*p

:r!pbpasteはそれぞれ

  • :rコマンドの出力を挿入する
  • !pbpasteクリップボードの値を出力する Mac のコマンド

となっており,クリップボードを活用できていることが確認できました.

movie3.gif

インサートモードでクリップボードから paste したいときは,<C-r>*でできますが,普通に Command-v でも paste できるので特に map しなくてもいいかなと思いました.

参考

Vim でコピペするときの Tips


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>