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下的开发工具?

VIM 在Windows环境下的Ctrl+v系列快捷键

vim7.4版本在windows下的配置文件及所在位置

vim用法

如何将vim打造成Linux下的source insight

linux 下的c语言编程