摘要:原文一直以來被稱為編輯器之神的在下很難發揮其強大的功能,本文從實用的角度闡述如何調校出一個比較好用的不過仍然要說明下,在眾多構建版本中平臺的是我認為最好用的一個版本。
原文:https://keelii.github.io/2016/06/13/awsome-window-vimrc/
一直以來被稱為編輯器之神的 vim 在 Windows 下很難發揮其強大的功能,本文從實用的角度闡述如何調校出一個比較好用的 vim
不過仍然要說明下,在眾多 vim 構建版本中 Mac OS 平臺的 MacVim 是我認為最好用的一個版本。由于自己公司主力用 Windows,又因筆者是一枚對編輯器顏值體驗有要求的前端工程師, 所以才有了下文 ^!^
先說明下開發環境:
ThinkPad T450 (公司標配)
Windows 7 SP1 64bit 企業版
編程語言 Javascript, HTML, CSS, NodeJS, Python
前言本文旨在配置和使用 vim,并不適合太初級的 vim 用戶,本文作者也不是 vim 死忠粉,經常混用 Webstrom 和 vim
開始開始之前我們先看一眼 Windows 上安裝 Gvim 的默認界面,我們將從這里開始一步步的學習和配置
配置 _vimrc由于 vimrc 里面會有很多的配置項,為了避免混亂,我大概按自己的使用習慣分成了幾個小組:
Startup - 編輯器啟動時需要添加的一些配置
General - 通用配置
Lang & Encoding - 語言和編碼
GUI - 界面
Format - 基本的代碼格式
Keymap - 通用的快捷鍵
Plugin - 插件相關(包括和當前插件相關的配置和快捷鍵等)
Function - vimrc 里面用到的常用方法
Startup" Startup {{{ filetype indent plugin on " vim 文件折疊方式為 marker augroup ft_vim au! au FileType vim setlocal foldmethod=marker augroup END " }}}
設置 vim 相關文件打開后默認折疊方式為 marker,約定俗成的用三個花括號注釋包裹起來,這樣在你打開配置文件的時候 vim 就會幫你折疊起來,配置文件看起來就簡潔多了,如圖:
General" General {{{ set nocompatible set nobackup set noswapfile set history=1024 set autochdir set whichwrap=b,s,<,>,[,] set nobomb set backspace=indent,eol,start whichwrap+=<,>,[,] " Vim 的默認寄存器和系統剪貼板共享 set clipboard+=unnamed " 設置 alt 鍵不映射到菜單欄 set winaltkeys=no " }}}
基本上一眼就能看出來這是些啥玩意,不過后面兩項目我個人感覺比較好用:
clipboard+=unnamed 比如你在其它地方 copy 了一段文字回到 vim 里面可以粘貼進來
winaltkeys=no 一般 windows 下應用程序的 alt 是用來定位菜單欄目的快捷鍵,我們需要禁用它,因為我們后面很多設置都需要使用 alt,需要使用 alt 來定位菜單的情況很少
Lang & Encoding" Lang & Encoding {{{ set fileencodings=utf-8,gbk2312,gbk,gb18030,cp936 set encoding=utf-8 set langmenu=zh_CN let $LANG = "en_US.UTF-8" "language messages zh_CN.UTF-8 " }}}
vim 里面設置編碼的地方很多,上面這些配置可以保證不會出現亂碼,像文件菜單、vim默認語言建議設置成 en_US
GUI" GUI {{{ colorscheme Tomorrow-Night source $VIMRUNTIME/delmenu.vim source $VIMRUNTIME/menu.vim set cursorline set hlsearch set number " 窗口大小 set lines=35 columns=140 " 分割出來的窗口位于當前窗口下邊/右邊 set splitbelow set splitright "不顯示工具/菜單欄 set guioptions-=T set guioptions-=m set guioptions-=L set guioptions-=r set guioptions-=b " 使用內置 tab 樣式而不是 gui set guioptions-=e set nolist " set listchars=tab:? ,eol:?,trail:·,extends:>,precedes:< set guifont=Inconsolata:h12:cANSI " }}}
編輯器配色建議使用 Tomorrow-Night,下載文件 copy 到 colors 目錄即可
從上面的設置可以看出來,為了得到一個簡潔漂亮的界面,我們去掉了菜單欄、各種滾動條、使用 vim 內置 tab 而不是 gvim 系統的 tab 樣式,注意很多開發者喜歡顯示不可見字符,比如:tab 制表符、換行符號、尾空格等。
我自己并不喜歡這樣,因為這樣只會使界面看起來更零亂,尤其是某插件縱向標尺
字體方面個人推薦 Inconsolata 這個在我看來是 Windows 平臺最漂亮的等寬字體了
此時你的編輯器應該好看了很多:
Format" Format {{{ set autoindent set smartindent set tabstop=4 set expandtab set softtabstop=4 set foldmethod=indent syntax on " }}}
這個設置容易引起爭議,我自己是這么個設置,大家按個人喜好就行了,反正我是不建議使用 tab 的,對代碼格式有強迫癥的人一般都會設置 foldmethod=indent
Keymap可以說快捷鍵是每個編輯器必備的功能,科學的設置快捷鍵能很大程度的提高效率。快捷鍵的設置要遵循一個規則:盡量不要修改系統默認配置的快捷鍵,非要設置的話選擇好相應的模式
" Keymap {{{ let mapleader="," nmaps :source $VIM/_vimrc nmap e :e $VIM/_vimrc map tn :tabnew map tc :tabclose map th :tabp map tl :tabn " 移動分割窗口 nmap j nmap k nmap h nmap l " 正常模式下 alt+j,k,h,l 調整分割窗口大小 nnoremap :resize +5 nnoremap :resize -5 nnoremap :vertical resize -5 nnoremap :vertical resize +5 " 插入模式移動光標 alt + 方向鍵 inoremap inoremap inoremap inoremap " IDE like delete inoremap bdei nnoremap vv ^vg_ " 轉換當前行為大寫 inoremap mzgUiw`za " 命令模式下的行首尾 cnoremap cnoremap nnoremap :setlocal number! nnoremap w :set wrap! imap "+gP vmap "+y vnoremap d vnoremap "+y vnoremap "+y imap "+gP map "+gP cmap + cmap + exe "inoremap Tabular 對齊插件,文章末尾 gif 圖里面有展示,visual 模式下選擇要對齊的多行文本,進入命令模式 :Tabularize /對齊符號
Airline狀態欄美化插件,準備棄用了
Ctrlp類似IDE里面的最近打開的文件,用于快速定位文件/Buffer
NERDCommenter注釋插件,默認是快捷鍵是
Emmetc 用來快速寫 HTML
SnipMate代碼片段管理, 這個插件很早之前的那個版本不維護了,現在最新版的非常強大,不過有另外兩個依賴,默認是沒有任何內置的 snippet 的,如果需要樣版,可以安裝 這個插件 需要自定義的話手動更改 snippets 目錄下的文件即可(其實就是個git倉庫,你可以換成自己的)
FugitiveGit 命令增強工具,在 vim 使用 git,狀態欄的分類名稱就是調用的這個插件的方法 fugitive#head()
Neocomplete自動補全插件,這個代碼實例插件是需要 lua 支持的,可能你需要手動編譯一個帶 lua 支持版本的 gvim,下篇文章 我將記錄下自己在 Windows 上編譯安裝的過程
什么?你說為啥不裝 YouCompleteMe,官方作者都不支持的插件就別折騰了吧,Neocomplete 這個實例插件對于我的情況來說已經夠用了
Function常用方法這里我只有一個,移除尾空格
" Function {{{ " Remove trailing whitespace when writing a buffer, but not for diff files. " From: Vigil " @see http://blog.bs2.to/post/EdwardLee/17961 function! RemoveTrailingWhitespace() if &ft != "diff" let b:curcol = col(".") let b:curline = line(".") silent! %s/s+$// silent! %s/(s* )+\%$// call cursor(b:curline, b:curcol) endif endfunction autocmd BufWritePre * call RemoveTrailingWhitespace() " }}}No picture U say a ... ?
這個是動圖,不動戳大
結語還有一點沒說明,vimrc 里面的一些 windows 獨有的設置我并沒有加一些判斷來兼容其它平臺,這個是個人喜好而已,我會多帶帶分開維護不同平臺的配置文件,而不是全部放在一起各種邏輯判斷
引用完整配置文件
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/24871.html
摘要:不過近日來隨著最后幾個補全插件的加入和配置調整,這個配置文件已經比較完整,因此可以好好坐下來,對使用方法和注意點作一介紹。更建議你打開里面的各個文件查看,學習。 中文介紹 原來的repo放在 spf13-vim-leoatchina,因為原來一時腦抽,把中文字體放進去后導致體積較大,影響速度,所以重開一個repo并把windows下的工具分開,以增加clone速度。 現在的配置是在 l...
摘要:帶上你的,走下面講到的配置主要出自我自用的配置,感興趣的可以參考一鍵裝機之的幾乎所有配置都可以保存在一個文件中,因此把同步起來,直接拷貝到相應位置并指定,則可以恢復相應的配置。 首發自簡書 每個Vimer都有自己的一個配置,猶如每個劍客都有自己的一把劍(應該是吧)。(爭取)作為一個傳說中的全棧開發者,換機器就像換衣服一樣頻繁;在異國他鄉的機器上,是否懷念那一套屬于你的指法呢?下面會講一...
摘要:終極目標問題描述首先聲明,這是一次失敗的編譯經歷,僅供參考,歡迎討論。近期發現是一個很棒的編輯器,簡潔高效。所以,毅然決然,自己從源碼編譯一個。首先運行上面目錄樹中的。我猜想這可能和我的失敗有關。設置為,編譯結果是,則代表。 終極目標 VIM = Python multi-version IDE 問題描述 首先聲明,這是一次失敗的編譯經歷,僅供參考,歡迎討論。 近期發現VIM是一個很棒...
閱讀 647·2021-11-25 09:43
閱讀 1915·2021-11-17 09:33
閱讀 830·2021-09-07 09:58
閱讀 2066·2021-08-16 10:52
閱讀 487·2019-08-30 15:52
閱讀 1728·2019-08-30 15:43
閱讀 987·2019-08-30 15:43
閱讀 2932·2019-08-29 16:41