引言
之前習慣了在 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
配置結果
參考
微信公衆號「何樂不爲呢」,一個碼農的技術筆記和嘮叨。