Windows 下的 Vim 编程
Posted 河乐不为
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Windows 下的 Vim 编程相关的知识,希望对你有一定的参考价值。
引言
之前习惯了在 Linux 下使用 Vim 进行编程,最大的好处就是能摆脱鼠标进行编程,而在 windows 下 cmd 并没有办法直接安装 Vim ,Windows 下可以安装 gVim ,但要直接在 cmd 窗口中直接像 Linux 下输入 vim 进入编程,还是需要进行一些配置。
安装 gVim
直接在 vim 官网 下载最新的 Windows 版本的安装包 gvim81.exe ,直接按照默认设置安装即可(注意记录安装路径)。
配置 cmd 中使用 vim
在系统环境变量中的 Path 变量中配置 gVim 的安装路径
或者创建一个
VIM_HOME
变量,变量值为 gVim 安装路径,再将%VIM_HOME%
添加到 Path 中
由于使用 vim 编辑文件需要管理员身份,因此需要设置 cmd 默认使用系统管理员身份打开,设置步骤如下:
-
按键盘
win
键,在附件中找到命令提示符
; -
鼠标右键选中程序中的
命令提示符
,打开属性
; -
在快捷方式栏中选择
高级
,勾选用管理员身份运行
,点击确定即可。
配置完成后,直接在 cmd 中输入 vim [文件名]
,即可使用 vim 模式打开文件:
$ vim test.txt
当然也可以在独立于 cmd 的 gVim 窗口中打开文件,直接在 cmd 中输入:
$ gvim test.txt
插件管理器 vundle
vundle 是一个开源的最常用的 vim 的插件管理器,其源码地址 VundleVim/Vundle.vim 。假如想要在 Windows 下使用它,安装步骤如下:
-
安装 Git 和 Curl
$ git --version git version 2.13.0.windows.1 $ curl --version curl 7.63.0 (x86_64-pc-win32) libcurl/7.63.0 OpenSSL/1.1.1a (WinSSL) zlib/1.2.11 brotli/1.0.7 WinIDN libssh2/1.8.0 nghttp2/1.35.1 Release-Date: 2018-12-12 Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp scp sftp smb smbs smtp smtps telnet tftp Features: AsynchDNS IDN IPv6 Largefile SSPI Kerberos SPNEGO NTLM SSL libz brotli TLS-SRP HTTP2 HTTPS-proxy MultiSSL
-
安装 vundle 到 gVim 的安装目录下:
$ git clone https://github.com/VundleVim/Vundle.vim.git E:\\ vim\\installs\\Vim81\\vimfiles\\bundle\\Vundle.vim Cloning into 'E:\\vim\\installs\\Vim81\\vimfiles\\bundle\\Vundle.vim'... remote: Enumerating objects: 3136, done. remote: Total 3136 (delta 0), reused 0 (delta 0), pack-reused 3136 Receiving objects: 100% (3136/3136), 933.42 KiB | 770.00 KiB/s, done. Resolving deltas: 100% (1105/1105), done.
-
在
_vimrc
中配置 vundle 的信息:set nocompatible "禁用 Vi 兼容模式 filetype off "禁用文件类型侦测 set rtp+=E:/vim/installs/Vim81/vimfiles/bundle/Vundle.vim call vundle#begin('E:/vim/installs/Vim81/vimfiles/bundle') " 插件列表开始,可指定插件安装目录 " 使用Vundle来管理插件,这个必须要有 Plugin 'VundleVim/Vundle.vim' " 需要的插件可以继续从这里追加 Bundle 'scrooloose/nerdtree' " 所有插件都必须在此行之前添加 call vundle#end() " 插件列表结束 filetype plugin indent on " 配置结束
-
打开 vim 或者 gvim 执行
:PluginInstall
,自行完成后,在vundle#begin
指定的目录下会下载存放添加的插件。可以看到如下打印输出:" Installing plugins to E:\\vim\\installs\\Vim81\\vimfiles\\bundle Plugin 'VundleVim/Vundle.vim' Plugin 'scrooloose/nerdtree' Helptags
一些常用的插件:
-
nerdtree 文件目录树浏览插件
在
_vimrc
配置其展开和关闭的快捷键" 常规模式下输入 F2 调用插件 nmap <F2> :NERDTreeToggle<CR>
-
neocomplcache 关键字补全、文件路径补全、tag补全等等,各种,非常好用,速度超快
在
_vimrc
配置 vim 启动时启动此插件let g:neocomplcache_enable_at_startup = 1 "vim 启动时启用插件
在弹出补全列表后用 <ctrl-p> 或 <ctrl-n> 进行上下选择效果比较好
-
morhetz/gruvbox 比较像 sublime 的主题
但只在 gVim 模式下生效,因此可以区分 vim 和 gVim 使用不同的主题:
" ----------------------------------------------------------------------------- " < 判断是终端还是 Gvim > " ----------------------------------------------------------------------------- if has("gui_running") let g:isGUI = 1 else let g:isGUI = 0 endif " ----------------------------------------------------------------------------- " < 主题配置 > " ----------------------------------------------------------------------------- if g:isGUI let g:gruvbox_sign_column = 'dark0' let g:gruvbox_vert_split = 'dark0' colorscheme gruvbox else colorscheme desert endif
插件管理器 Vim-plug
除了使用上面提到的 Vundle 安装管理插件外,还可以使用 Vim-plug ,这是一个自由、开源、速度非常快的、极简的 vim 插件管理器。
配置语法高亮
gVim 安装目录下的 _vimrc
是其配置文件,这里主要配置几项:
-
设置文件的编码格式为 utf-8
set encoding=utf-8 set termencoding=utf-8 set fileencoding=utf-8 set fileencodings=ucs-bom,utf-8,chinese,cp936
假如是在 cmd 中使用
gvim
去打开文件,则还需要配置如下已解决乱码问题:"vim的菜单乱码解决 source $VIMRUNTIME/delmenu.vim source $VIMRUNTIME/menu.vim "vim提示信息乱码的解决 language messages zh_CN.utf-8
-
默认打开时窗口最大化
autocmd GUIEnter * simalt ~x
-
设置 tab 默认 4 个空格
set tabstop=4
-
设置显示行号
set nu!
-
设置语法高亮
colorscheme desert "设置主题 syntax enable "打开语法高亮 syntax on "打开语法高亮
支持全屏
在 cmd 中使用 vim 假如希望全屏就依赖于 dos 窗口自身的全屏,而默认是不支持的,有个办法可以做到,就是在 dos 中输入 wmic
点击最大化,然后再输入 quit 退出 wmic 模式即可。
$ wmic
wimc:root\\cli>quit
而假如是使用独立的 gVim ,想要支持全屏,则需要额外的一个外部动态库,库源码地址: 。可自行编译,也可直接下载 release 版本 vim_fullscreen.dll ,将该文件放到 gVim 安装目录下的 vim.exe
文件所在的目录,然后在 _vimrc
中添加如下配置:
" 按 F11 切换全屏
noremap <f11> <esc>:call libcallnr('gvim_fullscreen.dll', 'ToggleFullscreen', 0)<cr>
" 按 F12 切换窗口透明度
noremap <f12> <esc>:call libcallnr('gvim_fullscreen.dll', 'ToggleTransparency', "247,180")<cr>
" 隐藏菜单、工具栏、滚动条
set guioptions-=TrLm
Linux 和 Windows 通用配置
其实在配置文件中是可以通过逻辑代码判断平台做条件处理的,这样就可以实现一个配置文件两个个平台下共用了,判断逻辑如下:
" =============================================================================
" << 判断操作系统是 Windows 还是 Linux 和判断是终端还是 Gvim >>
" =============================================================================
" -----------------------------------------------------------------------------
" < 判断操作系统是否是 Windows 还是 Linux >
" -----------------------------------------------------------------------------
let g:iswindows = 0
let g:islinux = 0
if(has("win32") || has("win64") || has("win95") || has("win16"))
let g:iswindows = 1
else
let g:islinux = 1
endif
" -----------------------------------------------------------------------------
" < 判断是终端还是 Gvim >
" -----------------------------------------------------------------------------
if has("gui_running")
let g:isGUI = 1
else
let g:isGUI = 0
endif
配置结果
参考
微信公众号「何乐不为呢」,一个码农的技术笔记和唠叨。
以上是关于Windows 下的 Vim 编程的主要内容,如果未能解决你的问题,请参考以下文章
为啥说Vim不仅仅是文本编辑器那么简单,为啥还可以称呼为Linux下的开发工具?