vim 剪切和粘貼在 Stretch / Debian 9 中不起作用
在這裡將一些 VM 伺服器升級到 Debian 9。
現在使用時
ssh
,我們無法在遠端終端之間複製和粘貼。游標似乎正在移動,並標記文本,儘管方式比平時更有趣/不同,但是在執行 command-C / command-V 或在相應菜單中複製和粘貼時,沒有任何內容被複製到剪貼板.
我們還嘗試使用 Shift 和其他鍵盤組合進行滑鼠移動,但沒有得到積極的結果。
這在 OS/X 中發生,即 Sierra 和 El Capitan,在 Windows 中,也使用 mobaXterm 終端。
這種情況是由於 vim 意識到有滑鼠。
在 Stack Overflow 中的其他問題之後,我
/etc/vim/vimrc.local
使用set mouse="r"
andset mouse="v
; 結果並不好。
set mouse=""
最後在同一個文件中進行設置,取得了一定的成功。但是,它也不能在 100% 的時間內正常工作。還有什麼可以做的?
解決方案:更改
mouse=a
為mouse=r
您本地的.vimrc
.正如接受的答案所說,設置它的問題
/usr/share/vim/vim80/defaults.vim
是它會在每次更新時被覆蓋。我搜尋了很長時間,最終找到了這個: https ://bugs.debian.org/cgi-bin/bugreport.cgi?bug=864074本地解決方案(有缺陷):
第一個解決方案是使用本地 .vimrc 文件並將其設置在那裡。
~/.vimrc
因此,您可以為每個使用者 創建一個本地 .vimrc ( ) 並在那裡設置您的選項。或者創建一個,/etc/skel
以便為您創建的每個新使用者自動創建它。但是當您使用本地
.vimrc
文件時,您必須在那裡設置所有選項,因為如果有一個 local.vimrc
,則defaults.vim
根本不會載入!如果沒有本地.vimrc
文件,您的所有設置都將從defaults.vim
.全域解決方案(首選):
**我想要一個適用於所有使用者的全域配置,它載入預設選項,然後使用我的個人設置添加或覆蓋預設設置。**幸運的是,在 Debian 中有一個選項:
/etc/vim/vimrc.local
將在/etc/vim/vimrc
. 因此,您可以創建此文件並載入預設值,防止它們再次被載入(最後),然後添加您的個人選項:請創建以下文件:
/etc/vim/vimrc.local
" This file loads the default vim options at the beginning and prevents " that they are being loaded again later. All other options that will be set, " are added, or overwrite the default settings. Add as many options as you " whish at the end of this file. " Load the defaults source $VIMRUNTIME/defaults.vim " Prevent the defaults from being loaded again later, if the user doesn't " have a local vimrc (~/.vimrc) let skip_defaults_vim = 1 " Set more options (overwrites settings from /usr/share/vim/vim80/defaults.vim) " Add as many options as you whish " Set the mouse mode to 'r' if has('mouse') set mouse=r endif
(請注意,
$VIMRUNTIME
上述程式碼段中使用的值類似於/usr/share/vim/vim80/defaults.vim
。)如果您還想啟用“舊的複制/粘貼行為”,請在該文件的末尾添加以下行:
" Toggle paste/nopaste automatically when copy/paste with right click in insert mode: let &t_SI .= "\<Esc>[?2004h" let &t_EI .= "\<Esc>[?2004l" inoremap <special> <expr> <Esc>[200~ XTermPasteBegin() function! XTermPasteBegin() set pastetoggle=<Esc>[201~ set paste return "" endfunction