Vim 好用的設定
分類
說明
.vimrc
是 Vim 的設定檔,用於配置 Vim 編輯器的各種設定和自定義行為,我將分享一些不錯的設定。
檔案位置
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
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=100
" 加強搜尋,搜尋時不用按 Enter 就會執行
set incsearch
set iskeyword=@,48-57,_,192-255,-
" 總是顯示狀態列
set laststatus=2
" 在某些字元才能自動摺行,避免斷句不乾淨
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 writebackup
.vimrc
" 自動把內容寫回檔案: 如果檔案被修改過,在每個 :next、:previous 等等指令時進行
" 自動將更改過的緩衝區內容寫入磁碟
set autowrite
" 搜尋模式裡忽略大小寫
set ignorecase
" 改變搜尋模式使用的特殊字元(預設打開)
" 查看更多 :help /magic
set magic
" 搜索在文件末迴繞回文件首(預設打開)
set nowrapscan
" 顯示游標位置的行號和列號
set ruler
" 顯示模式
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
相關文章:
一杯咖啡的力量,勝過千言萬語的感謝。
支持我一杯咖啡,讓我繼續創作優質內容,與您分享更多知識與樂趣!