服务器与大带宽专家 · 持牌IDC/CDN/ISP服务商
简米科技官网JIANMI TECH
资讯 2026-10-31 简米科技 3,964 字 9 分钟阅读

虚拟机里vim怎么用?虚拟机vim命令大全与配置教程

导读虚拟机里的vim和你宿主机上的vim是同一份软件,差别全在终端环境:字符集、剪贴板、鼠标支持这三件事要在虚拟机内部单独处理一遍, 换句话说,宿主机上顺手的那套习惯,搬进虚拟机后不是错了,而是缺配置,先看清虚拟机里vim的运行环境差在哪宿主机能用、虚拟机别扭的三个变量vim 本身不关心自己跑在物理机还是虚拟机上……

虚拟机里的vim和你宿主机上的vim是同一份软件,差别全在终端环境:字符集、剪贴板、鼠标支持这三件事要在虚拟机内部单独处理一遍。 换句话说,宿主机上顺手的那套习惯,搬进虚拟机后不是错了,而是缺配置。

先看清虚拟机里vim的运行环境差在哪

宿主机能用、虚拟机别扭的三个变量

vim 本身不关心自己跑在物理机还是虚拟机上,它只关心自己连着什么样的终端,落到 VMware、VirtualBox、Hyper-V 这类环境里,真正变化的只有三处。

  • 终端类型:虚拟机窗口里的控制台终端,$TERM 常常是 xterm 或 linux,颜色、功能键、鼠标事件的识别能力弱于本机的 iTerm2、Windows Terminal。
  • 字符集环境:LANG、LC_ALL 没设好,中文注释就是一屏问号,这跟 vim 无关,是 locale 的问题。
  • 剪贴板通道:宿主机和虚拟机之间隔着虚拟化层,vim 的 "+y 要拿到系统剪贴板,得先有 X11 或增强工具在中间牵线。

三种常见操作方式的体验对照

操作方式 典型场景 vim 体验上的差别
在虚拟机窗口里直接开终端 本地 VMware、VirtualBox 练习环境 复制粘贴依赖增强工具,中文字体需单独配置
从宿主机 SSH 到虚拟机 虚拟机跑在服务器或另一台机器上 复制粘贴由本地终端接管,最省心
通过共享文件夹、挂载目录改文件 宿主机写代码、虚拟机里跑服务 文件属主和换行符容易出问题,建议统一 LF

行业内比较一致的做法是:能 SSH 就 SSH,SSH 进去后,你用的是宿主机的终端和输入法,剪贴板、字体、快捷键全部继承本机习惯,虚拟机只负责跑进程,据公开资料,vim 长期是 Linux 发行版预装的默认编辑器之一,Red Hat 系、Debian 系都把它放在基础镜像里,这也意味着多数虚拟机开机就自带,不用额外装。

虚拟机里vim怎么用:从敲开文件到保存退出

先接受它不是记事本

新手最容易卡住的点,是把 vim 当记事本用,vim 是模态编辑器,同一批按键在不同模式下含义完全不同,打开文件后你默认处在普通模式,敲 i 才进插入模式开始打字,打完按 Esc 回到普通模式,再用 开头的命令去做保存、退出、替换。

一套够用三周的按键

  1. vim 文件名 打开;文件不存在时会新建,但只有 w 之后才真正落盘。
  2. i 在光标前插入,a 在光标后插入,o 在下一行新开一行。
  3. Esc 回普通模式, 进命令行模式。
  4. w 保存,q 退出,wq 保存并退出,q! 丢弃修改强退。
  5. 向下搜索,n 跳下一个,N 跳上一个。
  6. dd 删当前行,yy 复制当前行,p 粘贴,u 撤销,Ctrl+r 重做。
  7. gg 到文件首行,G 到末行,数字G 跳到指定行。
  8. %s/旧内容/新内容/g 全文件替换,把 g 换成 gc 会逐处确认。

一份可直接抄进 .vimrc 的配置

在虚拟机里创建 ~/.vimrc,粘进下面几行,日常编辑就顺手了。

set nocompatible
set number
set tabstop=4
set shiftwidth=4
set expandtab
set encoding=utf-8
set fileencodings=ucs-bom,utf-8,gbk,gb18030,latin1
set mouse=a
syntax on

set mouse=a 这一行在虚拟机里尤其值钱,开了之后可以用鼠标点光标位置、拖选文本,操作直觉立刻向普通编辑器靠拢。

虚拟机里vim和vi的区别:为什么你的按键没反应

有人照着教程敲 dd、u,结果毫无反应,八成是敲的 vi 而不是 vim,这两者在多数发行版里指向同一个程序,但启动参数不同。

  • 用 vi 启动时,vim 会进入 vi 兼容模式,u 只能撤销一步,方向键可能插入乱码字符,退格键行为也不对。
  • 用 vim 启动则是完整模式,.vimrc 会正常加载。
  • 部分精简镜像装的是 vim-tiny,功能被裁剪,+clipboard、语法高亮都缺。

对比一下:Ubuntu 上 sudo apt install vim 装完整版,Debian 上同理;CentOS、Rocky 系用 sudo yum install vim-enhanced 或 sudo dnf install vim-enhanced,装完用 vim --version | head -5 看一眼版本和特性列表,心里有底。

顺带一提,在 .vimrc 第一行写 set nocompatible,可以避免某些系统上 vi 兼容模式带来的连锁问题。

虚拟机vim中文乱码怎么解决:从locale查到fileencoding

中文乱码分三层,顺序别搞反,从外往里查。

第一层:系统 locale

在终端执行 locale,看 LANG 是不是 C 或 POSIX,如果是,中文环境基本没戏,修改 /etc/locale.conf(CentOS、Rocky)或 /etc/default/locale(Ubuntu),写入 LANG=zh_CN.UTF-8 或 LANG=en_US.UTF-8,登出重进生效,更简单的替代方案是用 en_US.UTF-8,界面英文但中文文件不乱码,服务器上很多人这么干。

第二层:终端本身的编码

虚拟机窗口终端如果被设成 GBK,vim 里显示 UTF-8 文件就会花屏,VMware、VirtualBox 的终端设置里把字符集改成 UTF-8,或者直接 SSH 进来绕开这个问题。

第三层:文件自身的编码

在 vim 里执行 set fileencoding? 查看当前识别结果,如果是 latin1,说明识别错了,用 e ++enc=gbk 以 GBK 重新读入;确认内容正常后,set fileencoding=utf-8 再 w,就把文件转成了 UTF-8。.vimrc 里的 fileencodings 顺序决定了 vim 的探测顺序,把 utf-8 放最前面通常最稳。

虚拟机和宿主机之间vim复制粘贴失败怎么办

这是虚拟机场景里被问得最多的一类问题,原因基本只有两个。

先确认 vim 带不带剪贴板支持

执行 vim --version | grep clipboard,看到 +clipboard 才能用 "+y 复制到系统剪贴板、"+p 从系统剪贴板粘贴,看到 -clipboard 就是没编进去,装 vim-gtk3(Ubuntu)或 vim-X11 即可。

再确认虚拟机增强工具装没装

  • VMware:确认虚拟机设置里“选项客户机隔离”中的复制粘贴已勾选,并安装 open-vm-tools 或 VMware Tools。
  • VirtualBox:安装增强功能包(Guest Additions),装完后双向剪贴板才生效。
  • Hyper-V:使用增强会话模式。

实在懒得折腾的替代路径

  • 在 vim 里 set paste 再粘,能避免自动缩进把代码搞成阶梯状。
  • 选中即复制:set mouse=a 之后用鼠标拖选,虚拟机终端一般会把选区送进宿主机剪贴板。
  • 再不行就走 SSH 或共享文件夹,把文件当作中转站,反而最稳。

在简米云ECS这类云虚拟机里装vim和找配置

云主机本质也是虚拟机,只是你摸不到它的显示器,Ubuntu 系执行 sudo apt update && sudo apt install vim,CentOS 系执行 sudo dnf install vim-enhanced,配置文件分两级:

  • 全局配置:Ubuntu 是 /etc/vim/vimrc,CentOS 系是 /etc/vimrc。
  • 用户配置:~/.vimrc,优先级更高,改坏了只影响自己,推荐先从这里下手。

改完用 source ~/.vimrc 立即生效,不用退出重开。

业内专家指出,服务器环境下用 .vimrc 做轻量定制,比装整套插件更利于排障,虚拟机本来就常被当成一次性环境,配置越薄,重建越快。

会了这些,虚拟机里的vim就不再别扭

虚拟机不该成为你放弃 vim 的理由,它只是要求你把终端、编码、剪贴板这三件外围的事补齐,补完之后,SSH 也好、本地窗口也好,操作手感就和宿主机上没区别了。

虚拟机里vim常见问题问答

虚拟机里vim方向键变成 ABCD 怎么处理?

这是 vi 兼容模式的典型表现,在 ~/.vimrc 里加 set nocompatible,并确认是用 vim 而不是 vi 启动,精简版 vim-tiny 也可能出现类似问题,换成完整版 vim 即可。

虚拟机里vim打开大文件卡顿明显怎么办?

先排除虚拟机显示层的影响,把窗口降到最小或用 SSH 接入,vim 侧可以临时 set nowrap、set noswapfile、syntax off,关闭换行计算、交换文件和语法高亮,千行级日志的翻页速度会明显回升。

虚拟机里vim的配置改动重启后丢失是怎么回事?

多数情况是把命令敲在了运行时,没有写进文件。set number 只在当前会话有效,要持久化必须写进 ~/.vimrc 或 /etc/vim/vimrc,写完后 source ~/.vimrc 生效,重启后由 vim 自动加载。

分享本文
本文为 简米科技官网 原创,已由运维技术专家审核。转载请注明来源:原文链接
售前咨询 服务热线 售后 邮箱