vim與系統剪下板之間的複製貼上
阿新 • • 發佈:2019-07-12
背景
vim各種快捷建溜得飛起,然而與系統剪下板之間的複製貼上一直都是我的痛。
每次需要從vim中拷貝些文字去瀏覽器搜尋,都需要用滑鼠選中vim的文字後,Ctrl+c
、Ctrl+v
,硬生生掐斷了純鍵盤的流暢感
而且,vim中的塊選擇多爽,如果只想要拷貝某一個塊的資料,滑鼠操作就完全沒轍了
忍無可忍,無需再忍,今天就徹底解決這個問題
vim與系統剪下板之間的互動
vim支援clipboard特性
本章參考自 NearXDU的部落格
確認vim編輯器是否支援clipboard特性
[GMPY@16:33 ~]$ vim --version| grep "clipboard"
支援這特性的檢索結果應該包含 +clipboard
-clipboard
如果不支援怎麼辦?安裝新的vim吧。可以參考這邊文章 從原始碼安裝vim
vim的暫存器
本章參考自 rainysia的部落格
vim會有一些儲存空間來暫存內容,vim中將這些儲存空間叫暫存器。此暫存器非我們硬體所說的暫存器,可以理解為是一種cache。
例如我們在vim中y
操作複製的內容,實際就是暫存到暫存器中。
怎麼檢視暫存器內容呢?在vim中執行
:reg
在vim中,這些暫存器也有好幾個
表示符號 | 名稱 | 作用 |
---|---|---|
"" |
無名(unnamed)暫存器 | 快取最後一次操作內容 |
"0 ~ "9 |
數字(numbered)暫存器 | 快取最近操作內容,複製與刪除有別,"0 暫存器快取最近一次複製的內容,"1 -"9 快取最近9次刪除內容 |
"- |
行內刪除(small delete)暫存器 | 快取行內刪除內容 |
“a ~ "z 或"A - ”Z |
具名(named)暫存器 | 可用於主動指定 |
": , ". , "% , "# |
只讀(read-only)暫存器 | 分別快取最近命令、最近插入文字、當前檔名、當前交替檔名 |
"= |
表示式(expression)暫存器 | 用於執行表示式命令 |
"* , "+ , "~ |
選擇及拖拽(selection and drop)暫存器 | 存取GUI選擇文字,可用於與外部應用互動 |
"_ |
黑洞(black hole)暫存器 | 不快取操作內容(乾淨刪除) |
"/ |
模式暫存器(last search pattern) | 快取最近的搜尋模式 |
為了要與系統的剪下板互動,我們著重關注"*
和"+
在vim中進入visual檢視後使用"Ny(N表示特定暫存器編好),將內容複製到特定的剪下板
因此,如果要把資料從vim拷貝到系統剪下板,我們只需要在visual模式下執行
"+y
注意的是,是 雙引號 + 加號暫存器 + y。通過這命令copy後就可以去瀏覽器Ctrl+v啦
如果從瀏覽器Ctrl+c後,要貼上到vim中,則需要
"+p
"*
和"+
有什麼差別呢?
"*
是在系統剪下板中表示選擇的內容
"+
是在系統剪下板中表示選擇後Ctrl+c複製的內容
使用快捷鍵
"+y和"+p的輸入挺麻煩的,我們直接為他們建立個快捷鍵吧
vim建立快捷鍵的原理可以看 jalused的部落格
我使用的快捷鍵如下
" 支援在Visual模式下,通過C-y複製到系統剪下板
vnoremap <C-y> "+y
" 支援在normal模式下,通過C-p貼上系統剪下板
nnoremap <C-p> "*p
將上面的內容copy到~/.vimrc中即可生效,效果就是:
- 在vim的visual模式下選中了要複製的內容,再用Ctrl + y複製到系統剪下板,直接去其他視窗中Ctrl + v貼上
- 在其他視窗中選擇之後(不一定要Ctrl + c),可直接在vim中用Ctrl + p來貼上