注:本文為 “ Vim 中鼠標右鍵粘貼、跨系統復制粘貼問題解決方案” 相關文章合輯。
未整理去重。
Linux 入門:vim 鼠標不能右鍵粘貼、跨系統復制粘貼
foryouslgme 發布時間 2016 - 09 - 28 10:24:16
Vim基礎
- 命令模式(command-mode)
- 插入模式(insert-mode)
- 可視模式(visual-mode)
- 正常模式(normal-mode) (普通模式)
- 正常模式
正常模式主要用來瀏覽和修改文本內容的,一般的,打開Vim都是正常模式。
進入正常模式:在任何模式下,只要按下 Esc 鍵就可以返回正常模式
- 插入模式
插入模式則用來修改文本的
進入插入模式:正常模式 + 插入符
,如下插入符:
i
在光標所在字符前開始輸入文字并進入插入模式
a
在光標所在字符后開始輸入文字并進入插入模式
A
在行尾開始輸入文字并進入插入模式。
o
(字母 o) 在光標所在行的下面單獨開一新行來輸入文字并進入插入模式
O
(大寫字母 O) 在光標所在行的上面單獨開一新行來輸入文字并進入插入模式。
s
刪除光標所在的字符并進入插入模式
I
在行首開始輸入文字并進入插入模式。
S
刪除光標所在行并進入插入模式
G
文章末尾
crtl + f
向下翻頁
ctrl + b
向上翻頁
- 可視模式
可視模式相當于高亮選取文本后的普通模式,可視模式具有子模式,以行為單位進行選取的可視行模式,使用“V”鍵進入和以塊為單位進行選取的可視塊模式,使用“Ctrl+v”鍵進入。
進入可視模式:正常模式 + ctrl + v|V
- 命令模式
命令模式則多用于操作文本文件(而不是操作文本文件的內容),例如保存文件;或者用來改變編輯器本身的狀態,例如設定多欄窗口、標簽或者退出編輯器……
進入命令模式:按esc + : command
如::w
保存當前文件不退出,:q!
強制退出,:x
保存且退出
正題(不能右鍵粘貼設置方法)
用vim時,鼠標右鍵不能粘貼而是進入了visual模式,解決方法:
方法一:
:set mouse-=a
1
方法二:
編輯 ~/.vimrc 文件,加入如下代碼:
if has('mouse') set mouse-=a
endif
123
set mouse=a
【這個是用來開啟鼠標功能的,a表示所有模式】
附
vi的三種模式:命令模式
、插入模式
、可視模式
。鼠標可以啟動于各種模式中:
The mouse can be enabled for different modes:
n
Normal mode
v
Visual mode
i
Insert mode
c
Command-line mode
h
all previous modes when editing a help file
a
all previous modes
r
for |hit-enter| and |more-prompt| prompt
Normally you would enable the mouse in all four modes with:
:set mouse=a
When the mouse is not enabled, the GUI will still use the mouse for
modeless selection. This doesn’t move the text cursor.
所以配置文件中的set mouse=a
啟動了所有模式,這樣就屏蔽了鼠標右健功能。
查看之前的復制內容
:reg
>>>>>>
和<<<<<<
等和git
中的修改記錄一樣。
Vim 配置#Vim 中使用鼠標功能
馬丁路德彬 發布時間 2017 - 02 - 10 11:53:47
1、簡介
近期使用 vim 時,發現 vim 也可使用鼠標,本章主要介紹如何啟用鼠標功能。
2、打開鼠標功能
在命令模式下輸入 :set mouse=a
。
3、關閉鼠標功能
在命令模式下輸入 :set mouse-=a
。
4、鼠標模式
‘mouse’
的參數說明如下:
// n 普通模式
// v 可視模式
// i 插入模式
// c 命令行模式
// h 在幫助文件里,以上所有模式
// a 以上所有模式
// r 跳過|lit - enter|提示
// A 在可是模式下自動選擇
'mouse'
的缺省值為空,即默認不使用鼠標。通常可使用 :set mouse=a
來啟用鼠標(此設置等價于將 'mouse'
設為 “nvich”)。若只想在某些模式或特定任務中使用鼠標,需關注對應模式的字母,例如:
:set mouse=nv
:使鼠標在普通模式和可視模式下可用。:set mouse=h
:使鼠標僅在幫助文件中可用(可通過 “g” 實現標簽跳轉)。
鼠標能否在可視模式或選擇模式下開始選擇,取決于 “selectmode” 選項是否包含 “mouse”。
5、解決鼠標模式右鍵不能粘貼問題
在設置了 'mouse'
選項(見上文)的情況下,使用鼠標和可視模式進行復制/粘貼的步驟如下:
- 在文本的第一個字符上按鼠標左鍵,移動鼠標到文本的最后一個字母,然后釋放左鍵。這將啟動可視模式并高亮選擇區域。
- 按 “y” 將可視文本抽出到無名寄存器中。
- 在要插入的位置上按鼠標左鍵。
- 按鼠標中鍵(滾輪)進行粘貼。
解決配置 vim 之后不能鼠標右鍵復制問題
路安在 發布時間:2022 - 05 - 21 12:31:30
問題描述
配置完 vim 后,無法使用鼠標右鍵進行復制和粘貼,但從 vim 外復制的內容可通過鼠標右鍵粘貼。
解決問題過程
起初,嘗試對 vimrc
文件中有關復制的命令進行注釋和刪除,但均未解決問題,CTRL + c
、ctrl + v
也無法使用。
隨后,搜索瀏覽網上解答,部分回答稱選中需要復制的內容后按鍵盤上的 y
即可復制,但實際操作時,選中內容未復制成功且被 y
字母覆蓋。
最終,通過參考 https://blog.csdn.net/victoryckl/article/details/8122012 解決了問題。
解決方法
常規復制粘貼
- 先將光標置于要粘貼的位置或空白處。
- 找到要復制的語句,在鍵盤上一直按住
shift
,再用鼠標左鍵選中,然后點擊鼠標滑輪,選中的語句或內容將直接粘貼到光標所在位置,無需使用crtl + V
。
跨界面復制粘貼
- 在 Vim 界面中,直接找到需要復制的語句,先按住
shift
,再用鼠標左鍵選中。 - 無需點擊鼠標滑輪。
- 切換到其他界面,通過鼠標右鍵進行粘貼。
總結
- 復制:按住
shift
,再用鼠標左鍵選中。 - 粘貼:點擊鼠標滑輪,內容將直接粘貼到光標位置。
Vim 全局配置 / 設置鼠標模式
BrandonPei 發布時間 2023 - 12 - 03 15:10
在新安裝的 Linux(Debian)系統上,vim 一右擊粘貼就進入 insert(Visual)模式。經查詢,需設置 set mouse=
,但每次設置較為麻煩,同時還想修改全局配色。
定位全局配置文件
有博客指出,在 /usr/share/vim/share/...
下有個 vimrc
文件,但不同系統或版本可能存在差異。一般先在 /usr/share/vim
目錄下查找,在此找到了 /usr/share/vim/vimrc
文件,文件末尾有如下幾行:
" Source a global configuration file if available
if filereadable("/etc/vim/vimrc.local")source /etc/vim/vimrc.local
endif
由此可知,應修改 /etc/vim/vimrc.local
文件。分析為何設置 vimrc.local
而非直接修改原文件:vim 每次更新后可能修改默認配置,直接修改會在更新時產生沖突,而 local
表示本地配置,與上游 vim 配置無關。
最終在 /etc/vim/vimrc.local
文件中添加如下內容:
set mouse=
colorscheme slate
補充說明:
經實測,在上述位置添加 set mouse=
不會生效。
參考
- vim 設置 mouse 行為不生效 - 簡書
https://www.jianshu.com/p/29744bae5f3d
可知,鼠標行為在 vimrc.local
之后加載。因此,有兩種解決方法:
-
在
/etc/vim/vimrc.local
中添加let skip_defaults_vim = 1
。 -
在要用的 root 用戶主目錄下創建
.vimrc
文件,但這樣會導致 root 用戶沒有代碼高亮。解決辦法是在
~/.vimrc
中添加一句source
,即:
source $VIMRUNTIME/defaults.vim
set mouse=""
補充說明 2:
考慮到鼠標模式較為有用,可設置快捷鍵以便快速切換鼠標和非鼠標模式。在 /etc/vim/vimrc.local
中添加以下代碼:
map <F9> <ESC>:call Mouse()<CR>function Mouse()if has('mouse')if &mouse=="":set mouse=a:echo "mouse enabled"else:set mouse="":echo "mouse disabled"endifelse:echo "no mouse"endif
endfunction
上述代碼中,map
命令將 F9 按鍵綁定到 <ESC>:call Mouse()<CR>
。其中,ESC
用于應對已進入 Visual 模式的情況,先退出該模式,再執行函數;CR
表示換行,用于應用命令。函數中 &mouse
表示獲取 vim 中 mouse
選項的值。
vim 設置 mouse 行為不生效
sarto 屬地:陜西 發布時間 2021.04.01 10:00:56
vim 在 debina 下的運行環境
在 vim 中輸入 :echo $VIMRUNTIME
,會顯示 /usr/share/vim/vim81
,此為 debian vim 運行環境的路徑。
vim 中在 vimrc 中修改 mouse 不生效的問題
在 vimrc
中設置 vimrc-=a
未生效,經查找發現,/usr/share/vim/vim81/defaults.vim
中默認的鼠標行為影響了 vimrc
的配置。將該文件中如下代碼:
78 if has('mouse')
79 set mouse=a
80 endif
的 set mouse=a
改為 set mouse-=a
即可。
最后編輯時間:2021.04.01 10:01:14
vim 鼠標右鍵無法復制
jeensung 發布時間 2010 - 12 - 14 20:20:32
修改 ~/.vimrc
文件后,發現鼠標右鍵無法復制文本。在配置文件(~/.vimrc
)中發現如下內容:
11 " In many terminal emulators the mouse works just fine, thus enable it.
12 if has('mouse')
13 set mouse=a
14 endif
在 vim 幫助文件中,關于鼠標模式有如下解釋:
The mouse can be enabled for different modes:n Normal modev Visual modei Insert modec Command - line modeh all previous modes when editing a help filea all previous modesr for |hit - enter| and |more - prompt| prompt
Normally you would enable the mouse in all four modes with::set mouse=a
When the mouse is not enabled, the GUI will still use the mouse for
modeless selection. This doesn't move the text cursor.
可見,配置文件中的 set mouse=a
啟用了所有模式,導致 vim 接管了鼠標控制。
鼠標事件有程序處理和 X 處理兩種方式。若由 X 負責處理,則是左鍵選擇,中間粘貼。要讓 vim 中由 X 負責處理,有以下兩種方法:
- 按住
shift
鍵進行選擇,此時由 X 處理該選擇,copy
選項將啟用。若松開shift
鍵,則由 vim 處理該選擇。 - 在
.vimrc
中設置set mouse=
(即清空),此時 vim 不再干涉鼠標選擇,始終將處理權交給 X。這種情況下,鼠標處于無模式編輯狀態,也可使用鼠標切換 vim 中的 tab 窗口,且 vim 中的編輯光標不會跟隨鼠標。
參考鏈接
-
Linux 入門:vim 鼠標不能右鍵粘貼、跨系統復制粘貼_vim 中當鼠標右鍵功能無法使用時,如何開啟 - CSDN 博客
-https://blog.csdn.net/foryouslgme/article/details/52688285 -
Vim 配置#Vim 中使用鼠標功能_zsh vim 鼠標插入模式 - CSDN 博客
https://blog.csdn.net/qq_27968607/article/details/54966912 -
解決配置 vim 之后不能鼠標右鍵復制問題_vim 里的鼠標右鍵 - CSDN 博客
https://blog.csdn.net/weixin_51622761/article/details/124895911 -
Vim 鼠標配置詳解 - CSDN 博客
https://blog.csdn.net/victoryckl/article/details/8122012 -
Vim 全局配置 / 設置鼠標模式 - BrandonPei - 博客園
https://www.cnblogs.com/BrandonPei/p/17873231.html -
vim 設置 mouse 行為不生效 - 簡書
https://www.jianshu.com/p/29744bae5f3d -
vim 鼠標右鍵無法復制_jeensung_新浪博客
http://blog.sina.com.cn/s/blog_622d95080100ny94.html