轉載自本人獨立博客https://liushiming.cn/2020/01/18/copy-and-paste-in-vim/html
複製粘貼是文本編輯最經常使用的功能,可是在vim中複製粘貼仍是有點麻煩的,有一點學習成本。本文總結了使用vim複製粘貼的典型場景和使用方法,但願對讀者有幫助。linux
vim提供12個剪貼板,它們的名字分別爲vim有11個粘貼板,分別是0
、1
、2
、...
、9
、a
、「
。若是開啓了系統剪貼板,則會另外多出兩個:+
和*
。使用:reg
命令,能夠查看各個粘貼板裏的內容。vim
:reg
在vim中簡單用y只是複製到「
(雙引號)粘貼板裏,一樣用p粘貼的也是這個粘貼板裏的內容。windows
要將vim的內容複製到某個粘貼板,須要退出編輯模式,進入正常模式後,選擇要複製的內容,而後按"Ny完成複製,其中N爲粘貼板號(注意是按一下雙引號而後按粘貼板號最後按y),例如要把內容複製到粘貼板a,選中內容後按"ay就能夠了。緩存
要將vim某個粘貼板裏的內容粘貼進來,須要退出編輯模式,在正常模式按"Np,其中N爲粘貼板號。好比,能夠按"5p將5號粘貼板裏的內容粘貼進來,也能夠按"+p將系統全局粘貼板裏的內容粘貼進來。bash
Vim支持系統剪貼板,須要打開clipboard功能。使用下面的命令,檢查當前版本的Vim,是否支持clipboard。服務器
$ vim --version | grep "clipboard" -clipboard +insert_expand +path_extra +user_commands +emacs_tags -mouseshape +startuptime -xterm_clipboard root@sz ➜ ~ vim --version VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Jun 07 2019 15:35:43)
-clipboard
表明不支持+clipboard
表明支持。
若是不支持的話,須要安裝gvim或者在編譯的時候開啓系統剪貼板選項。dom
"*y
"+y
"+2yy
– 複製兩行{Visual}"+y
- copy the selected text into the system clipboard"+y{motion}
- copy the text specified by {motion} into the system clipboard:[range]yank +
- copy the text specified by [range]
into the system clipboard"+dd
– 剪切一行"*p
"+p
Shift+Insert
:put +
- Ex command puts contents of system clipboard on a new line<C-r>
+ - From insert mode (or commandline mode)"+p
比 Ctrl-v 命令更好,它能夠更快更可靠地處理大塊文本的粘貼,也可以避免粘貼大量文本時,發生每行行首的自動縮進累積,由於Ctrl-v
是經過系統緩存的stream處理,一行一行地處理粘貼的文本。ssh
肯定vim支持+clipboard
後,若是想y/p
直接和系統剪貼板打通,能夠在~/.vimrc
中加上如下配置):學習
set clipboard^=unnamed,unnamedplus
其中unnamed表明*
寄存器,unnamedplus表明+
寄存器。在mac系統中,二者都同樣;通常在linux系統中+
和*
是不一樣的,+
對應ctrl + c
,ctrl + v
的桌面系統剪貼板,*
對應x桌面系統的剪貼板(用鼠標選擇複製,用鼠標中鍵粘貼)。
經過ssh鏈接到linux服務器時,vim是跑在遠程服務器的,不能使用y
複製到本地的剪貼板。這時有幾個方法:
用鼠標選中文字cmd + c
複製(windows下ctrl + c
複製),cmd + v
粘貼到本地。這個方法是最天然的,可是想要用這個方法有幾個前提:
.vimrc
文件中加上set mouse=a
mouse reporting
選項,不然鼠標點擊vim界面會進入visual模式。參見我這篇文章解決iterm2中vim選中文字不能複製的問題使用本地vim經過scp直接編輯遠程文件。這樣就可使用本地寄存器"+y"
複製了。這種方法對遠程vim配置沒有要求。
vim scp://remoteuser@server.com//absolute/path/to/file
注意com和absolute間是兩個反斜槓//
並非敲錯了。
Vim 配置入門
//title:(一文搞懂vim複製粘貼)
//englishTitle:(copy-and-paste-in-vim)
//category:(vim,problem,problem-solved)
//tags:(vim)
//createTime:(20200118)
//lastUpdateTime:(20200118)
轉載自本人獨立博客https://liushiming.cn/2020/01/18/copy-and-paste-in-vim/
複製粘貼是文本編輯最經常使用的功能,可是在vim中複製粘貼仍是有點麻煩的,有一點學習成本。本文總結了使用vim複製粘貼的典型場景和使用方法,但願對讀者有幫助。
vim提供12個剪貼板,它們的名字分別爲vim有11個粘貼板,分別是0
、1
、2
、...
、9
、a
、「
。若是開啓了系統剪貼板,則會另外多出兩個:+
和*
。使用:reg
命令,能夠查看各個粘貼板裏的內容。
:reg
在vim中簡單用y只是複製到「
(雙引號)粘貼板裏,一樣用p粘貼的也是這個粘貼板裏的內容。
要將vim的內容複製到某個粘貼板,須要退出編輯模式,進入正常模式後,選擇要複製的內容,而後按"Ny完成複製,其中N爲粘貼板號(注意是按一下雙引號而後按粘貼板號最後按y),例如要把內容複製到粘貼板a,選中內容後按"ay就能夠了。
要將vim某個粘貼板裏的內容粘貼進來,須要退出編輯模式,在正常模式按"Np,其中N爲粘貼板號。好比,能夠按"5p將5號粘貼板裏的內容粘貼進來,也能夠按"+p將系統全局粘貼板裏的內容粘貼進來。
Vim支持系統剪貼板,須要打開clipboard功能。使用下面的命令,檢查當前版本的Vim,是否支持clipboard。
$ vim --version | grep "clipboard" -clipboard +insert_expand +path_extra +user_commands +emacs_tags -mouseshape +startuptime -xterm_clipboard root@sz ➜ ~ vim --version VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Jun 07 2019 15:35:43)
-clipboard
表明不支持+clipboard
表明支持。
若是不支持的話,須要安裝gvim或者在編譯的時候開啓系統剪貼板選項。
"*y
"+y
"+2yy
– 複製兩行{Visual}"+y
- copy the selected text into the system clipboard"+y{motion}
- copy the text specified by {motion} into the system clipboard:[range]yank +
- copy the text specified by [range]
into the system clipboard"+dd
– 剪切一行"*p
"+p
Shift+Insert
:put +
- Ex command puts contents of system clipboard on a new line<C-r>
+ - From insert mode (or commandline mode)"+p
比 Ctrl-v 命令更好,它能夠更快更可靠地處理大塊文本的粘貼,也可以避免粘貼大量文本時,發生每行行首的自動縮進累積,由於Ctrl-v
是經過系統緩存的stream處理,一行一行地處理粘貼的文本。
肯定vim支持+clipboard
後,若是想y/p
直接和系統剪貼板打通,能夠在~/.vimrc
中加上如下配置):
set clipboard^=unnamed,unnamedplus
其中unnamed表明*
寄存器,unnamedplus表明+
寄存器。在mac系統中,二者都同樣;通常在linux系統中+
和*
是不一樣的,+
對應ctrl + c
,ctrl + v
的桌面系統剪貼板,*
對應x桌面系統的剪貼板(用鼠標選擇複製,用鼠標中鍵粘貼)。
經過ssh鏈接到linux服務器時,vim是跑在遠程服務器的,不能使用y
複製到本地的剪貼板。這時有幾個方法:
用鼠標選中文字cmd + c
複製(windows下ctrl + c
複製),cmd + v
粘貼到本地。這個方法是最天然的,可是想要用這個方法有幾個前提:
.vimrc
文件中加上set mouse=a
mouse reporting
選項,不然鼠標點擊vim界面會進入visual模式。參見我這篇文章解決iterm2中vim選中文字不能複製的問題使用本地vim經過scp直接編輯遠程文件。這樣就可使用本地寄存器"+y"
複製了。這種方法對遠程vim配置沒有要求。
vim scp://remoteuser@server.com//absolute/path/to/file
注意com和absolute間是兩個反斜槓//
並非敲錯了。