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

 

配置結果

 

參考


微信公衆號「何樂不爲呢」,一個碼農的技術筆記和嘮叨。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章