Debian

vim 剪切和粘貼在 Stretch / Debian 9 中不起作用

  • May 16, 2020

在這裡將一些 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"and set mouse="v; 結果並不好。

set mouse=""最後在同一個文件中進行設置,取得了一定的成功。

但是,它也不能在 100% 的時間內正常工作。還有什麼可以做的?

解決方案:更改mouse=amouse=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

引用自:https://unix.stackexchange.com/questions/318824