Vim 中文编码配置指南

编码相关选项 选项 缩写 作用 encoding enc Vim 内部编码(Buffer、消息文字) fileencodings fencs 打开文件时尝试的编码列表(按顺序猜测) fileencoding fenc 当前文件的编码(保存时使用) termencoding tenc 终端编码(终端模式下使用) 编码转换流程 打开文件:按 fileencodings 列表猜测编码 → 转换为 encoding 保存文件:从 encoding 转换为 fileencoding 终端显示:termencoding ↔ encoding 确保 Vim 编译时包含 +multi_byte 和 +iconv(:version 查看)。 常用配置 只编辑 UTF-8 文件 set encoding=utf-8 set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5 set fileencoding=utf-8 Windows 环境(混合编码) set encoding=cp936 set fileencodings=ucs-bom,utf-8,cp936,gb18030 set fileencoding=utf-8 终端环境额外设置 set termencoding=cp936 " 或 utf-8,与终端编码一致 常见问题 Q: 为什么一次只能删除半个汉字? encoding 设置错误。确保 encoding=utf-8 或 encoding=cp936。 Q: 如何将 GBK 文件另存为 UTF-8? :e file.txt " 打开文件 :set fenc=utf-8 " 设置目标编码 :w " 保存 Q: 为什么提示"不能转换"? ...

2015年5月9日 · 1 分钟 · Jid

Vim 与系统剪贴板的复制粘贴

快速上手 操作 快捷键 Vim → 系统剪贴板 选中内容后 "+y 系统剪贴板 → Vim 正常模式下 "+p 或 Shift+Insert 原理 Vim 有多个寄存器(用 :reg 查看),其中 + 寄存器与系统剪贴板关联。 寄存器 用途 " 未命名寄存器(默认,y/p 直接使用) 0 最近一次 y 复制的内容 1-9 最近删除/修改的内容 a-z 命名寄存器(用户自定义) + 系统剪贴板 操作方式 " 复制到指定寄存器:"ay(复制到寄存器 a) " 粘贴指定寄存器:"ap(粘贴寄存器 a 的内容) " 系统剪贴板操作: "+y " 复制选中内容到系统剪贴板 "+p " 粘贴系统剪贴板内容 前缀 " 是寄存器标识符,不是字符串引号。 注意事项 Ubuntu、openSUSE 等默认安装的 vim-tiny 不支持系统剪贴板。需要安装完整版: # Ubuntu sudo apt-get install vim-gtk # 或 vim-gnome / vim-athena # 验证是否支持 vim --version | grep clipboard # 应显示 +clipboard

2015年5月1日 · 1 分钟 · Jid

Vim 关闭自动备份文件

问题 Vim 默认在保存文件时会生成 ~ 后缀的备份文件(如 config.yml~),污染目录。 解决 在 Vim 中执行 :e $MYVIMRC 打开配置文件,添加: set nobackup " 关闭备份文件(file~) set nowritebackup " 关闭写入时的临时备份 set noswapfile " 关闭交换文件(.file.swp)(可选) 如果只想对特定目录关闭备份: set backupskip=/tmp/*,/private/tmp/*

2015年4月3日 · 1 分钟 · Jid

Vim 打开文件时自动跳到上次的光标位置

问题 在 Linux 下用 Vim 打开文件时,光标总是在第一行,而不是上次退出时的位置。Windows 下的 gVim 默认支持这个功能。 解决方法 将以下代码添加到 ~/.vimrc: if has("autocmd") filetype plugin indent on augroup vimrcEx au! autocmd BufReadPost * \ if line("'\"") > 1 && line("'\"") <= line("$") | \ exe "normal! g`\"" | \ endif augroup END else set autoindent endif 原理 line("'\"") 获取上次退出时光标所在行号(Vim 自动在 .viminfo 中记录) exe "normal! g""跳转到该位置(用g` 跳转,不改变 jumplist) 判断条件确保行号有效(大于 1 且不超过文件总行数)

2015年3月1日 · 1 分钟 · Jid