Vim 好用的設定
分類
說明
.vimrc
是 Vim 的設定檔,用於配置 Vim 編輯器的各種設定和自定義行為,我將分享一些不錯的設定。
選項的總覽可查看幫助 :help option-list
。
檔案位置
Mac
通常放在家目錄底下 ~/.vimrc
。
- vim 在
~/.vimrc
。 - gvim 在
~/.gvimrc
。
Windows
- vim 在
%userprofile%\_vimrc
。 - gvim 在
%userprofile%\_gvimrc
。
%userprofile%
是家目錄。
另外還可以放在 $VIM/_vimrc
,你可以在 vim 執行 :echo $VIM
查看 $VIM
位置。
gvim
gvim 有專屬的 gvim 設定檔,gvim 會先配置原本的 vim 設定後才繼續配置 gvim 的設定。
設定選項
查看幫助文件 :help :set
:se[t][!]
顯示所有不同於預設值的選項。如果給予 !
,每個選項都會在單獨的行上顯示。
:se[t][!] all
顯示除了終端設定以外的所有選項。 如果給予 !
,每個選項都會在單獨的行上顯示。
查看幫助文件 :help E519
:se[t] {option}?
顯示 {option} 的值。
範例
:set history?
:se[t] {option}
切換選項: 置位,開啟。
數值選項: 顯示其值。
字串選項: 顯示其值。
範例
:set number
:se[t] no{option}
切換選項: 復位,關閉。
範例
:set nonumber
查看幫助文件 :help :set-!
:help :set-inv
:se[t] {option}!
或
:se[t] inv{option}
切換選項: 反轉其值。
範例
:set number!
查看幫助文件 :help :set-args
:se[t] {option}={value}
或
:se[t] {option}:{value}
設定字串或數值選項的值為 {value}
。
數值選項的值可以用十進制、十六進制 (0x 開頭) 或八進制(‘0’ 開頭)。
環境指令
內建外掛
.vimrc
" editorconfig 外掛
packadd! editorconfig
特殊需判斷終端機
.vimrc
" 是否有支援 256 色彩的終端機或圖形使用者介面,例如 MacVim
if &t_Co > 2 || has("gui_running")
" 顏色數目
set t_Co=256
" 語法高亮
syntax on
" 高亮顯示搜尋匹配
set hlsearch
endif
Tab 換行系列
.vimrc
" 根據上一行決定新行的縮排
set autoindent
" 使用 C/C++ 語言的自動縮排方式
set cindent
" 插入模式裡: 插入 <Tab> 時使用合適數量的空格。
set expandtab
" (自動) 縮排每一步所使用的空白數目。
" python 換行時會看到差異
set shiftwidth=4
" 開啟新行時使用智慧型自動縮排。
" 通常,使用 smartindent 時也應該打開 autoindent。
set smartindent
" 執行編輯操作,如插入 <Tab> 或使用 <BS> 時,把 <Tab> 算作空格的數目。
" '感覺上' 你就像使用單一 <Tab> 一樣,而實際上使用的是空格和 <Tab> 的混合。
set softtabstop=4
" 文件裡的 <Tab> 代表的空格數。
" 符合 ts 空格數就變成 tab
set tabstop=4
其他我有使用的部分
.vimrc
" 顏色主題設定,有需要再設定
" colorscheme dracula
" 在一行開頭按退格鍵如何處理
" indent 允許在自動縮排上退格
" eol 允許在換行符號上退格 (連接行)
" start 允許在插入開始的位置上退格;
" CTRL-W 和 CTRL-U 到達插入開始的位置時停留一次
set backspace=indent,eol,start
" 預設使用 * 暫存器,與系統剪貼簿共用位置
set clipboard=unnamed
" 命令列使用的螢幕行數
set cmdheight=3
" 命令列視窗的螢幕行數
set cmdwinheight=10
" 游標行高亮
set cursorline
" 在側邊使用符號「-」、「|」、「+」,指示摺疊的開啟和關閉數。最大值為12。
set foldcolumn=4
set foldmethod=indent
" 緩衝區在視窗關閉時,隱藏緩衝區,而不是卸載緩衝區
set hidden
" 記錄歷史 ex 命令數
set history=200
" 加強搜尋,搜尋時不用按 Enter 就會執行
set incsearch
" 搜尋及許多指令如 'w'、'*'、'[i' 等所識別的關鍵字
set iskeyword+=-
" 最後一個視窗總是顯示狀態列
set laststatus=2
" 控制換行顯示,僅在 'breakat' 指定的字元處斷行,不影響實際內容
set linebreak
" 顯示空白符號、tab 尾部空白、換行符號
set list
set listchars+=space:·,tab:>-,trail:-
" 讀入外部命令的輸出時所使用的編碼
" 例如 :make
" char 與設定系統區域編碼的效果相同。
set makeencoding=char
" 不顯示模式,因為我有安裝狀態條才關閉,沒安裝請顯示模式 set showmode
set noshowmode
" 行前顯示行號
set number
" 游標上下兩側最少保留的螢幕行數
set scrolloff=3
" 顯示執行命令
set showcmd
" 插入括號時,短暫地跳到匹配的對應括號。
" 只有在螢幕上能看到配對時才會進行跳躍。
set showmatch
" 永遠會顯示帶有標籤頁標籤的行
set showtabline=2
" 打開拼字檢查
set spell
" 拼字檢查語言
" en_us 英文
" cjk 排除東亞字元
set spelllang=en_us,cjk
" 如果打開,視窗的分割會把新視窗放到當前視窗之下
set splitbelow
" 如果打開,視窗的分割會把新視窗放到當前視窗之右
set splitright
" 儲存撤銷檔案在共用區
set undofile
" 撤銷檔案共用區路徑
set undodir=~/.vim/undo
" 如果過了這麼多毫秒數以後還沒有任何輸入,把交換文件寫入磁盤
set updatetime=300
" 設定折行條件
set whichwrap=b,s,<,>,[,]
" 增強 Tab 自動補全,產生文件清單
set wildmenu
" list:longest 補全符合的最長字串
" full 打開 wildmenu
set wildmode=list:longest,full
" 超出視窗寬度的文字行都會被迴繞顯示
set wrap
" html shiftwidth=2 softtabstop=2 tabstop=2
autocmd BufRead,BufNewFile *.html set sw=2 sts=2 ts=2
gvim 專用
.gvimrc
" 螢幕的欄數
set columns=85
" gui 版 vim 字型
set guifont=FiraMono\ Nerd\ Font:h16
" gui 版 vim 使用的部件和選項
" 'e' 依照 'showtabline' 的要求加入標籤頁。
set guioptions+=e
" 'g' 灰色選單項目: 使得不活動的選單項目變灰。
set guioptions+=g
" 'm' 使用選單列表。
set guioptions+=m
" 'r' 右邊的捲軸總是存在。
set guioptions+=r
" 'L' 如有垂直分割的視窗,左邊的捲軸總是存在。
set guioptions+=L
" 'T' 包含工具列。
set guioptions+=T
限 Mac
.vimrc
" 逗號分隔的置換檔案的目錄名稱列表
" // 結尾代表檔名會包含完整路徑
set directory=$HOME/.vim/swap//,.
限 Windows
_vimrc
" 逗號分隔的置換檔案的目錄名稱列表
" // 結尾代表檔名會包含完整路徑
set directory=%userprofile%\.vim\swap//,.
未使用但值得記錄的設定
備份
" 備份策略: 備份目前檔案,寫入後刪除備份檔案 (預設)
" 若有需要調整策略可以修改這兩個設定
" 查看備份策略 :help backup-table
" 覆蓋檔案前建立一個備份。檔案成功寫入後保留該備份
set backup
" 備份檔案使用的目錄列表,以 ',' 區隔,使用第一個可用的目錄
set backupdir=.,~\temp
" 備份檔案使用的副檔名
set backupext=~
" 覆蓋檔案前建立備份。檔案成功寫入後
" 除非 'backup' 選項也被打開,否則刪除該備份
set writebackup
.vimrc
" 自動把內容寫回檔案: 如果檔案被修改過,在每個 :next、:previous 等等指令時進行
" 自動將更改過的緩衝區內容寫入磁碟
set autowrite
" 有改動時自動寫回檔案,但適用於更多命令
set autowriteall
" 搜尋模式裡忽略大小寫
set ignorecase
" 改變搜尋模式使用的特殊字元(預設打開)
" 查看更多 :help /magic
set magic
" 如果關閉,緩衝區的內容不能修改。
set modifiable
" 寫入檔案且本選項開啟時,恢復檔案尾缺少的 <EOL>。如果你要保留檔案原本的樣子,關閉本選項。
set nofixendofline'
" 搜索在文件末迴繞回文件首(預設打開)
set nowrapscan
" 禁止寫入緩衝區
set readonly
" 報告改變行數的閾值。如果多於 'report' 的行發生改變,多數 `:` 命令會給出消息。
" 如果你總是想得到這個消息,設定 'report' 為零。
set report=0
" 顯示游標位置的行號和列號
set ruler
" 使用 CTRL-U 和 CTRL-D 滾動的行數。
set scroll=0
" 顯示模式
set showmode
.gvimrc
"說明如何套用 equalalways 選項:
" ver 垂直方向,視窗寬度不受影響
" hor 水平方向,窗口高度不受影響
" both 窗口寬度和高度都會受影響
set eadirection=both
" 如果打開,在分割或關閉某個視窗時所有視窗自動使用相同的尺寸。
set equalalways
" Vim 視窗的行數。
" 終端初始化程式碼會自動完成,所以只需在 GUI 版設定即可。
set lines=24
" 當前游標所在視窗顯示的最少列數,切換視窗會有放大視窗的感覺。
set winheight=50
" 非目前視窗的最小高度。
" 這是一個絕對的最小值,視窗絕對不會比這更小。
set winminheight=5
" 非目前視窗的最小寬度。
" 這是一個絕對的最小值,視窗絕對不會比這更小。
set winminwidth=5
" 當前游標所在視窗顯示的最少行數,切換視窗會有放大視窗的感覺。
set winwidth=50
限 Windows
_vimrc
" 使用外部命令的外殼程序名字
set shell=\"$SystemRoot\system32\WindowsPowerShell\v1.0\powershell.exe\"
相關文章:
一杯咖啡的力量,勝過千言萬語的感謝。
支持我一杯咖啡,讓我繼續創作優質內容,與您分享更多知識與樂趣!