Termius ssh连接服务器 vim打开的文件无法复制问题

发布于:2025-05-13 ⋅ 阅读:(21) ⋅ 点赞:(0)

你的问题是:
• 在 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 支持配置?