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

你的问题是:

• 在 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 支持配置?

相关推荐
weixin_4373982111 分钟前
转Go学习笔记
linux·服务器·开发语言·后端·架构·golang
南瓜胖胖1 小时前
【seismic unix 合并两个su文件】
服务器·unix
weixin_399380692 小时前
k8s一键部署tongweb企业版7049m6(by why+lqw)
java·linux·运维·服务器·云原生·容器·kubernetes
阿巴~阿巴~2 小时前
Linux基本命令篇 —— uname命令
linux·运维·服务器
天空之城夢主2 小时前
KVM高级功能部署
linux·服务器
云资源服务商6 小时前
解锁阿里云日志服务SLS:云时代的日志管理利器
服务器·阿里云·云计算
朱包林7 小时前
day45-nginx复杂跳转与https
linux·运维·服务器·网络·云计算
孞㐑¥8 小时前
Linux之Socket 编程 UDP
linux·服务器·c++·经验分享·笔记·网络协议·udp
柳鲲鹏9 小时前
WINDOWS最快布署WEB服务器:apache2
服务器·前端·windows
bcbobo21cn12 小时前
初步了解Linux etc/profile文件
linux·运维·服务器·shell·profile