有時(shí)候,復(fù)制文本(尤其是代碼)到 Vim,會(huì)出現(xiàn)格式錯(cuò)亂的問(wèn)題??礃幼?,應(yīng)該是自動(dòng)縮進(jìn)惹得禍。本文不去深究原因,直接給出解決方法。
1. paste 模式
運(yùn)行如下命令,進(jìn)入 paste 模式:
:set paste
進(jìn)入 paste 模式后,按 i 鍵進(jìn)入插入模式,然后再粘帖,文本格式不會(huì)錯(cuò)亂了。但粘帖后還需要按 《ESC》 進(jìn)入普通模式并執(zhí)行如下命令結(jié)束 paste 模式:
:set nopaste
顯然,這樣非常麻煩。下面我們進(jìn)行改進(jìn)。
2. 快捷鍵一
我們可以利用設(shè)置快捷鍵來(lái)簡(jiǎn)化上面的兩個(gè)命令。在 ~/.vimrc 中加入如下兩行:
map 《F10》:set paste《CR》
map 《F11》:set nopaste《CR》
這樣,在普通模式下按 F10 (你也可以用自己喜歡的按鍵)就會(huì)進(jìn)入 paste 模式,按 i 進(jìn)入插入模式后粘帖,然后按 《ESC》 回到普通模式,再按 F11 結(jié)束 paste 模式。
這樣雖然方便了,但占用了兩個(gè)按鍵。下面我們繼續(xù)改進(jìn)。
3. 快捷鍵二
在 ~/.vimrc 中加入如下內(nèi)容:
set pastetoggle=《F11》
這樣就可以把上面的 F10 和 F11 合并為一個(gè)快捷鍵來(lái)切換 paste 模式了。
還有更好的辦法么?當(dāng)然!
4. Vim 寄存器一
關(guān)于 Vim 寄存器的詳細(xì)信息請(qǐng)執(zhí)行命令 “:help registers” 查看。
對(duì)于“剪切板”這個(gè)概念,Linux 下有兩個(gè)東西:一個(gè)叫做選擇緩沖區(qū)(X11 selection buffer),另一個(gè)才是剪切板(clipboard)。鼠標(biāo)或鍵盤選擇內(nèi)容時(shí),內(nèi)容實(shí)時(shí)進(jìn)入緩沖區(qū),然后按中鍵將內(nèi)容插入光標(biāo)所在位置;鼠標(biāo)或鍵盤選擇內(nèi)容后,按Ctrl-C(或Shift-Ctrl-C)或菜單中的“復(fù)制”,內(nèi)容進(jìn)入剪切板,然后按Ctrl-V(或Shift-Ctrl-V)或菜單中的“粘帖”將內(nèi)容插入光標(biāo)所在位置。關(guān)于這兩者的詳細(xì)信息,請(qǐng)自行搜索,此處不深究。
Vim 的寄存器 “* 對(duì)應(yīng)系統(tǒng)緩沖區(qū), 寄存器 “+ 對(duì)應(yīng)系統(tǒng)剪切板。
如果你是把選擇的內(nèi)容(在系統(tǒng)緩沖區(qū)中)粘帖到 Vim ,只需在普通模式下執(zhí)行如下命令:
“*p
對(duì)應(yīng)的,如果你是把復(fù)制的內(nèi)容(在系統(tǒng)剪切板中)粘帖到 Vim,只需在普通模式下執(zhí)行如下命令:
”+p
怎么樣?格式?jīng)]有錯(cuò)亂了吧?
這樣雖然簡(jiǎn)便很多了,但還是需要輸入三個(gè)字母,并且這三個(gè)字母都得使用右手小拇指輸入,甚至其中的兩個(gè)字母還需要 shift 鍵配合!
還有更簡(jiǎn)單的辦法。
5. Vim 寄存器二
在 ~/.vimrc 里加入如下內(nèi)容:
set clipboard=unnamed
然后只需在普通模式下按 p 即可把系統(tǒng)緩沖區(qū)中的內(nèi)容粘帖到 Vim 中,就像粘帖用 yy 命令得到的內(nèi)容一樣,并且格式不錯(cuò)亂。
如果把上面的一行換成如下內(nèi)容:
set clipboard=unnamedplus
普通模式下按 p 粘帖的內(nèi)容就是系統(tǒng)剪切板里的內(nèi)容了。
這已經(jīng)足夠簡(jiǎn)便了。在搜索此問(wèn)題的過(guò)程中,我還看到了另外一些辦法。
6. 快捷鍵三
在 ~/.vimrc 里加入如下內(nèi)容:
inoremap 《S-Insert》《ESC》:setl paste《CR》gi《C-R》+《ESC》:setl nopaste《CR》gi
這樣,你就可以在插入模式下使用 Shift-Insert 快捷鍵在粘帖系統(tǒng)剪貼板中的內(nèi)容了。
把上面一行替換成如下內(nèi)容同樣可以達(dá)到相同的效果:
inoremap 《S-Insert》《ESC》“+p`]a
注意,這可是在插入模式下哦!比起第 5 節(jié)提到的方法,這種方法省去了一次 《ESC》 按鍵進(jìn)入普通模式和一次 i 按鍵重新回到插入模式。
至此,你需要做的只是:
a. 復(fù)制你想要的內(nèi)容;
b. 回到 Vim 并按 Shift-Insert 快捷鍵;
c. 繼續(xù)編輯其他內(nèi)容。
-
Linux
+關(guān)注
關(guān)注
87文章
11511瀏覽量
213791 -
虛擬機(jī)
+關(guān)注
關(guān)注
1文章
966瀏覽量
29358
發(fā)布評(píng)論請(qǐng)先 登錄
【OK210試用體驗(yàn)】第二篇 虛擬機(jī)VM安裝及Ubuntu的安裝、配置
【OK210試用體驗(yàn)】第二篇 虛擬機(jī)VM安裝及Ubuntu的安裝、配置
如何解決虛擬機(jī)Ubuntu無(wú)法聯(lián)網(wǎng)的問(wèn)題
ESXi虛擬機(jī)模塊CPUID打開(kāi)電源失敗怎么解決
虛擬機(jī)打開(kāi)電源報(bào)錯(cuò)的問(wèn)題及解決辦法描述
關(guān)于HarmonyOS虛擬機(jī)網(wǎng)絡(luò)問(wèn)題的解決辦法分享
基于復(fù)制技術(shù)的虛擬機(jī)容災(zāi)方案

ESXi虛擬機(jī)模塊CPUID打開(kāi)電源失敗

vsphere Client虛擬機(jī)開(kāi)啟電源提示發(fā)生常規(guī)錯(cuò)誤:目標(biāo)計(jì)算機(jī)積極拒絕解決辦法

誤刪除KVM虛擬機(jī)的數(shù)據(jù)恢復(fù)案例

虛擬機(jī)ubuntu怎么聯(lián)網(wǎng)
服務(wù)器數(shù)據(jù)恢復(fù)—KVM虛擬機(jī)raw格式磁盤文件數(shù)據(jù)恢復(fù)案例

虛擬機(jī)數(shù)據(jù)恢復(fù)—KVM虛擬機(jī)被誤刪除的數(shù)據(jù)恢復(fù)案例

評(píng)論