1. 程式人生 > >解決vim中滑鼠右鍵無法複製的問題

解決vim中滑鼠右鍵無法複製的問題

Vim作為最好用的文字編輯器之一,使用vim來編文件,寫程式碼實在是很愜意的事情。每當學會了vim的一個新功能,就會很大地提高工作效率。有人使用vim幾十年,還沒有完全掌握vim的功能,這也說明了vim的強大。而這樣何嘗不是一件好事呢,只要有的學習,就有的提高。

最近使用Vim來寫部落格,發現在Vim中貼上Python程式碼後,縮排就全亂了。仔細研究了以下,原來是自動縮排的緣故,於是做如下設定:

:set noai nosi

取消了自動縮排和智慧縮排,這樣貼上就不會錯行了。但在有的vim中不行,還是排版錯亂。

後來發現了更好用的設定:

:set paste

進入paste模式以後,可以在插入模式下貼上內容,不會有任何變形。這個真是灰常好用,情不自禁看了一下幫助,發現它做了這麼多事:

  • textwidth設定為0
  • wrapmargin設定為0
  • set noai
  • set nosi
  • softtabstop設定為0
  • revins重置
  • ruler重置
  • showmatch重置
  • formatoptions使用空值

下面的選項值不變,但卻被禁用:

  • lisp
  • indentexpr
  • cindent

怪不得之前只設置noai和nosi不行,原來與這麼多因素有關!

但這樣還是比較麻煩的,每次要貼上的話,先set paste,然後貼上,然後再set nopaste。有沒有更方便的呢?你可能想到了,使用鍵盤對映呀,對。我們可以這樣設定::

:map <F10> :set paste<CR>
:map <F11> :set nopaste<CR>

這樣在貼上前按F10鍵啟動paste模式,粘貼後按F11取消paste模式即可。其實,paste有一個切換paste開關的選項,這就是pastetoggle。通過它可以繫結快捷鍵來啟用/取消 paste模式。比如::

:set pastetoggle=<F11>

這樣減少了一個快捷鍵的佔用,使用起來也更方便一些。

但,這是最方便的嗎?Vimer們對高效的追求永無止境。還有其他更好地方法嗎?

你可能想到了,vim暫存器。對,使用vim暫存器 “+p 貼上即可。根本不用考慮是否自動縮排,是否paste模式,直接原文傳遞!:

"+p

要說vim暫存器,就要從vim檔案間的複製貼上說起。

Vim中,若要複製當前行,普通模式下按 yy 即可,在要貼上的地方按 p 。這是vim將複製內容儲存到了自己的暫存器中的緣故。如果在其他地方執行yy,新的內容將覆蓋掉原暫存器中內容。如果想儲存原暫存器中內容而同時增加新的內容呢?這時就要在yy前增加標籤了。標籤以雙引號開始,跟著的是標籤名稱,可以是數字0-9,也可以是26個字母,然後就是複製操作,這樣就把複製內容儲存到該標籤暫存器裡。通過下面命令顯示所有暫存器內容::

:reg

其中注意兩個特殊的暫存器:”* 和 “+。這兩個暫存器是和系統相通的,前者關聯絡統選擇緩衝區,後者關聯絡統剪下板。通過它們可以和其他程式進行資料交換。

備註:

若暫存器列表裡無”* 或 “+ 暫存器,則可能是由於沒有安裝vim的圖形介面所致。Debian/Ubuntu下可以通過安裝vim-gnome解決。

$ sudo apt-get install vim-gnome

選擇緩衝區和系統剪下板啥子區別?讓我們繼續研究。

選擇緩衝區和剪下板

不同於Windows,Linux系統裡存在兩個剪下板:一個叫做選擇緩衝區(X11 selection buffer),另一個才是剪下板(clipboard)。

選擇緩衝區是實時的,當使用滑鼠或鍵盤選擇內容時,內容已經存在於選擇緩衝區了,這或許就是選擇緩衝區的由來吧。

使用下面的命令檢視選擇緩衝區的內容::

$ xclip -out

如果沒有xclip命令,Debian/Ubuntu下可以通過如下命令安裝::

$ sudo apt-get install xclip

可以使用滑鼠中鍵或鍵入Shift+Insert來貼上選擇緩衝區的內容。但對於有些GUI程式,比如gedit,只能通過滑鼠中鍵呼叫選擇緩衝區的內容,使用Shift+Insert的話,呼叫的是剪下板的內容。

剪下板和Windows的剪下板類似,在選擇文字內容後,執行Ctrl + c或在選單裡選擇‘複製’的話,這時內容才存放到剪下板裡。

使用下面的命令檢視剪下板的內容::

$ xclip -out -sel clipboard

而使用剪下板的內容,則是Ctrl+v。 但在有些情況下,比如gnome-terminal,不能直接使用Ctrl+c,Ctrl+v,這時就要用Shift+Ctrl+c,Shift+Ctrl+v代替。

原格式貼上

好了,瞭解了選擇緩衝區和剪下板,下面就是實現保留格式貼上的完美解決方案:

  • 方案一:
  1. 選擇文字內容
  2. vim普通模式下按 “*p 將選擇緩衝區中內容貼上進來
  • 方案二:
  1. 複製檔案內容
  2. vim普通模式下按 “+ p 將剪下板內容貼上進來

這時,如果要複製的內容也是vim編輯器中的內容,那麼如何複製才更方便呢?

vim中的複製

vim有一個可視模式(Visual Mode),在此模式下可以選擇區域。可以在普通模式下鍵入v進入可視模式,也可以個性化一點,鍵入V進入行可視模式,或者鍵入Ctrl+v進入列可視模式。這時移動游標就可以選擇內容了。注意這時被選內容已經實時保存於選擇緩衝區了,當然你也可以鍵入”+y將此內容也儲存到剪下板裡,或者”ay將內容儲存到標籤為a的暫存器中。但要知道,只有前兩個中的內容可以在其他程式中使用,而a暫存器中的內容只能在該vim編輯器內使用。

也可以通過滑鼠來複制。這裡首先要開啟滑鼠模式。:

:set mouse=a

這樣在普通模式下可以直接使用滑鼠選擇區域複製到選擇緩衝區。但這種情況下不能複製到剪下板。

若要使用滑鼠複製內容到剪下板,則需要做如下設定::

:set mouse=v

這種情況下,除了可以像上面一樣直接使用滑鼠選擇區域複製到選擇緩衝區以外,還可以在右鍵選單中選擇“複製”來儲存到剪下板裡。但新問題又出來了。若顯示行號,也會將行號一併選擇。你會想到,這好辦呀,如果不需要行號的話,在複製前,先執行set nonu來取消行號顯示唄。

其實沒必要這樣,如果不需要複製行號的話,用在可視模式下用鍵盤來選擇不就可以嗎?

並且,從上面的討論,我們不難得出,使用選擇緩衝區比使用剪下板要方便的多,可以節省很多步驟。

所以,最終我們得到了vim檔案間複製貼上的完美方案,檔案傳輸的中轉使用選擇緩衝區。

vim檔案間複製貼上完美方案

  1. 在~/.vimrc中增加如下一行::

    set mouse=v
  2. 複製內容到選擇緩衝區。

    • 帶行號時,使用滑鼠選擇內容區域。
    • 不要行號,使用 “*yny 複製n行或可視模式下選擇。
  3. 將選擇緩衝區中內容貼上到vim檔案:普通模式下按 “*p 。

補充:

設定vim中預設使用選擇緩衝區暫存器 “*:

set clipboard = unnamed

則可以直接通過y,p和系統選擇緩衝區進行資料交換。


相關推薦

解決vim滑鼠無法複製的問題

Vim作為最好用的文字編輯器之一,使用vim來編文件,寫程式碼實在是很愜意的事情。每當學會了vim的一個新功能,就會很大地提高工作效率。有人使用vim幾十年,還沒有完全掌握vim的功能,這也說明了vim的強大。而這樣何嘗不是一件好事呢,只要有的學習,就有的提高。

解決Vim滑鼠不能貼上

最近維護一臺伺服器,使用xshell登入後,用vim時,滑鼠右鍵不能貼上而是進入了visual模式。網上查詢一番找到了解決方法: 方法一:在普通模式下鍵入“ :set mouse-=a”(不包括引號) 方法二:編輯 ~/.vimrc 檔案,加入如下程式碼: if has(

解決Ubuntu18.04滑鼠無法貼上Windows下內容的方法

在使用ubuntu18.04進行與Windows下檔案內容的拷貝的過程中,發現使用快捷鍵無效,在終端上使用右鍵可以複製、貼上,但是在vim中,進行復制、貼上無法完成,最後的解決辦法如下: 在virtual box中,在設定下面的儲存中勾上下面的選項 重啟虛擬

解決vim當中滑鼠貼上不了的問題

最近升級了作業系統,vim也重新安裝了一下,之後發現之前設定的右鍵貼上不管用了,一點左下角就顯示 -- (insert) VISUAL--,之前解決過這個問題,忘了是怎麼解決的了,搜了一下也不好找到答

Debian 9 VIM 使用滑鼠複製

裝了 Debian 9 以後,vim沒有辦法使用滑鼠直接選擇並複製,後來發現是預設的配置問題。於是需要按照以下方式解決:解決方法1. 編輯 vim 的預設配置檔案vim /usr/share/vim/vim80/defaults.vim2. 轉至第 70 行,找到:if ha

js 遮蔽滑鼠複製,黏貼,儲存

其實js可以做很多的瀏覽器端的事情,最近有個以前的客戶讓幫忙修改一個功能,說是有人一直複製他們網站的資訊,想有什麼辦法能讓不復制,聽後我笑了,如果我想要你前臺展示的任何東東(話有點大了),都可以弄到,不過客戶是上帝嘛,他要這個效果就幫忙加嘛,舉手之勞,其實就是用js禁止滑鼠右鍵就可以了,還有一種js就是直接禁

win7 下點選滑鼠無法新建資料夾

最近用電腦時發現右擊 滑鼠無法新建資料夾經過調整後特將過程記錄下來供大家參考: 1.使用window(就是鍵盤上田字格那個鍵)鍵+R 組合鍵跳出執行視窗,輸入regedit命令; 2.開啟登錄檔編輯器依次找到HKEY_CLASSES_ROOT\Directory\Ba

zend studioctrl+滑鼠無法轉到類或函式定義檔案的解決方法

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

滑鼠沒有新建選項,解決方法!

一個執行命令就搞定​ reg add "HKEY_CLASSES_ROOT\Directory\Background\shellex\ContextMenuHandlers\New" /ve /d "{D969A300-E7FF-11d0-A93B-00A0C90F2719}

Win10 Synaptics觸控板無法實現雙指單擊模擬滑鼠點選的解決辦法

Win10 synaptics觸控板無法實現雙指單擊模擬滑鼠右鍵點選的解決辦法 系統軟硬體環境:win10專業版 1709,觸控板驅動程式版本19.4.18.22 通常win10的觸控板可以實現的手勢功能可以參考微軟的技術支援網頁,地址是:https://s

電腦無法新建項目如何處理解決

directory 分享 文件 b- 方法 ces 字符 .com 優化 在Win10系統中,我們有時候會遇到右鍵菜單中沒有新建項的情況,這時我們就無法進行文件的新建,非常耽誤我們使用電腦。下面雨後清風就來分享一下Win10系統右鍵菜單沒有新建項的解決方法。 Win10系統

登錄檔修改滑鼠新建選單性

1、首先按鍵盤win+R 2、輸入regedit,並點選確認按鈕 3、開啟後如圖所示 4、依次找到:HKEY_CURRENT_USER\Software\Microsoft\Windows\ CurrentVersion\Explorer\Discardable\PostSetu

JQuery模擬網頁自定義滑鼠選單

題外話.......最近在開發一個網站專案的時候,需要用到網頁自定義右鍵選單,在網上看了各路前輩大神的操作,頭暈目眩,為了達到目的,突然靈機一動,於是便有了這篇文章.   先放個效果圖(沾沾自喜,大神勿噴): 廢話不多說,進入正題:   1.首先 我們要禁用掉原網頁中右鍵選單

HTML,JS禁止滑鼠、禁止全選、複製、貼上的方法

禁止滑鼠右鍵、禁止全選、複製、貼上; oncontextmenu事件禁用右鍵選單;  js程式碼: document.oncontextmenu = function(){ event.returnValue = false; } // 或者直接返回整個事件 do

解決ueditor編輯器貼上、複製,提示使用ctrl+v貼上問題

       最近跟著公司做專案,一個新聞網站,在新聞網站的後臺管理中,有很多對新聞內容編輯是功能,而專案中採用的是ueditor編輯器,作為一個剛剛入行的小白,發現ueditor編輯器功能非常強大,這裡也都是我不知道的知識啊 [捂臉哭]。        在使用編輯器編輯內

ArcGIS API for Silverlight開發滑鼠點選地圖上的點彈出視窗及點選彈出快捷選單的實現程式碼

1、首先在SL專案中新增一個抽象類ContextMenu.cs檔案,程式碼如下:using System; using System.Net; using System.Windows; using System.Windows.Controls; using System.

js滑鼠禁止複製,黏貼等功能

禁止滑鼠右鍵:oncontextmenu="return false"; 禁止選擇:onselectstart="return false"; 禁止拖放:ondragstart="return false"; 禁止拷貝:oncopy=document.selectio

40個js小技巧:遮蔽滑鼠、取消選取、防止複製、貼上、轉換位址列圖示

來源:http://www.cnblogs.com/aliang1992/p/6279291.html 1. oncontextmenu="window.event.returnValue=false" 將徹底遮蔽滑鼠右鍵 <table border oncont

jquery監聽ctrl + c 和 滑鼠複製”事件

<!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title>這裡是測試複製

破解網頁不能複製+禁用滑鼠的方法大全+一招破解圖片防盜連值得收藏

在網上覆制一些資料,有時會遇見網頁無法複製的現象,這時我們該怎麼辦? 現在我在網上收集的多種可取方法給大家一起分享一下: ★一、通過使用IE瀏覽器“檔案”下拉選單中的“傳送”之“電子郵件頁面”的操作,在電子郵件頁面中去複製,從而實現下載的目的。 ★二、可以通過使用IE瀏覽器