Windows 下正确使用 Vim 的方式

2023年 1月 4日 109.5k 0

之前使用过 Gygwin,也是用过 Git Bash。但在 Vim 面前,这两货都不好使,最终选择了 MSYS2 作为 Console 端。

1. Cygwin、MinGW、MSYS2 比较

在 Windows 下,使用 Vim 的关键在于找到一个合适的 Console。在安装 Vim 插件时,合适的 Console,能帮你避开大部分坑,使你专心使用 Vim。

特点CygwinMinGW/MSYSMSYS2
是否 GNU
更多软件支持 支持绝大多数的 GNU 软件 支持常用软件,Git、Vim 等软件需要独立支持 支持大多数 GNU 软件
更类 Linux Cygwin 在 Windows 中就好像 Wine 在 Linux 中 实现了 Bash 等主要的 Linux 程序 原生 64/32 bit 支持
GCC 编译 内含 MingGW32 交叉编译功能,既支持依赖 cygwin.dll 的程序编译,也支持独立的 Windows 程序编译;可以直接编译 Linux 下的应用程序 支持独立的 Windows 程序编译 支持独立的 Windows 程序编译
中文支持 直接支持中文显示和输入法 需要配置才能支持中文显示和输入,删除一个中文字符需要删除 2 次 支持中文显示和输入法,中文帮助系统和中文提示(部分软件)
运行速度

这里果断选择 MSYS2 。因为有个坑(msys-python27.dll)绕不过。MSYS2 集成了 pacman 。pacman 是 Arch Linux 的软件包管理器,pacman 的常用命令如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
pacman -S package_name  #安装软件包
pacman -R package_name  #删除软件包
pacman -Rs package_name #顺便删除软件包相关依赖
pacman -Syu             #升级系统中的所有包
pacman -Ss package      #查询软件包
pacman -Qs package      #查询已安装的包
pacman -Qi package      #显示查找的包的信息
pacman -Ql package      #显示你要找的包的文件都安装的位置
pacman -Sw package      #下载但不安装包
pacman -U  /path/package.pkg.tar.gz #安装本地包
pacman -Scc             #清理包缓存,下载的包会在/var/cache 这个目录
pacman -Sf pacman       #重新安装包

访问 MSYS2 官网,下载安装 MSYS2。

2. 更新源

MSYS2 的源配置文件在 /etc/pacman.d 中。

1
2
 ls /etc/pacman.d/
gnupg  mirrorlist.mingw32  mirrorlist.mingw64  mirrorlist.msys

分别将中科大的源,新增在以 mirrorlist 开头的三个源文件中。编辑 /etc/pacman.d/mirrorlist.mingw32 ,在文件开头添加:

1
Server = http://mirrors.ustc.edu.cn/msys2/mingw/i686

编辑 /etc/pacman.d/mirrorlist.mingw64 ,在文件开头添加:

1
Server = http://mirrors.ustc.edu.cn/msys2/mingw/x86_64

编辑 /etc/pacman.d/mirrorlist.msys ,在文件开头添加:

1
Server = http://mirrors.ustc.edu.cn/msys2/msys/$arch

刷新缓存数据,执行命令:

1
pacman -Sy

3. 安装配置 Vim

  • 安装 Git (Vim 也会被安装上)

执行命令:

1
pacman -S git
  • 安装 Python 2

执行命令:

1
pacman -S python2
  • 配置 Vim
1
2
3
4
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
vim ~/.vimrc
# 编辑 vimrc 内容
# ...

进入 Vim 之后,执行 :PluginInstall 即可安装相关 Vim 插件。

4. 处理乱码问题

  • MSYS2 显示乱码

新建文件,/usr/bin/win:

1
2
#!/bin/bash
[email protected] |iconv -f gbk -t utf-8

新建文件,/etc/profile.d/alias.sh:

1
2
3
4
5
6
7
8
alias ls="/bin/ls --color=tty --show-control-chars"
alias grep="/bin/grep --color"
alias ll="/bin/ls --color=tty --show-control-chars -l"

alias ping="/bin/win ping"
alias netstat="/bin/win netstat"
alias nslookup="/bin/win nslookup"
alias ipconfig="/bin/win ipconfig"

除了上面的方法,还可以右键窗口,选择 Options 设置中文显示:

  • vim 中文乱码

在 .vimrc 文件中新增:

1
2
3
4
5
6
7
8
9
" 默认编码
if has('vim_starting')
    if &encoding !=? 'utf-8'
        let &termencoding = &encoding
    endif
    set encoding=utf-8
    set fileencoding=utf-8
    set fileencodings=ucs-bom,utf-8,default,cp936
endif

5. ConEmu 或 Cmder 配置

在 Settings 中,Startup -> Tasks 新增一项。

1
set  MSYS2_PATH_TYPE=inherit & set CHERE_INVOKING=1 & %ConEmuDrive%interpretermsys2_32usrbinbash.exe --login -i -new_console:C:"%ConEmuDrive%interpretermsys2_32msys2.ico"

6. 参考

  • https://github.com/ets-labs/python-vimrc
  • https://vimawesome.com/
  • https://wizardforcel.gitbooks.io/use-vim-as-ide/content/0.html
  • https://vim-adventures.com/
  • https://blog.zengrong.net/post/1557.html

相关文章

KubeSphere 部署向量数据库 Milvus 实战指南
探索 Kubernetes 持久化存储之 Longhorn 初窥门径
征服 Docker 镜像访问限制!KubeSphere v3.4.1 成功部署全攻略
那些年在 Terraform 上吃到的糖和踩过的坑
无需 Kubernetes 测试 Kubernetes 网络实现
Kubernetes v1.31 中的移除和主要变更

发布评论