Vim 好用的設定


建立時間: 2023年4月20日 18:18
更新時間: 2024年5月24日 08:54

說明

.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 的設定。

設定選項

: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!


環境指令

特殊需判斷終端機

.vimrc

" 是否有支援 256 色彩的終端機或圖形使用者介面,例如 MacVim
if &t_Co > 2 || has("gui_running")
    " 顏色數目
    set t_Co=256
    " 語法高亮
    syntax on
    " 高亮顯示搜尋匹配
    set hlsearch
endif

Tab 換行系列

.vimrc

" 使用 C/C++ 語言的自動縮排方式
set cindent
" 換行時自動縮進
set autoindent
" 插入模式裡: 插入 <Tab> 時使用合適數量的空格。
set expandtab
" 顯示 tab 尾部空白、換行符號
set list
set listchars=tab:>-,trail:-
" (自動) 縮排每一步所使用的空白數目。
" 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 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
" 讀入外部命令的輸出時所使用的編碼
" 例如 :make
" char 與設定系統區域編碼的效果相同。
set makeencoding=char
" 不備份文件
set nobackup
" 不顯示模式,因為我有安裝狀態條才關閉,沒安裝請顯示模式 set showmode
set noshowmode
" 編輯時不備份文件
set nowritebackup
" 顯示行號
set number
" 游標上下兩側最少保留的螢幕行數
set scrolloff=3
" 顯示執行命令
set showcmd
" 插入括號時,短暫地跳到匹配的對應括號。
" 只有在螢幕上能看到配對時才會進行跳躍。
set showmatch
" 永遠會顯示帶有標籤頁標籤的行
set showtabline=2
" 如果打開,視窗的分割會把新視窗放到當前視窗之下
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

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\

未使用但值得紀錄

.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
觀看次數: 1164
settingvim_vimrc.vimrc設定
按讚追蹤 Enjoy 軟體 Facebook 粉絲專頁
每週分享資訊技術

一杯咖啡的力量,勝過千言萬語的感謝。

支持我一杯咖啡,讓我繼續創作優質內容,與您分享更多知識與樂趣!