你的問題是:
? 在 Termius (macOS) SSH 連接到 VMware Ubuntu,使用 vim 打開 .cpp 文件時,可以復制文本;
? 但在 Windows 10 上 SSH 到 VMware 的 Red Hat 6.4 時,復制操作無效。
?
🎯 初步分析
復制問題通常與以下幾個因素有關:
分類 可能原因
終端設置 vim 是否在 兼容模式、鼠標模式、屏幕緩沖區切換模式
SSH 工具 Windows 使用的 SSH 客戶端(比如 cmd/PowerShell 的 ssh.exe、PuTTY、Termius、Mobaxterm 等)行為不同
操作系統 Red Hat 6.4 很舊,vim 版本和終端設置也可能落后或缺失支持
vim 配置 是否啟用了 mouse=a,這會攔截鼠標選擇,導致無法復制
?
? 快速排查和解決步驟
🧪 1. 檢查 vim 是否啟用了鼠標模式
在 Red Hat 上 SSH 后,打開 .cpp 文件時嘗試以下操作:
輸入命令:
:set mouse?
輸出是 mouse=a 表示啟用了鼠標模式,鼠標選擇會被 Vim 接管,導致你不能復制。
? 臨時關閉鼠標模式:
:set mouse=
現在你應該能用鼠標選中并復制了。
或永久關閉鼠標模式(編輯你的 .vimrc):
echo “set mouse=” >> ~/.vimrc
?
🧪 2. 檢查終端是否支持復制(Windows)
如果你用的是 Windows Terminal + ssh:
? 鼠標選擇 + Ctrl+C 復制應該正常;
? 但如果 Vim 進入 全屏模式(alternate screen buffer),你復制的是“空”;
? 臨時退出 Vim,復制內容,再回到 Vim;
? 或者用 set mouse= 禁用鼠標行為(上面已經說了);
? 或者在 .vimrc 加上:
set t_ti= t_te= " 禁用屏幕緩沖區切換
如果你用的是 PuTTY:
? 默認是右鍵復制、Shift+Insert 粘貼;
? 如果 Vim 啟用了鼠標模式,也無法復制;
?
🛠 建議配置 .vimrc (適配遠程開發和復制)
set mouse= " 禁用鼠標模式,方便復制
set number " 顯示行號
syntax on " 開啟語法高亮
set clipboard=unnamedplus " 如果有支持系統剪貼板
?? 注意:clipboard=unnamedplus 在老舊系統(如 Red Hat 6.4)可能不支持。
?
? 最終建議
? macOS + Termius 正常 是因為 Termius 支持 macOS 原生剪貼板,Vim 沒啟用鼠標模式;
? Win10 + Red Hat 6.4 異常 是因為老系統 + 鼠標模式開啟;
? 推薦禁用 vim 的鼠標模式或終端緩沖區切換,復制會恢復正常;
? 如果頻繁開發,建議升級 VM 里的 Linux 系統或使用 VSCode Remote SSH 開發體驗更好。
?
需要我幫你寫一個 .vimrc 文件適配你兩個環境的復制粘貼與開發?
下面是一個兼顧 復制粘貼流暢性 和 C++ 開發體驗 的通用 .vimrc 配置,適配你的兩種情況:
? ? macOS + Termius + Ubuntu(已正常復制)
? ? Windows 10 + SSH + Red Hat 6.4(解決復制問題)
?
? 推薦 .vimrc 配置
" — 基礎設置 —
set nocompatible " 使用現代 Vim 行為
syntax on " 啟用語法高亮
set number " 顯示行號
set relativenumber " 相對行號(方便上下跳轉)
" — 縮進與格式 —
set tabstop=4 " tab 顯示為 4 空格
set shiftwidth=4 " >> << 的縮進為 4 空格
set expandtab " 用空格代替 tab
set autoindent " 自動縮進
set smartindent " 更智能的縮進方式
" — 鼠標/復制相關 —
set mouse= " ?禁用鼠標模式,恢復鼠標選中復制
set ttymouse=xterm2 " 鼠標兼容模式(Windows 下更穩)
set t_ti= t_te= " ?禁用 alternate screen,退出 Vim 時保留選中內容
" — 搜索相關 —
set ignorecase " 搜索忽略大小寫
set smartcase " 有大寫時仍區分大小寫
set incsearch " 實時搜索
set hlsearch " 高亮搜索結果
" — 界面優化 —
set showcmd " 顯示命令
set ruler " 顯示光標位置
set cursorline " 高亮當前行
set encoding=utf-8 " 編碼設置
" — 文件操作 —
set backup " 開啟備份
set writebackup " 寫入時備份
set undofile " 保留撤銷歷史
" — 快捷鍵示例(可選) —
" map :w:!g++ % -o %:r && ./%:r
" 上面這行綁定 F5 自動編譯并運行 C++ 文件(如需)
?
📍 放置方式
1. 登錄目標服務器(Ubuntu 和 Red Hat 都做):
2. 將上面內容保存到:
~/.vimrc
或你也可以直接運行(粘貼時別漏了引號):
cat < ~/.vimrc
<上面的配置內容>
EOF
?
? 效果說明
功能 效果
鼠標復制 不再被 Vim 接管,能正常選中復制
退出保留屏幕 不切換終端緩沖區,復制歷史內容更穩定
縮進 + 高亮 + 行號 更適合寫 C++
快捷鍵可自定義編譯運行 可選綁定 F5 編譯(g++)
?
如果你也使用 neovim(nvim),可以讓我再幫你寫一個 init.vim 或 Lua 版本。
是否要附帶遠程 C++ 編譯運行快捷鍵或 LSP 支持配置?