選項

Nvim :help 頁面,由 來源 使用 tree-sitter-vimdoc 解析器 產生


選項
關於選項的概述,請參閱 quickref.txt 選項列表
Vim 有許多內部變數和開關,可以設定它們來達到特殊效果。這些選項有三種形式: 布林值 (boolean) 只能是開或關 布林值 切換 數值 (number) 有一個數值 字串 (string) 有一個字串值

1. 設定選項 設定選項 E764

:se :set :se[t][!] 顯示所有與預設值不同的選項。當 [!] 存在時,每個選項都會單獨顯示一行。
:se[t][!] all 顯示所有選項。當 [!] 存在時,每個選項都會單獨顯示一行。
E518 E519 :se[t] {選項} 顯示 {選項} 的值。 注意:一些舊的選項已被移除。 nvim-removed
:se[t] {選項} 切換選項:設定,將其開啟。數值選項:顯示值。字串選項:顯示值。
:se[t] no{選項} 切換選項:重設,將其關閉。
:set-! :set-inv :se[t] {選項}! 或 :se[t] inv{選項} 切換選項:反轉值。
:set-default :set-& :set-&vi :set-&vim :se[t] {選項}& 將選項重設為其預設值。 :se[t] {選項}&vi 將選項重設為其 Vi 的預設值。 :se[t] {選項}&vim 將選項重設為其 Vim 的預設值。
:se[t] all& 將所有選項設定為其預設值。這些選項的值不會被更改:'columns' 'lines' 警告:這可能會產生許多副作用。
:set-args :set= E487 E521 :se[t] {選項}={值} 或 :se[t] {選項}:{值} 將字串或數值選項設定為 {值}。對於數值選項,該值可以使用十進位、十六進位 (以 0x 開頭) 或八進位 (以 '0' 或 '0o' 開頭) 給出。舊的值可以透過輸入 'wildchar' (預設為 <Tab>) 來插入。許多具有固定語法的字串選項也支援完成已知的值。請參閱 cmdline-completioncomplete-set-option。允許在 {選項} 和 '=' 之間有空格,並且會被忽略。不允許在 '=' 和 {值} 之間有空格。有關在 {值} 中使用空格和反斜線,請參閱 option-backslash
:se[t] {選項}+={值} :set+=
{值} 加到數值選項,或將 {值} 附加到字串選項。當選項是以逗號分隔的列表時,會新增一個逗號,除非該值為空。如果該選項是一個旗標列表,則會刪除多餘的旗標。當加入一個已存在的旗標時,選項值不會改變。另請參閱上方的 :set-args
:se[t] {選項}^={值} :set^=
{值} 乘到數值選項,或將 {值} 前置到字串選項。當選項是以逗號分隔的列表時,會新增一個逗號,除非該值為空。另請參閱上方的 :set-args
:se[t] {選項}-={值} :set-=
從數值選項減去 {值},或從字串選項中移除 {值} (如果存在)。如果沒有在字串選項中找到 {值},則不會產生錯誤或警告。當選項是以逗號分隔的列表時,會刪除一個逗號,除非選項變成空的。當選項是一個旗標列表時,{值} 必須與選項中顯示的完全相同。一次移除一個旗標以避免問題。可以透過輸入 'wildchar' 來插入以逗號分隔的列表或旗標列表中的個別值。請參閱 complete-set-option。另請參閱上方的 :set-args
":set" 的 {選項} 參數可以重複。例如
:set ai nosi sw=3 ts=3
如果其中一個參數發生錯誤,將會顯示錯誤訊息,並且會忽略後續的參數。
:set-verbose
'verbose' 為非零時,顯示選項值也會顯示上次設定的位置。範例
:verbose set shiftwidth cindent?
shiftwidth=4
上次設定來自 modeline 第 1 行
cindent
上次設定來自 /usr/local/share/vim/vim60/ftplugin/c.vim 第 30 行
只有在要求特定的選項值時才會這樣做,而不是針對沒有參數的 ":verbose set all" 或 ":verbose set"。當選項是手動設定時,則沒有「上次設定」訊息。當選項是在執行函數、使用者命令或自動命令時設定時,會報告定義它的腳本。一些特殊文字
上次設定來自 modeline 第 1 行
選項是在 modeline 中設定的。
上次設定來自 --cmd 參數
選項是使用命令列參數 --cmd 或 + 設定的。
上次設定來自 -c 參數
選項是使用命令列參數 -c、+、-S-q 設定的。
上次設定來自環境變數
選項是從 $VIMINIT 設定的。
上次設定來自錯誤處理常式
在評估選項時導致錯誤,因此清除該選項。
option-backslash
要在字串選項值中包含空格,必須在其前面加上反斜線。要包含反斜線,您必須使用兩個。實際上,這意味著選項值中的反斜線數量減半(向下捨入)。在選項 'path''cdpath''tags' 中,空格必須以三個反斜線開頭,因為它們可以由逗號或空格分隔。以逗號分隔的選項 (例如 'backupdir''tags') 也會要求逗號使用兩個反斜線跳脫,而對於非逗號分隔的選項 (例如 'makeprg') 則不需要。當使用 :letliteral-string 設定選項時,您需要少使用一層反斜線。幾個範例
:set makeprg=make\ file            results in "make file"
:let &makeprg='make file'            (same as above)
:set makeprg=make\\\ file            results in "make\ file"
:set tags=tags\ /usr/tags            results in "tags" and "/usr/tags"
:set tags=tags\\\ file            results in "tags file"
:let &tags='tags\ file'            (same as above)
:set makeprg=make,file            results in "make,file"
:set makeprg=make\\,file            results in "make\,file"
:set tags=tags,file                    results in "tags" and "file"
:set tags=tags\\,file            results in "tags,file"
:let &tags='tags\,file'            (same as above)
"|" 字元將 ":set" 命令與後續命令分隔開。若要在選項值中包含 "|",請改用 "\|"。此範例將 'titlestring' 選項設定為 "hi|there"
:set titlestring=hi\|there
這會將 'titlestring' 選項設定為 "hi",並將 'iconstring' 設定為 "there"
:set titlestring=hi|set iconstring=there
同樣地,雙引號字元開始一個註解。若要在選項值中包含 '"',請改用 '\"'。此範例將 'titlestring' 選項設定為 "hi "there""
:set titlestring=hi\ \"there\"
對於 Win32,檔名中的反斜線大多不會被移除。更精確地說:對於預期檔案名稱的選項(那些會展開環境變數的選項),一般檔名字元之前的反斜線不會被移除。但是,特殊字元(空格、反斜線、逗號等)之前的反斜線會像上面解釋的那樣使用。有一種特殊情況,當值以 "\\" 開頭時
:set dir=\\machine\path            results in "\\machine\path"
:set dir=\\\\machine\\path            results in "\\machine\path"
:set dir=\\path\\file            results in "\\path\file" (wrong!)
對於第一個,開頭會保留,但對於第二個,反斜線會減半。這可以確保當您預期反斜線減半時和當您預期反斜線保留時都能正常運作。第三個會產生您可能不想要的結果。請避免使用。
add-option-flags remove-option-flags E539
某些選項是旗標列表。當您想要將旗標新增至這類選項,而不變更現有旗標時,您可以這樣做
:set guioptions+=a
像這樣從選項中移除旗標
:set guioptions-=a
這會從 'guioptions' 中移除 'a' 旗標。請注意,您應該一次新增或移除一個旗標。如果 'guioptions' 的值為 "ab",則使用 "set guioptions-=ba" 將無法運作,因為不會出現字串 "ba"。
:set_env expand-env expand-environment-var 特定字串選項中的環境變數將會展開。如果環境變數存在,則 '$' 和後續的環境變數名稱會被其值取代。如果不存在,則不會修改 '$' 和名稱。任何非 ID 字元(不是字母、數字或 '_')都可以跟在環境變數名稱之後。該字元和後面的內容會附加到環境變數的值。範例
:set term=$TERM.new
:set path=/usr/$INCLUDE,$HOME/include,.
當使用 ":set opt-=val" 或 ":set opt+=val" 從選項中新增或移除字串時,會在新增或移除之前執行展開。
處理本地選項 local-options
注意:以下也適用於 global-local 選項。
某些選項僅適用於視窗或緩衝區。每個視窗或緩衝區都有其自己的選項副本,因此每個選項都可以有自己的值。這可讓您在一個視窗中設定 'list',而在另一個視窗中不設定。並在一個緩衝區中將 'shiftwidth' 設定為 3,而在另一個緩衝區中設定為 4。
以下說明在特定情況下,這些本地選項會發生什麼事。您不需要真的知道所有這些,因為 Vim 大多會使用您期望的選項值。不幸的是,做到使用者期望的事情有點複雜...
當分割視窗時,本地選項會複製到新視窗。因此,在分割後,兩個視窗的內容看起來相同。
當編輯新的緩衝區時,必須初始化其本地選項值。由於目前緩衝區的本地選項可能專用於該緩衝區,因此不會使用這些選項。相反地,對於每個緩衝區本地選項,還有一個全域值,會用於新的緩衝區。使用 ":set" 時,會變更本地和全域值。使用 "setlocal" 時,只會變更本地值,因此在編輯新的緩衝區時不會使用此值。
當編輯先前已編輯過的緩衝區時,會再次使用上次關閉視窗的選項。如果此緩衝區已在此視窗中編輯過,則會使用當時的值。否則,會使用上次關閉視窗且該緩衝區最後一次編輯時的值。
可以為特定類型的緩衝區設定局部視窗選項。當您在同一個視窗中編輯另一個緩衝區時,您不會想繼續使用這些局部視窗選項。因此,Vim 會保留局部視窗選項的全局值,該值會在編輯另一個緩衝區時使用。每個視窗都有這些值的副本。因此,這些值對於視窗是局部的,但對於視窗中的所有緩衝區是全局的。您可以使用此功能來執行以下操作:
:e one
:set list
:e two
現在,由於您使用 ":set list" 命令也設定了全局值,因此 "'list'" 選項也會在 "two" 中設定。
:set nolist
:e one
:setlocal list
:e two
現在,"'list'" 選項未設定,因為 ":set nolist" 會重設全局值,":setlocal list" 只會變更局部值,而 ":e two" 會取得全局值。請注意,如果接下來執行此操作:
:e one
您會取得編輯 "one" 時最後一次的 "'list'" 值。每個緩衝區都會記住視窗的局部選項。當緩衝區未載入時也會發生這種情況,但當緩衝區被清除 :bwipe 時,它們就會遺失。
特殊的局部視窗選項 local-noglobal
以下局部視窗選項在建立新視窗時不會被複製,因此它們的行為略有不同:
選項 原因
'previewwindow' 只能有一個 'scroll' 特定於現有視窗 'winfixbuf' 特定於現有視窗 'winfixheight' 特定於現有視窗 'winfixwidth' 特定於現有視窗
特殊的局部緩衝區選項
以下局部緩衝區選項在建立新緩衝區時不會被複製,因此它們的行為略有不同:
選項 原因
'filetype' 由自動指令明確設定 'syntax' 由自動指令明確設定 'bufhidden' 表示 特殊緩衝區 'buftype' 表示 特殊緩衝區 'readonly' 會自動偵測 'modified' 會自動偵測
:setl :setlocal :setl[ocal][!] ... 類似於 ":set",但僅設定目前緩衝區或視窗的局部值。並非所有選項都有局部值。如果選項沒有局部值,則會設定全局值。使用 "all" 參數:顯示所有局部選項的局部值。不使用參數:顯示所有與預設值不同的局部選項的局部值。當顯示特定局部選項時,會顯示局部值。對於全局/局部布林選項,當使用全局值時,會在選項名稱前顯示 "--"。對於全局選項,會顯示全局值(但未來可能會變更)。
:se[t] {option}< 將 {option} 的有效值設定為其全局值。對於 全局-局部 選項,會移除局部值,以便使用全局值。對於所有其他選項,會將全局值複製到局部值。
:setl[ocal] {option}< 將 {option} 的有效值設定為其全局值,方法是將全局值複製到局部值。
請注意,對於 全局-局部 選項,字串和數字型選項的行為略有不同。
:setg :setglobal :setg[lobal][!] ... 類似於 ":set",但僅設定局部選項的全局值,而不變更局部值。當顯示選項時,會顯示全局值。使用 "all" 參數:顯示所有局部選項的全局值。不使用參數:顯示所有與預設值不同的局部選項的全局值。
對於緩衝區局部和視窗局部選項
命令 全局值 局部值 條件
:set option=value 設定 設定 :setlocal option=value - 設定 :setglobal option=value 設定 - :set option? - 顯示已設定局部值 :set option? 顯示 - 未設定局部值 :setlocal option? - 顯示 :setglobal option? 顯示 -
具有局部值的全局選項 global-local
當您主要對所有緩衝區和視窗使用一個值時,選項是全局的。對於某些全局選項,有時使用不同的局部值會很有用。您可以使用 ":setlocal" 設定局部值。然後,該緩衝區或視窗將使用局部值,而其他緩衝區和視窗會繼續使用全局值。
例如,您有兩個視窗,都是在 C 原始碼上。它們使用全局 "'makeprg'" 選項。如果您在其中一個視窗中執行此操作:
:set makeprg=gmake
則另一個視窗會切換到相同的值。無需也在另一個 C 原始碼視窗中設定 "'makeprg'" 選項。但是,如果您開始在新視窗中編輯 Perl 檔案,您會想對它使用另一個 "'makeprg'",而不會變更 C 原始碼檔案所使用的值。您可以使用此命令:
:setlocal makeprg=perlmake
您可以透過使局部值為空來切換回使用全局值:
:setlocal makeprg=
這僅適用於字串選項。對於數字或布林選項,您需要使用 "<" 旗標,如下所示:
:setlocal autoread<
請注意,對於非布林和非數字選項,使用 "<" 會將全局值複製到局部值,它不會切換回使用全局值(當全局值稍後變更時,這很重要)。您也可以使用:
:set path<
這會使 "'path'" 的局部值為空,以便使用全局值。因此,它與以下操作相同:
:setlocal path=
注意:未來可能會將更多全局選項設為 全局-局部。在全局選項上使用 ":setlocal" 的運作方式可能會有所不同。
選項值函數
某些選項('completefunc''findfunc''omnifunc''operatorfunc''quickfixtextfunc''tagfunc''thesaurusfunc')會設定為函數名稱或函數參考或 Lambda 函數。當使用 Lambda 時,它會轉換為名稱,例如 "<lambda>123"。範例:
set opfunc=MyOpFunc
set opfunc=function('MyOpFunc')
set opfunc=funcref('MyOpFunc')
set opfunc={a\ ->\ MyOpFunc(a)}
設定為腳本局部函數
set opfunc=s:MyLocalFunc
set opfunc=<SID>MyLocalFunc
使用 funcref 變數設定
let Fn = function('MyTagFunc')
let &tagfunc = Fn
使用 Lambda 表達式設定
let &tagfunc = {t -> MyTagFunc(t)}
使用具有 Lambda 表達式的變數設定
let L = {a, b, c -> MyTagFunc(a, b , c)}
let &tagfunc = L
在 expr 選項中呼叫函數 expr-option-function
某些選項的值,例如 'foldexpr',是一個經過評估以取得值的表達式。評估可能會有相當多的負擔。最小化負擔的一種方法,以及保持選項值非常簡單的方法,是定義一個函數並設定選項以呼叫它,而不使用參數。v:lua-call 也可以使用。範例:
lua << EOF
  function _G.MyFoldFunc()
    -- ... compute fold level for line v:lnum
    return level
  end
EOF
set foldexpr=v:lua.MyFoldFunc()
設定檔案類型
:setf[iletype] [FALLBACK] {filetype} :setf :setfiletype'filetype' 選項設定為 {filetype},但前提是在 (巢狀) 自動指令序列中尚未設定。這是以下的簡寫:
:if !did_filetype()
:  setlocal filetype={filetype}
:endif
此命令在 filetype.vim 檔案中使用,以避免重複設定 'filetype' 選項,導致載入不同的設定和語法檔案。
當存在可選的 FALLBACK 參數時,後續的 :setfiletype 命令會覆寫 'filetype'。這適用於只是猜測的檔案類型偵測。did_filetype() 在此命令之後會傳回 false。
option-window optwin :bro[wse] se[t] :set-browse :browse-set :opt :options :opt[ions] 開啟一個視窗來檢視和設定所有選項。選項按功能分組。提供每個選項的簡短說明。在簡短說明中按 <CR> 可開啟一個說明視窗,其中包含該選項的更多說明。修改選項的值,然後在 "set" 行上按 <CR> 以設定新值。對於視窗和緩衝區特定選項,會使用上次存取的視窗來設定選項值,除非這是說明視窗,在這種情況下,會使用說明視窗下方的視窗(跳過選項視窗)。
$HOME
使用 "~" 就像使用 "$HOME",但它僅在選項開頭以及空格或逗號之後才被辨識。
在 Unix 系統上,也可以使用 "~user"。它會被取代為使用者 "user" 的主目錄。範例:
:set path=~mool/include,/usr/include,.
在 Unix 系統上,也可以使用 "${HOME}" 形式。然後,{} 之間的名稱可以包含非 id 字元。請注意,如果您想將此用於 "gf" 命令,則需要將 '{' 和 '}' 字元新增到 'isfname'
注意:擴充環境變數和 "~/" 僅在 ":set" 命令中使用,而不是在使用 ":let" 為選項賦值時。
$HOME-windows
在 MS-Windows 上,如果 $HOME 未定義為環境變數,則在執行時,Vim 會將其設定為 $HOMEDRIVE$HOMEPATH 的擴充。如果未設定 $HOMEDRIVE,則會使用 $USERPROFILE。
此擴充值不會匯出到環境,這在執行外部命令時很重要:
:echo system('set | findstr ^HOME=')
:echo luaeval('os.getenv("HOME")')
應該回顯 nothing(空字串),儘管 exists('$HOME') 為 true。當將 $HOME 設定為非空字串時,它會匯出到子程序。
請注意,擴充選項的最大長度是有限制的。有多大取決於系統,大多數情況下,它類似於 256 或 1024 個字元。

2. 自動設定選項 auto-setting

除了使用 ":set" 命令變更選項外,您還可以透過各種方式自動設定選項:
1. 使用 config 檔案或 啟動 參數。您可以使用 :mkvimrc:mkview:mksession 建立初始化檔案。2. 在您編輯檔案時執行的 自動指令。3. 如果已啟用 'exrc',則為目前目錄中的 ".nvim.lua" 檔案。4. 目前緩衝區目錄或上層目錄中的 editorconfig。5. 在檔案開頭或結尾找到的 'modeline' 設定。請參閱下方。
modeline vim: vi: ex: E520 有兩種形式的 modeline。第一種形式:[text{white}]{vi:|vim:|ex:}[white]{options}
[text{white}] 空白或任何文字後接至少一個空白字元 (<Space><Tab>);"ex:" 總是需要至少一個空白字元 {vi:|vim:|ex:} 字串 "vi:"、"vim:" 或 "ex:" [white] 可選的空白字元 {options} 選項設定列表,以空白字元或 ':' 分隔,其中每個 ':' 之間的部分是 ":set" 命令的參數 (可以為空)
範例
vi:noai:sw=3 ts=6
vim: tw=77
第二種形式 (這與某些版本的 Vi 相容)
[text{white}]{vi:|vim:|Vim:|ex:}[white]se[t] {options}:[text]
[text{white}] 空白或任何文字後接至少一個空白字元 (<Space><Tab>);"ex:" 總是需要至少一個空白字元 {vi:|vim:|Vim:|ex:} 字串 "vi:"、"vim:"、"Vim:" 或 "ex:" [white] 可選的空白字元 se[t] 字串 "set " 或 "se " (注意空格);當使用 "Vim" 時,必須是 "set"。{options} 選項列表,以空白字元分隔,這是 ":set" 命令的參數 : 冒號 [text] 任何文字或空白
範例
/* vim: set ai tw=75: */
/* Vim: set ai tw=75: */
{vi:|vim:|Vim:|ex:} 前的空白字元是必需的。這可以最大限度地減少像 "lex:" 這樣的普通單字被捕獲的機會。有一個例外:"vi:" 和 "vim:" 也可以在行的開頭 (為了與 3.0 版相容)。在行首使用 "ex:" 將被忽略 (這可能是 "example:" 的縮寫)。
如果在 modeline 內停用了 modeline,則後續的 modeline 將被忽略。這是為了允許在每個檔案的基礎上關閉 modeline。當某行看起來像 modeline 但實際上不是時,這很有用。例如,最好以以下內容開始一個包含 "vim:" 之類字串的 YAML 檔案:
# vim: nomodeline
以便避免錯誤偵測 modeline。停用 modeline 後,同一行上的後續選項 (如果有的話) 仍然會被評估 (但通常不會有)。
modeline-local
這些選項的設定方式與 ":setlocal" 類似:新值僅適用於包含該檔案的緩衝區和視窗。雖然可以從 modeline 設定全域選項,但這種情況並不常見。如果您開啟了兩個視窗,並且其中的檔案將相同的全域選項設定為不同的值,則結果取決於哪個視窗最後開啟。
當編輯已載入的檔案時,僅使用 modeline 中的視窗本地選項。因此,如果您在開啟檔案後手動變更了緩衝區本地選項,則在另一個視窗中編輯同一個緩衝區時,該選項不會被變更。但是視窗本地選項將會被設定。
modeline-version
如果 modeline 僅適用於某些版本的 Vim,則可以在使用 "vim:" 或 "Vim:" 的地方指定版本號:vim{vers}: 版本 {vers} 或更高版本 vim<{vers}: 版本早於 {vers} vim={vers}: 版本 {vers} vim>{vers}: 版本晚於 {vers} {vers} 對於 Vim 7.0 而言是 700 (主要版本加次要版本的 100 倍)。例如,僅將 modeline 用於 Vim 7.0
/* vim700: set foldmethod=marker */
將 modeline 用於 7.2 版之後的 Vim
/* vim>702: set cole=2: */
"vim" 和 ":" 之間不能有空格。如果 {vers} 不符合整數,則忽略 modeline。
可以透過 'modelines' 選項設定檢查的行數。如果 'modeline' 關閉或 'modelines' 為 0,則不會檢查任何行。
請注意,對於第一種形式,將使用該行的所有剩餘部分,因此像這樣的一行
/* vi:ts=4: */
將會為尾隨的 "*/" 提供錯誤訊息。這一行沒問題
/* vi:set ts=4: */
如果偵測到錯誤,則會跳過該行的其餘部分。
如果要在 set 命令中包含 ':',請在其前面加上 '\'。':' 前面的反斜線將被移除。範例
/* vi:set fillchars=stl\:^,vert\:\|: */
這會將 'fillchars' 選項設定為 "stl:^,vert:\|"。只會移除 ':' 前面的單個反斜線。因此,若要包含 "\:",您必須指定 "\\:"。E992
基於安全性考量,不支援 "set" 以外的其他命令 (有人可能會建立包含 modeline 的特洛伊木馬文字檔)。並非所有選項都可以設定。對於某些選項,會設定一個旗標,以便在使用該值時,sandbox 有效。只有在設定 'modelineexpr' 時 (預設為關閉),才能從 modeline 設定某些選項。
儘管如此,modeline 總是存在導致問題的小風險。例如,當某些小丑將 'textwidth' 設定為 5 時,您的所有行都會意外地換行。因此,請在編輯不受信任的文字之前停用 modeline。例如,mail ftplugin 會執行此操作。
提示:如果您想執行設定選項以外的操作,您可以定義一個自動命令,該命令會檢查檔案中是否有特定字串。例如
au BufReadPost * if getline(1) =~ "VAR" | call SetVar() | endif
並定義一個函式 SetVar(),該函式會對包含 "VAR" 的行執行某些操作。

3. 選項摘要 option-summary

在下面的列表中,所有選項都以其完整名稱和縮寫 (如果有的話) 列出。可以使用兩種形式。
在此文件中,當布林選項為「設定」時,表示輸入了 ":set option"。當選項為「重設」時,則使用 ":set nooption"。
大多數選項在所有視窗和緩衝區中都相同。有些選項特定於文字在視窗中的呈現方式。這些選項可以在每個視窗中設定為不同的值。例如,'list' 選項可以在一個視窗中設定,而在同一個文字的另一個視窗中重設,從而同時提供兩種檢視類型。有些選項特定於特定檔案。這些選項對於每個檔案或緩衝區可以有不同的值。例如,'textwidth' 選項對於普通的文字檔可以是 78,而對於 C 程式則可以是 0。
global 所有緩衝區和視窗的一個選項 local to window 每個視窗都有其自己的此選項副本 local to buffer 每個緩衝區都有其自己的此選項副本
建立新視窗時,會使用目前活動視窗的選項值作為視窗特定選項的預設值。對於緩衝區特定選項,這取決於 'cpoptions' 選項中的 's' 和 'S' 旗標。如果包含 's' (預設值),則當第一次輸入緩衝區時,會從目前活動的緩衝區複製緩衝區選項的值。如果存在 'S',則每次輸入緩衝區時都會複製選項,這幾乎就像擁有全域選項一樣。如果不存在 's' 和 'S',則會在建立緩衝區時從目前活動的緩衝區複製選項。
隱藏選項 hidden-options
並非所有版本都支援所有選項。這取決於支援的功能,有時也取決於系統。下面的大括號中有關於此的註解。當某個選項不受支援時,仍然可以設定它而不會產生錯誤,這稱為隱藏選項。但是,您無法取得隱藏選項的值,它不會被儲存。
若要測試是否可以使用 ":set" 來使用選項 "foo",請使用類似下列的程式碼
if exists('&foo')
這也會為隱藏選項傳回 true。若要測試是否真的支援選項 "foo",請使用類似下列的程式碼
if exists('+foo')
E355
帶有簡短描述的選項跳躍表可以在 Q_op 中找到。
'allowrevins' 'ari' 'noallowrevins' 'noari' 'allowrevins' 'ari' 布林值 (預設為關閉) 全域 允許在插入模式中使用 CTRL-_。預設為關閉,以避免不小心輸入 CTRL-_ 而不是 SHIFT-_ 的使用者進入反向插入模式,並且不知道如何退出。請參閱 'revins'
'ambiwidth' 'ambw' 'ambiwidth' 'ambw' 字串 (預設為 "single") 全域 告訴 Vim 如何處理東亞寬度類別為模糊的字元 (例如歐元、註冊標誌、版權標誌、希臘字母、西里爾字母)。
目前有兩種可能的值:"single":使用與 US-ASCII 中字元相同的寬度。這是大多數使用者所預期的。"double":使用 ASCII 字元寬度的兩倍。E834 E835 如果 'listchars''fillchars' 包含一個會是雙倍寬度的字元,則無法使用值 "double"。當呼叫 setcellwidths() 時,也可能會提供這些錯誤。
使用 setcellwidths() 指定的字元會覆寫這些值。
有許多 CJK 字型,其中這些字元字形的寬度完全基於它們在舊版/傳統 CJK 編碼中佔用的八位元組數。在這些編碼中,歐元、註冊標誌、希臘/西里爾字母由兩個八位元組表示,因此這些字型具有針對它們的「寬」字形。這對於一些用於在文字檔中製作表格的線條繪製字元也是如此。因此,當 GUI Vim 使用 CJK 字型,或者 Vim 在使用 CJK 字型 (或 Vim 在使用 "-cjkwidth" 選項叫用的 xterm 內執行) 的終端機 (模擬器) 內執行時,此選項應設定為 "double",以使 Vim 感知的寬度與字型中字形的寬度一致。當系統地區設定設定為其中一個 CJK 地區設定時,可能也必須在 CJK MS-Windows 下設定為 "double"。請參閱 Unicode 標準附錄 #11 (https://www.unicode.org/reports/tr11)。
'arabic' 'arab' 'noarabic' 'noarab' 'arabic' 'arab' 布林值 (預設為關閉) 本機視窗 可以設定此選項以開始編輯阿拉伯文。設定此選項將會
設定 'rightleft' 選項,除非已設定 'termbidi'
設定 'arabicshape' 選項,除非已設定 'termbidi'
'keymap' 選項設定為 "arabic";在插入模式下,CTRL-^ 會切換輸入英文和阿拉伯文按鍵對應。
設定 'delcombine' 選項
重設此選項將會
重設 'rightleft' 選項。
停用 'keymap' 的使用 (而不變更其值)。請注意,'arabicshape''delcombine' 不會被重設 (它是全域選項)。另請參閱 arabic.txt
'arabicshape' 'arshape' 'noarabicshape' 'noarshape' 'arabicshape' 'arshape' 布林值 (預設為開啟) 全域 當開啟且 'termbidi' 關閉時,顯示阿拉伯文所需的視覺字元校正會生效。本質上,會啟用塑形;該術語是一個廣泛的術語,其中包含:a) 基於字元在單字內的位置 (初始、中間、最終和獨立) 變更/變形字元。b) 啟用組合字元的能力 c) 啟用一些字元所需的組合。停用後,顯示會顯示每個字元的真實獨立形式。阿拉伯文是一種複雜的語言,需要其他設定,有關更多詳細資訊,請參閱 arabic.txt
'autochdir' 'acd' 'noautochdir' 'noacd' 'autochdir' 'acd' 布林值 (預設為關閉) 全域。當啟用時,Vim 會在您開啟檔案、切換緩衝區、刪除緩衝區或開啟/關閉視窗時,變更目前的工作目錄。它會變更為包含已開啟或選取之檔案的目錄。當緩衝區沒有名稱時,它也沒有目錄,因此在導覽至該緩衝區時,目前目錄不會變更。 注意:當此選項啟用時,某些外掛程式可能無法運作。
'autoindent' 'ai' 'noautoindent' 'noai' 'autoindent' 'ai' 布林值 (預設為開啟) 緩衝區本機。在開始新行時 (在插入模式中輸入 <CR> 或使用 "o" 或 "O" 命令時),從目前行複製縮排。如果您在新行上除了 <BS>CTRL-D 之外沒有輸入任何內容,然後輸入 <Esc>CTRL-O<CR>,則縮排會再次刪除。將游標移動到另一行具有相同的效果,除非 'cpoptions' 中包含 'I' 旗標。當 autoindent 開啟時,格式化 (使用 "gq" 命令或在插入模式中達到 'textwidth' 時) 會使用第一行的縮排。當 'smartindent''cindent' 開啟時,縮排會以不同的方式變更。
'autoread' 'ar' 'noautoread' 'noar' 'autoread' 'ar' 布林值 (預設為開啟) 全域或緩衝區本機 全域-本機。當偵測到檔案已在 Vim 外部變更,且檔案在 Vim 內部未變更時,會自動再次讀取該檔案。當檔案已刪除時,不會執行此操作,因此您會擁有刪除前的文字。當檔案再次出現時,會讀取該檔案。時間戳記 如果此選項具有本機值,請使用此命令切換回使用全域值
set autoread<
'autowrite' 'aw' 'noautowrite' 'noaw' 'autowrite' 'aw' 布林值 (預設為關閉) 全域。在每次執行 :next:rewind:last:first:previous:stop:suspend:tag:!:makeCTRL-]CTRL-^ 命令時,以及當 :bufferCTRL-OCTRL-I、'{A-Z0-9} 或 {A-Z0-9} 命令將您帶到另一個檔案時,如果檔案已修改,則會寫入檔案的內容。如果緩衝區變成隱藏,則不會寫入緩衝區,例如,當 'bufhidden' 設定為 "hide" 且使用 :next 時。請注意,對於某些命令,不會使用 'autowrite' 選項,請參閱 'autowriteall'。某些緩衝區不會被寫入,特別是當 'buftype' 為 "nowrite"、"nofile"、"terminal" 或 "prompt" 時。請小心使用:如果您對不想儲存的緩衝區進行臨時變更,此選項可能會導致該變更被儲存。使用 ":file {name}" 重新命名緩衝區可能有助於避免此問題。
'autowriteall' 'awa' 'noautowriteall' 'noawa' 'autowriteall' 'awa' 布林值 (預設為關閉) 全域。與 'autowrite' 類似,但也用於 ":edit"、":enew"、":quit"、":qall"、":exit"、":xit"、":recover" 命令以及關閉 Vim 視窗。設定此選項也表示 Vim 的行為類似於已設定 'autowrite'
'background' 'bg' 'background' 'bg' 字串 (預設為 "dark") 全域。當設定為 "dark" 或 "light" 時,會針對該背景類型調整預設色彩群組。TUI 或其他 UI 會在啟動時設定此值 (觸發 OptionSet),如果它可以偵測到背景顏色。
此選項不會變更背景顏色,它會告訴 Nvim "繼承" (終端機/GUI) 背景的外觀。如果您想要明確設定背景顏色,請參閱 :hi-normalg:colors_name
當載入色彩配置時 (設定 "g:colors_name" 變數),變更 'background' 將導致重新載入色彩配置。如果色彩配置調整為 'background' 的值,這將會有效。但是,如果色彩配置本身設定 'background',則效果可能會被取消。必要時先刪除 "g:colors_name" 變數。
通常此選項會設定在 vimrc 檔案中。可能會取決於終端機名稱。範例
if $TERM ==# "xterm"
  set background=dark
endif
當此選項變更時,醒目提示群組的預設設定將會變更。若要使用其他設定,請在設定 'background' 選項之後放置 ":highlight" 命令。
'backspace' 'bs' 'backspace' 'bs' 字串 (預設為 "indent,eol,start") 全域。影響插入模式中 <BS><Del>CTRL-WCTRL-U 的運作方式。這是以逗號分隔的項目列表。每個項目都允許一種在某個項目上退格的方式
值 效果
indent 允許在自動縮排上退格。eol 允許在換行符號上退格 (聯接行)。start 允許在插入開始處退格;CTRL-WCTRL-U 在插入開始處停止一次。nostop 與 start 類似,但 CTRL-WCTRL-U 不會在插入開始處停止。
當值為空時,會使用與 Vi 相容的退格,上述項目中提及的任何方式都不可能。
'backup' 'bk' 'nobackup' 'nobk' 'backup' 'bk' 布林值 (預設為關閉) 全域。在覆寫檔案之前建立備份。在檔案成功寫入後保留備份。如果您不想保留備份檔案,但您確實想要在寫入檔案時建立備份,請重設此選項並設定 'writebackup' 選項 (這是預設值)。如果您根本不想要備份檔案,請重設這兩個選項 (如果您的檔案系統幾乎已滿,請使用此選項)。如需更多說明,請參閱 備份表。當 'backupskip' 模式符合時,無論如何都不會建立備份。當設定 'patchmode' 時,可以重新命名備份以使其成為檔案的最舊版本。
'backupcopy' 'bkc' 'backupcopy' 'bkc' 字串 (預設為 "auto") 全域或緩衝區本機 全域-本機。當寫入檔案並建立備份時,此選項會告知如何執行此操作。這是以逗號分隔的單字列表。
主要值為:"yes" 建立檔案的副本並覆寫原始檔案。"no" 重新命名檔案並寫入新檔案。"auto" 前述其中一個,最適合的。
可以與上述值組合的其他值為:"breaksymlink" 寫入時始終中斷符號連結。"breakhardlink" 寫入時始終中斷硬連結。
建立副本並覆寫原始檔案
複製檔案需要額外的時間。+ 當檔案具有特殊屬性、是 (硬/符號) 連結或具有資源分支時,所有這些都會保留。
當檔案是連結時,備份將具有連結的名稱,而不是實際檔案的名稱。
重新命名檔案並寫入新檔案:+ 速度很快。
有時並非檔案的所有屬性都可以複製到新檔案。
當檔案是連結時,新檔案將不會是連結。
"auto" 值是中間方法:當 Vim 看到重新命名檔案在沒有副作用的情況下是可能的時 (可以傳遞屬性且檔案不是連結),則會使用該方法。當預期會出現問題時,將會建立副本。
"breaksymlink" 和 "breakhardlink" 值可以與 "yes"、"no" 和 "auto" 中的任何一個組合使用。當包含這些值時,它們會強制 Vim 始終中斷符號連結或硬連結,方法是執行與 "no" 選項完全相同的操作,將原始檔案重新命名為備份,並在其位置寫入新檔案。這在所有檔案都是符號連結或硬連結的來源樹中可能會很有用,並且任何變更都應保留在本地來源樹中,而不要傳播回原始來源。crontab
"no" 和 "auto" 會導致問題的一種情況:開啟檔案、叫用 Vim 編輯該檔案,然後測試開啟的檔案是否已變更 (透過檔案描述元) 的程式,將會檢查備份檔案而不是新建立的檔案。"crontab -e" 就是一個例子,還有幾個 檔案監視器 常駐程式,例如 inotify。在這種情況下,您可能想要切換此選項。
建立副本時,原始檔案會被截斷,然後填入新文字。這表示原始檔案的保護位元、擁有者和符號連結不會被修改。但是,備份檔案是新檔案,由編輯檔案的使用者擁有。備份的群組會設定為原始檔案的群組。如果此操作失敗,則群組的保護位元會與其他使用者的保護位元相同。
當重新命名檔案時,情況會相反:備份具有原始檔案的相同屬性,並且新寫入的檔案由目前的使用者擁有。當檔案是 (硬/符號) 連結時,新檔案不會是!這就是為什麼當檔案是連結時,"auto" 值不會重新命名的原因。新寫入的檔案的擁有者和群組將設定為與原始檔案相同的擁有者和群組,但系統可能會拒絕執行此操作。在這種情況下,"auto" 值也不會重新命名檔案。
'backupdir' 'bdir' 'backupdir' 'bdir' 字串 (預設為 ".,$XDG_STATE_HOME/nvim/backup//") 全域。備份檔案的目錄列表,以逗號分隔。
備份檔案將在列表中第一個可以建立備份檔案的目錄中建立。如果沒有任何目錄存在,Nvim 將嘗試建立列表中的最後一個目錄。
空值表示不會建立備份檔案 (不可能使用 'patchmode'!)。因此,寫入可能會失敗。
目錄 "." 表示將備份檔案放在與編輯檔案相同的目錄中。
以 "./" (或 MS-Windows 的 ".\") 開頭的目錄表示將備份檔案放置在相對於編輯檔案的位置。開頭的 "." 會被編輯檔案的路徑名稱取代。(目錄名稱中的 "." 沒有特殊含義)。
逗號後的空格會被忽略,其他空格則視為目錄名稱的一部分。若要在目錄名稱的開頭使用空格,請在其前面加上反斜線。
若要在目錄名稱中包含逗號,請在其前面加上反斜線。
目錄名稱可以 '/' 結尾。
對於 Unix 和 Win32,如果目錄以兩個路徑分隔符號 "//" 結尾,交換檔名將會從檔案的完整路徑建立,並將所有路徑分隔符號都更改為百分比 '%' 符號。這將確保備份目錄中的檔名具有唯一性。在 Win32 上,也可以使用 "\\" 結尾。但是,當後面跟著分隔逗號時,您必須使用 "//",因為 "\\" 會將逗號包含在檔名中。因此,建議使用 '//' 而不是 '\\'。
環境變數會被展開,請參考 :set_env
請小心使用 '\' 字元,在空格前輸入一個,若要在選項中取得一個,則輸入兩個 (請參閱 option-backslash),例如:
set bdir=c:\\tmp,\ dir\\,with\\,commas,\\\ dir\ with\ spaces
另請參閱 'backup''writebackup' 選項。如果您想在 Unix 上隱藏備份檔案,請考慮以下值:
set backupdir=./.backup,~/.backup,.,/tmp
您必須在每個目錄和您的主目錄中建立一個 ".backup" 目錄,才能使其正常運作。當從列表中新增或移除目錄時,建議使用 :set+=:set-=。這樣可以避免未來版本使用其他預設值時發生問題。基於安全原因,此選項無法從 modeline沙箱 中設定。
'backupext' 'bex' E589 'backupext' 'bex' 字串 (預設值為 "~") 全域字串,附加到檔名後,構成備份檔名。預設值相當不尋常,這是為了避免意外地用備份檔覆蓋現有檔案。您可能更喜歡使用 ".bak",但請確保您沒有想要保留的 ".bak" 檔案。只能使用正常的檔名字元;/\*?[|<> 是不合法的。
如果您想保留大量備份,您可以使用 BufWritePre 自動指令在寫入檔案之前變更 'backupext' 以包含時間戳記。
au BufWritePre * let &bex = '-' .. strftime("%Y%b%d%X") .. '~'
使用 'backupdir' 將備份放置在不同的目錄中。
'backupskip' 'bsk' 'backupskip' 'bsk' 字串 (預設值為 "$TMPDIR/*,$TMP/*,$TEMP/*" Unix: "/tmp/*,$TMPDIR/*,$TMP/*,$TEMP/*" Mac: "/private/tmp/*,$TMPDIR/*,$TMP/*,$TEMP/*") 全域選項。檔案模式清單。當其中一個模式與正在寫入的檔案名稱相符時,不會建立備份檔。指定的檔名和檔案的完整路徑名稱都會使用。此模式的使用方式與 :autocmd 相同,請參閱 autocmd-pattern。請注意特殊字元,請參閱 option-backslash。當未定義 $TMPDIR、$TMP 或 $TEMP 時,預設值將不會使用它。 "/tmp/*" 僅適用於 Unix。
警告:如果沒有備份檔,表示當 Vim 無法正確寫入您的緩衝區,然後因為某些原因而退出 Vim 時,您會同時遺失原始檔案和您正在寫入的內容。只有在您不在乎遺失檔案時,才停用備份。
請注意,環境變數不會展開。如果您想使用 $HOME,您必須明確展開它,例如:
let &backupskip = escape(expand('$HOME'), '\') .. '/tmp/*'
請注意,預設值也確保 "crontab -e" 可以運作 (當透過重新命名原始檔案來建立備份時,crontab 將不會看到新建立的檔案)。另請參閱 'backupcopy'crontab
'belloff' 'bo' 'belloff' 'bo' 字串 (預設值為 "all") 全域選項。指定哪些事件不會響鈴。它是以逗號分隔的項目清單。對於存在的每個項目,都會將鈴聲靜音。這對於指定插入模式中要靜音的特定事件最有用。您也可以使用 'visualbell' 使其閃爍。
項目                         存在時的意義
all                       所有事件。 backspace                     按下 <BS><Del>,並且刪除導致錯誤。 cursor                      在插入模式中使用游標鍵或<PageUp>/<PageDown>移動失敗。 complete                     使用 i_CTRL-X_CTRL-Ki_CTRL-X_CTRL-T 時發生錯誤。 copy                      無法使用 i_CTRL-Yi_CTRL-E 從插入模式複製字元。 ctrlg                      插入模式中在 <C-G> 之後出現未知字元。 error                      發生其他錯誤 (例如,嘗試合併最後一行) (主要用於 普通模式命令列模式)。 esc                      在 普通模式 中按下 <Esc>。 hangul                     忽略。 lang                      為 Lua/Mzscheme/TCL 呼叫蜂鳴模組。 mess                      沒有 g< 的可用輸出。 showmatch                    'showmatch' 函式發生錯誤。 operator                    空區域錯誤 cpo-E。 register                    在 插入模式<C-R> 之後出現未知暫存器。 shell                     來自 shell 輸出 :! 的鈴聲。 spell                     拼字建議時發生錯誤。 term                      來自 :terminal 輸出的鈴聲。 wildmode                    命令列補全中有更多符合的項目可用 (取決於 'wildmode' 設定)。
這對於微調插入模式中應該響鈴的時間最有用。對於普通模式和 Ex 命令,響鈴通常表示發生錯誤。可以透過新增 "error" 關鍵字來將其靜音。
'binary' 'bin' 'nobinary' 'nobin' 'binary' 'bin' 布林值 (預設值為 off) 緩衝區本機選項。在編輯二進位檔案之前,應該設定此選項。您也可以使用 -b Vim 引數。當此選項開啟時,會變更一些選項 (即使它已經開啟): 'textwidth' 將設定為 0。 'wrapmargin' 將設定為 0。 'modeline' 將關閉。 'expandtab' 將關閉。此外,不會使用 'fileformat''fileformats' 選項,會像 'fileformat' 為 "unix" 一樣讀取和寫入檔案 (單個 <NL> 分隔行)。不會使用 'fileencoding''fileencodings' 選項,檔案讀取時不進行轉換。注意:當您在 'bin' 選項開啟時開始編輯 (另一個) 檔案時,來自自動指令的設定可能會再次變更設定 (例如, 'textwidth'),導致編輯時發生問題。當檔案已載入時,您可能需要再次設定 'bin'。這些選項的先前值會被記住,並在 'bin' 從開啟切換為關閉時還原。每個緩衝區都有自己的一組已儲存選項值。若要以設定 'binary' 的方式編輯檔案,您可以使用 ++bin 引數。這樣可以避免您必須執行 ":set bin",這會影響您編輯的所有檔案。寫入檔案時,只有在原始檔案中存在 <EOL> 時,才會寫入最後一行的 <EOL> (通常,如果最後一行沒有 <EOL>,Vim 會附加 <EOL>;這會使檔案變長)。請參閱 'endofline' 選項。
'bomb' 'nobomb' 'bomb' 布林值 (預設值為 off) 緩衝區本機選項。當寫入檔案且符合下列條件時,會在檔案前面加上 BOM (位元組順序標記)。
此選項為開啟狀態。
'binary' 選項為關閉狀態。
'fileencoding' 是 "utf-8"、"ucs-2"、"ucs-4" 或其中一個小/大端變體。有些應用程式會使用 BOM 來識別檔案的編碼。通常用於 MS-Windows 上的 UCS-2 檔案。對於其他應用程式,它會造成問題,例如: "cat file1 file2" 會使 file2 的 BOM 出現在結果檔案的中間。Gcc 不接受 BOM。當 Vim 讀取檔案且 'fileencodings' 以 "ucs-bom" 開頭時,會檢查是否存在 BOM,並相應地設定 'bomb'。除非設定 'binary',否則會從第一行中移除,因此您在編輯時看不到它。當您未變更選項時,會在寫入檔案時還原 BOM。
'breakat' 'brk' 'breakat' 'brk' 字串 (預設值為 " ^I!@*-+;:,./?") 全域選項。此選項可讓您選擇哪些字元在 'linebreak' 開啟時可能會導致換行。僅適用於 ASCII 字元。
'breakindent' 'bri' 'nobreakindent' 'nobri' 'breakindent' 'bri' 布林值 (預設值為 off) 視窗本機選項。每個自動換行的行都會以視覺方式繼續縮排 (與該行開頭的空格量相同),從而保留文字的水平區塊。
'breakindentopt' 'briopt' 'breakindentopt' 'briopt' 字串 (預設值為 ""),視窗區域設定,用於 'breakindent'。它可以包含以下可選項目,且必須以逗號分隔:min:{n} 套用 'breakindent' 後保留的最小文字寬度,即使結果文字通常應更窄。這可以防止幾乎縮排到視窗右邊界的文字在斷行時佔用大量垂直空間。(預設值:20) shift:{n} 套用 'breakindent' 後,換行行的開頭將移動指定的字元數。它允許動態法式段落縮排(負數)或強調行的延續(正數)。(預設值:0) sbr 在套用額外縮排之前顯示 'showbreak' 值。(預設值:關閉) list:{n} 為符合編號或項目符號列表的行增加額外縮排(使用 'formatlistpat' 設定)。(預設值:0) list:-1 使用與 'formatlistpat' 匹配的寬度進行縮排。 column:{n} 在第 {n} 個欄位縮排。將覆蓋其他子選項。 注意: 可以為 'showbreak' 設定增加額外的縮排。(預設值:關閉)
'bufhidden' 'bh' 'bufhidden' 'bh' 字串 (預設值為 ""),緩衝區區域設定,local-noglobal。此選項指定緩衝區不再顯示在視窗中時會發生什麼:<empty> 跟隨全域 'hidden' 選項 hide 隱藏緩衝區(不卸載它),即使未設定 'hidden' unload 卸載緩衝區,即使已設定 'hidden':hide 命令也會卸載緩衝區 delete 從緩衝區列表中刪除緩衝區,即使已設定 'hidden':hide 命令也會刪除緩衝區,使其行為類似於 :bdelete wipe 從緩衝區列表中清除緩衝區,即使已設定 'hidden':hide 命令也會清除緩衝區,使其行為類似於 :bwipeout
注意:當使用 "unload"、"delete" 或 "wipe" 時,緩衝區中的變更將遺失,且不會發出警告。此外,這些值可能會中斷暫時在緩衝區之間切換的自動命令。此選項與 'buftype''swapfile' 一起使用,以指定特殊類型的緩衝區。請參閱 特殊緩衝區
'buflisted' 'bl' 'nobuflisted' 'nobl' E85 'buflisted' 'bl' 布林值 (預設值為開啟) 緩衝區區域設定。當設定此選項時,緩衝區會顯示在緩衝區列表中。如果重設此選項,則不會將其用於 ":bnext"、"ls"、Buffers 選單等。Vim 會為僅用於記住檔案名稱或標記的緩衝區重設此選項。Vim 會在開始編輯緩衝區時設定此選項。但使用 ":buffer" 移動到緩衝區時則不會設定。
'buftype' 'bt' E382 'buftype' 'bt' 字串 (預設值為 "") 緩衝區區域設定 local-noglobal。此選項的值指定緩衝區的類型:<empty> 一般緩衝區 acwrite 緩衝區將始終使用 BufWriteCmds 寫入 help 說明緩衝區 (請勿手動設定) nofile 緩衝區與檔案無關,不會被寫入 nowrite 緩衝區不會被寫入 quickfix 錯誤列表 :cwindow 或位置列表 :lwindow terminal 終端機模擬器 緩衝區 prompt 緩衝區,其中只能編輯最後一行,旨在由外掛程式使用,請參閱 prompt-buffer
此選項與 'bufhidden''swapfile' 一起使用,以指定特殊類型的緩衝區。請參閱 特殊緩衝區。另請參閱 win_gettype(),它會傳回視窗的類型。
請小心變更此選項,它可能會產生許多副作用!其中一個副作用是,如果檔案被另一個程式變更,Vim 將不會檢查檔案的時間戳記,這將不會被注意到。
"quickfix" 緩衝區僅用於錯誤列表和位置列表。此值由 :cwindow:lwindow 命令設定,不應變更它。
"nofile" 和 "nowrite" 緩衝區類似:兩者:緩衝區不寫入磁碟,":w" 無效(但":w filename" 有效)。兩者:永遠不會認為緩衝區已 'modified'。當變更遺失時(例如當您退出 Vim 時)不會發出警告。兩者:僅當使用過多記憶體時才會建立交換檔(當 'swapfile' 已重設時,則永遠不會有交換檔)。nofile 僅有:緩衝區名稱是固定的,它的處理方式不像檔案名稱。它不會因為 :cd 命令而修改。兩者:當使用 ":e bufname" 且已編輯 "bufname" 時,緩衝區會變為空,並且會像 :edit 一樣觸發自動命令。E676
"acwrite" 表示緩衝區名稱與檔案無關,像 "nofile" 一樣,但會被寫入。因此,與 "nofile" 和 "nowrite" 相反,":w" 有效,並且無法在不儲存的情況下放棄修改過的緩衝區。對於寫入,必須有符合的 BufWriteCmdFileWriteCmdFileAppendCmd 自動命令。
'casemap' 'cmp' 'casemap' 'cmp' 字串 (預設值為 "internal,keepascii") 全域設定。指定有關變更字母大小寫的詳細資訊。它可能包含以下以逗號分隔的字詞:internal 使用內部大小寫對應函式,目前地區設定不會變更大小寫對應。當省略 "internal" 時,在可用的情況下會使用 towupper() 和 towlower() 系統程式庫函式。keepascii 對於 ASCII 字元 (0x00 到 0x7f),使用美國大小寫對應,目前地區設定無效。這可能僅對土耳其文很重要。
'cdhome' 'cdh' 'nocdhome' 'nocdh' 'cdhome' 'cdh' 布林值 (預設值為關閉) 全域設定。當開啟時,沒有參數的 :cd:tcd:lcd 會將目前工作目錄變更為 $HOME 目錄,就像在 Unix 中一樣。當關閉時,這些命令只會印出目前目錄名稱。在 Unix 上,此選項無效。出於安全原因,無法從 modeline沙箱中設定此選項。
'cdpath' 'cd' E344 E346 'cdpath' 'cd' 字串 (預設值等同於 $CDPATH 或 ",,") 全域設定。這是使用 :cd:tcd:lcd 命令時要搜尋的目錄列表,前提是正在搜尋的目錄具有相對路徑,而不是以 "/"、"./" 或 "../" 開頭的絕對部分,則不使用 'cdpath' 選項。'cdpath' 選項的值與 'path' 具有相同的形式和語意。另請參閱 檔案搜尋。預設值取自 $CDPATH,並在前面加上 "," 以首先在目前目錄中搜尋。如果從 $CDPATH 取得的預設值不是您想要的,請在您的 vimrc 檔案中包含以下命令的修改版本以覆寫它
let &cdpath = ',' .. substitute(substitute($CDPATH, '[, ]', '\\\0', 'g'), ':', ',', 'g')
出於安全原因,無法從 modeline沙箱中設定此選項。(可以將 'cdpath' 的部分傳遞給 shell 以展開檔案名稱)。
'cedit'
'cedit' 字串 (預設值為 CTRL-F) 全域設定。在命令列模式中用於開啟命令列視窗的按鍵。僅允許使用不可列印的按鍵。按鍵可以指定為單一字元,但很難輸入。首選的方式是使用 按鍵表示法 (例如,<Up><C-F>) 或前面加上插入符號的字母 (例如,^FCTRL-F)。範例
set cedit=^Y
set cedit=<Esc>
Nvi 也有此選項,但它僅使用第一個字元。請參閱 cmdwin
'channel'
'channel' 數字 (預設值為 0) 緩衝區區域設定。連線到緩衝區的 通道,如果沒有連線任何通道,則為 0。在 :terminal 緩衝區中,這是終端機通道。唯讀。
'charconvert' 'ccv' E202 E214 E513 'charconvert' 'ccv' 字串 (預設值為 "") 全域設定。用於字元編碼轉換的運算式。當要讀取或已寫入的檔案具有與所需編碼不同的編碼時,將會評估此運算式。當支援內部 iconv() 函式並且能夠進行轉換時,則不會使用 'charconvert'。首選使用 iconv(),因為它速度快得多。當讀取 stdin -- 時,不會使用 'charconvert',因為沒有要從中轉換的檔案。您必須先將文字儲存到檔案中。如果成功,則運算式必須傳回零、false 或空字串;如果失敗,則傳回非零值或 true。請參閱 編碼名稱以取得可能的編碼名稱。此外,也會使用 'fileencodings''fileencoding' 中提供的名稱。Vim 會在內部完成 "latin1"、"unicode"、"ucs-2"、"ucs-4" 和 "utf-8" 之間的轉換,而不會使用 'charconvert'。也用於 Unicode 轉換。範例
set charconvert=CharConvert()
fun CharConvert()
  system("recode "
        \ .. v:charconvert_from .. ".." .. v:charconvert_to
        \ .. " <" .. v:fname_in .. " >" .. v:fname_out)
  return v:shell_error
endfun
相關的 Vim 變數為:v:charconvert_from 目前編碼的名稱 v:charconvert_to 所需編碼的名稱 v:fname_in 輸入檔案的名稱 v:fname_out 輸出檔案的名稱 請注意,v:fname_in 和 v:fname_out 永遠不會相同。
使用不帶參數的函式呼叫的優點是它速度更快,請參閱 expr-option-function
如果 'charconvert' 運算式以 s: 或 <SID> 開頭,則會將其取代為指令碼 ID (local-function)。範例
set charconvert=s:MyConvert()
set charconvert=<SID>SomeConvert()
否則,運算式會在設定選項的指令碼內容中評估,因此可以使用指令碼區域設定項目。
出於安全原因,無法從 modeline沙箱中設定此選項。
'cindent' 'cin' 'nocindent' 'nocin' 'cindent' 'cin' 布林值 (預設關閉) 緩衝區局部設定,啟用 C 程式碼自動縮排。請參閱 'cinkeys' 來設定在插入模式下觸發重新縮排的按鍵,並參閱 'cinoptions' 來設定您偏好的縮排風格。如果 'indentexpr' 非空,它會覆寫 'cindent'。如果 'lisp' 未啟用,且 'indentexpr''equalprg' 皆為空,則 "=" 運算子會使用此演算法進行縮排,而不是呼叫外部程式。請參閱 C 縮排。如果您不喜歡 'cindent' 的運作方式,請嘗試 'smartindent' 選項或 'indentexpr'
'cinkeys' 'cink' 'cinkeys' 'cink' 字串 (預設 "0{,0},0],:,0#,!^F,o,O,e") 緩衝區局部設定,當在插入模式下輸入時,會導致目前行重新縮排的按鍵列表。僅在 'cindent' 啟用且 'indentexpr' 為空時使用。有關此選項的格式,請參閱 cinkeys-format。請參閱 C 縮排
'cinoptions' 'cino' 'cinoptions' 'cino' 字串 (預設 "") 緩衝區局部設定,'cinoptions' 會影響 'cindent' 如何在 C 程式碼中重新縮排行。有關此選項的值,請參閱 cinoptions-values,有關 C 縮排的一般資訊,請參閱 C 縮排
'cinscopedecls' 'cinsd' 'cinscopedecls' 'cinsd' 字串 (預設 "public,protected,private") 緩衝區局部設定,這些關鍵字被 cino-g 解釋為 C++ 作用域宣告。例如,對於使用定義額外作用域宣告 "signals"、"public slots" 和 "private slots" 的 Qt 框架很有用。
set cinscopedecls+=signals,public\ slots,private\ slots
'cinwords' 'cinw' 'cinwords' 'cinw' 字串 (預設 "if,else,while,do,for,switch") 緩衝區局部設定,當設定 'smartindent''cindent' 時,這些關鍵字會在下一行開始額外的縮排。對於 'cindent',這僅在適當的位置(在 {} 內)執行。請注意,'ignorecase' 不用於 'cinwords'。如果大小寫不重要,請同時包含大寫和小寫的關鍵字:"if,If,IF"。
'clipboard' 'cb' 'clipboard' 'cb' 字串 (預設 "") 全域設定,此選項是以逗號分隔的名稱列表。這些名稱會被識別
clipboard-unnamed
unnamed 當包含時,Vim 將使用剪貼簿暫存器 "*" 用於所有通常會進入未命名暫存器的複製、刪除、變更和貼上操作。當明確指定暫存器時,無論 "unnamed" 是否在 'clipboard' 中,都將始終使用它。始終可以使用 "*" 符號明確存取剪貼簿暫存器。另請參閱 剪貼簿
clipboard-unnamedplus
unnamedplus "unnamed" 標誌的一個變體,它使用剪貼簿暫存器 "+" (quoteplus) 而不是暫存器 "*",用於所有通常會進入未命名暫存器的複製、刪除、變更和貼上操作。當 "unnamed" 也包含在此選項中時,複製和刪除操作(但不是貼上)還會將文字複製到暫存器 "*"。請參閱 剪貼簿
'cmdheight' 'ch' 'cmdheight' 'ch' 數字 (預設 1) 全域設定或標籤頁局部設定,用於命令列的螢幕行數。有助於避免 hit-enter 提示。此選項的值與標籤頁一起儲存,因此每個標籤頁可以有不同的值。
'cmdheight' 為零時,除非正在使用,否則不會出現命令列。顯示時,命令列將覆蓋螢幕的最後一行。
警告:cmdheight=0 是實驗性的。預期會出現一些不必要的行為。某些 'shortmess' 標誌和類似的機制可能無法生效,導致出現不必要的 hit-enter 提示。來自 Nvim 本身和外掛程式的一些資訊性訊息將不會顯示。
'cmdwinheight' 'cwh' 'cmdwinheight' 'cwh' 數字 (預設 7) 全域設定,用於命令列視窗的螢幕行數。 cmdwin
'colorcolumn' 'cc' 'colorcolumn' 'cc' 字串 (預設 "") 視窗局部設定,'colorcolumn' 是以逗號分隔的螢幕欄列表,這些欄會以 ColorColumn hl-ColorColumn 突出顯示。可用於對齊文字。將會使螢幕重繪速度變慢。螢幕欄可以是一個絕對數字,也可以是一個前面帶有 '+' 或 '-' 的數字,該數字會加到或減去 'textwidth'
set cc=+1          " highlight column after 'textwidth'
set cc=+1,+2,+3  " highlight three columns after 'textwidth'
hi ColorColumn ctermbg=lightgrey guibg=lightgrey
'textwidth' 為零時,則不使用帶有 '-' 和 '+' 的項目。最多突出顯示 256 個欄。
'columns' 'co' E594 'columns' 'co' 數字 (預設 80 或終端機寬度) 全域設定,螢幕的欄數。通常,此值由終端機初始化設定,不需要手動設定。當 Vim 在 GUI 或可調整大小的視窗中執行時,設定此選項將會變更視窗大小。當您只想將該大小用於 GUI 時,請將該命令放在您的 ginit.vim 檔案中。當您設定此選項且 Vim 無法變更顯示器的實際欄數時,顯示可能會亂掉。對於 GUI,始終可以變更,並且 Vim 會將欄數限制為螢幕上可容納的數量。您可以使用此命令來獲得盡可能寬的視窗
set columns=9999
最小值為 12,最大值為 10000。
'comments' 'com' E524 E525 'comments' 'com' 字串 (預設 "s1:/*,mb:*,ex:*/,://,b:#,:%,:XCOMM,n:>,fb:-,fb:•") 緩衝區局部設定,可以啟動註解行的逗號分隔字串列表。請參閱 格式化註解。關於使用反斜線插入空格,請參閱 option-backslash
'commentstring' 'cms' E537 'commentstring' 'cms' 字串 (預設 "") 緩衝區局部設定,註解的範本。值中的 "%s" 會被註解文字取代,並且在可能的情況下應使用空格填充。用於 註解和新增折疊標記,請參閱 折疊標記
'complete' 'cpt' E535 'complete' 'cpt' 字串 (預設 ".,w,b,u,t") 緩衝區局部設定,此選項指定使用 CTRL-PCTRL-N 時,關鍵字完成 ins-completion 的工作方式。它也用於整行完成 i_CTRL-X_CTRL-L。它指示完成的類型和掃描的位置。它是以逗號分隔的標誌列表:. 掃描目前緩衝區(忽略 'wrapscan')w 掃描其他視窗的緩衝區 b 掃描緩衝區列表中已載入的其他緩衝區 u 掃描緩衝區列表中未載入的緩衝區 U 掃描不在緩衝區列表中的緩衝區 k 掃描使用 'dictionary' 選項給定的檔案 kspell 使用目前活動的拼寫檢查 spell k{dict} 掃描檔案 {dict}。可以給出多個 "k" 標誌,模式也是有效的。例如
set cpt=k/usr/dict/*,k~/spanish
s 掃描使用 'thesaurus' 選項給定的檔案 s{tsr} 掃描檔案 {tsr}。可以給出多個 "s" 標誌,模式也是有效的。i 掃描目前和包含的檔案 d 掃描目前和包含的檔案以尋找定義的名稱或巨集 i_CTRL-X_CTRL-D ] 標籤完成 t 與 "]" 相同 f 掃描緩衝區名稱(與緩衝區內容相反)
未載入的緩衝區不會載入,因此它們的自動指令 :autocmd 不會執行,這可能會導致某些檔案出現意外的完成(例如,壓縮檔案)。未載入的緩衝區不會掃描以進行整行完成。
如您所見,CTRL-NCTRL-P 可用於執行任何基於 'iskeyword' 的擴展(例如,字典 i_CTRL-X_CTRL-K、包含的模式 i_CTRL-X_CTRL-I、標籤 i_CTRL-X_CTRL-] 和正常擴展)。
'completefunc' 'cfu' 'completefunc' 'cfu' 字串 (預設值 ""),緩衝區本地選項。此選項指定一個函式,用於在插入模式下使用 CTRL-X CTRL-U 進行補全。i_CTRL-X_CTRL-U 請參閱 complete-functions 以了解如何調用函式以及它應該返回的內容。該值可以是函式名稱、lambdaFuncref。有關更多資訊,請參閱 option-value-function。出於安全考量,此選項不能從 modelinesandbox 中設定。
'completeitemalign' 'cia' 'completeitemalign' 'cia' 字串 (預設值 "abbr,kind,menu"),全域選項。以逗號分隔的 complete-items 列表,用於控制插入模式補全期間快顯選單中項目的對齊方式和顯示順序。支援的值為 abbr、kind 和 menu。這些選項可讓您自訂補全項目在快顯選單中的顯示方式。注意:必須始終依任何順序包含這三個值。
'completeopt' 'cot' 'completeopt' 'cot' 字串 (預設值 "menu,preview"),全域或緩衝區本地選項 global-local。插入模式補全的選項列表,以逗號分隔 ins-completion。支援的值為:
menu 使用快顯選單顯示可能的補全項目。只有在有多個匹配項並且有足夠的顏色可用時才會顯示選單。ins-completion-menu
menuone 即使只有一個匹配項也使用快顯選單。當有關於匹配項的額外資訊時很有用,例如,它來自哪個檔案。
longest 只插入匹配項的最長共同文字。如果顯示選單,您可以使用 CTRL-L 添加更多字元。是否忽略大小寫取決於補全的種類。對於緩衝區文字,使用 'ignorecase' 選項。
preview 在預覽視窗中顯示有關目前選定補全項目的額外資訊。僅在與 "menu" 或 "menuone" 結合使用時有效。
popup 在快顯視窗中顯示有關目前選定補全項目的額外資訊。僅在與 "menu" 或 "menuone" 結合使用時有效。覆蓋 "preview"。
noinsert 在使用者從選單中選擇匹配項之前,不插入任何匹配文字。僅在與 "menu" 或 "menuone" 結合使用時有效。如果存在 "longest",則無效。
noselect 不在選單中選擇匹配項,強制使用者從選單中選擇一個。僅在與 "menu" 或 "menuone" 結合使用時有效。
fuzzy 為補全候選項啟用模糊匹配。這允許更靈活和直觀的匹配,其中可以跳過字元,並且即使沒有輸入確切的序列也可以找到匹配項。僅會影響如何從備選列表縮減補全候選項,而不會影響如何收集候選項(使用不同的補全類型)。
'completeslash' 'csl' 'completeslash' 'csl' 字串 (預設值 ""),僅適用於 MS-Windows 的緩衝區本地選項。設定此選項時,它會覆蓋用於補全的 'shellslash'
當此選項設定為 "slash" 時,在插入模式下使用正斜線進行路徑補全。這在編輯 HTML 標籤或在 MS-Windows 上使用 'noshellslash' 的 Makefile 時很有用。
當此選項設定為 "backslash" 時,使用反斜線。這在 MS-Windows 上使用設定了 'shellslash' 時編輯批次檔很有用。
當此選項為空時,使用的字元與 'shellslash' 相同。對於插入模式補全,使用緩衝區本地值。對於命令列補全,使用全域值。
'concealcursor' 'cocu' 'concealcursor' 'cocu' 字串 (預設值 ""),視窗本地選項。設定在哪些模式下也可以隱藏游標行中的文字。當列出目前的模式時,隱藏行為就像在其他行中一樣。n - 一般模式 v - 可視模式 i - 插入模式 c - 命令列編輯,用於 'incsearch'
'v' 適用於可視區域中的所有行,而不僅僅是游標。一個有用的值是 "nc"。這在說明文件中使用。只要您在移動,文字就會被隱藏,但是當開始插入文字或選擇可視區域時,就會顯示隱藏的文字,以便您可以看到自己正在做的事情。請記住,游標位置並不總是顯示的位置。例如,當垂直移動時,它可能會更改欄位。
'conceallevel' 'cole' 'conceallevel' 'cole' 數字 (預設值 0),視窗本地選項。決定如何顯示具有 "conceal" 語法屬性的文字:syn-conceal
值 效果
0 文字正常顯示 1 每個隱藏的文字區塊都將被替換為一個字元。如果語法項目沒有定義自訂替換字元(請參閱 :syn-cchar),則使用在 'listchars' 中定義的字元。它將以 "Conceal" 高亮群組突出顯示。2 隱藏的文字完全隱藏,除非它定義了自訂替換字元(請參閱 :syn-cchar)。3 隱藏的文字完全隱藏。
注意:在游標行中,隱藏的文字不會被隱藏,以便您可以編輯和複製文字。可以使用 'concealcursor' 選項更改此設定。
'confirm' 'cf' 'noconfirm' 'nocf' 'confirm' 'cf' 布林值 (預設值 off),全域選項。當 'confirm' 為 on 時,由於緩衝區中未儲存的變更而通常會失敗的某些操作,例如 ":q" 和 ":e",會改為彈出一個對話方塊,詢問您是否要儲存目前的檔案。您仍然可以使用 ! 無條件地 放棄 緩衝區。如果 'confirm' 為 off,您仍然可以使用 :confirm 命令僅針對一個命令啟用確認(這在映射中最有用)。另請參閱 confirm() 函式和 'guioptions' 中的 'v' 旗標。
'copyindent' 'ci' 'nocopyindent' 'noci' 'copyindent' 'ci' 布林值 (預設值 off),緩衝區本地選項。在自動縮排新行時,複製現有行縮排的結構。通常,新縮排會根據需要由一系列 Tab 和空格重建(除非啟用 'expandtab',在這種情況下僅使用空格)。啟用此選項會使新行複製現有行上用於縮排的任何字元。'expandtab' 對這些字元沒有影響,Tab 仍然是 Tab。如果新縮排大於現有行的縮排,則其餘空間將以正常方式填滿。請參閱 'preserveindent'
'cpoptions' 'cpo' cpo 'cpoptions' 'cpo' 字串 (預設值 "aABceFs_"),全域選項。單個字元旗標的序列。當存在字元時,這表示 Vi 相容的行為。這用於那些在大多數情況下或有時不希望與 Vi 相容的情況。'cpoptions' 代表 "相容選項"。可以添加逗號以提高可讀性。為了避免將來添加的旗標出現問題,請使用 ":set" 的 "+=" 和 "-=" 功能 add-option-flags
包含行為
cpo-a
a 包含時,帶有檔案名稱參數的 ":read" 命令會設定目前視窗的備用檔案名稱。cpo-A
A 包含時,帶有檔案名稱參數的 ":write" 命令會設定目前視窗的備用檔案名稱。cpo-b
b ":map" 命令中的 "\|" 被識別為 map 命令的結尾。'\' 包含在映射中,'|' 之後的文字被解釋為下一個命令。使用 CTRL-V 而不是反斜線,將 '|' 包含在映射中。適用於所有映射、縮寫、選單和自動命令。另請參閱 map_barcpo-B
B 反斜線在映射、縮寫、使用者命令和選單命令的 "to" 部分中沒有特殊含義。刪除此旗標即可像 CTRL-V 一樣使用反斜線。例如,命令 ":map X \<Esc>" 會導致 X 映射到: 'B' 包含:"\^[" (^[ 是真正的 <Esc>) 'B' 排除:"<Esc>"(5 個字元)cpo-c
c 搜尋會在游標位置的任何匹配項結尾繼續,但不會超過下一行的開頭。如果不存在,則搜尋會從游標位置的一個字元處繼續。使用 'c',重複 "/abab" 時,"abababababab" 僅獲得三個匹配項,不使用 'c',則有五個匹配項。cpo-C
C 不要串聯以反斜線開頭的來源行。請參閱 line-continuationcpo-d
d 在 'tags' 選項中使用 "./" 並不是表示使用相對於目前檔案的標籤檔案,而是使用目前目錄中的標籤檔案。cpo-D
D 無法使用 CTRL-K 在具有字元引數的正常模式命令(例如 rft)之後輸入雙圖符。cpo-e
e 當使用 ":@r" 執行暫存器時,始終將 <CR> 添加到最後一行,即使暫存器不是行式也是如此。如果不存在此旗標,則暫存器不是行式且最後一行未以 <CR> 結尾,則最後一行將放置在命令列中,並且可以在按下 <CR> 之前進行編輯。cpo-E
E 在空區域上使用 "y"、"d"、"c"、"g~"、"gu" 或 "gU" 時發生錯誤。這些運算子僅在至少要操作一個字元時才有效。範例:這會導致 "y0" 在第一列中失敗。cpo-f
f 包含時,帶有檔案名稱參數的 ":read" 命令會設定目前緩衝區的檔案名稱,如果目前緩衝區尚未具有檔案名稱。cpo-F
F 包含時,帶有檔案名稱參數的 ":write" 命令會設定目前緩衝區的檔案名稱,如果目前緩衝區尚未具有檔案名稱。另請參閱 cpo-Pcpo-i
i 包含時,中斷讀取檔案會使其保持修改狀態。cpo-I
I 在插入縮排後立即向上或向下移動游標時,不要刪除縮排。cpo-J
J 一個句子在「.」、「!」或「?」之後必須跟隨兩個空格。 <Tab> 不會被視為空白字元。cpo-K
K 當按鍵碼位於映射的中途時,不要等待按鍵碼完成。當第二個 <F1> 只讀取一部分時,這會破壞 <F1><F1> 的映射。它可以透過輸入 <F1><Esc> 來取消映射。cpo-l
l 在搜尋模式中,\[] 範圍內的反斜線會被視為字面值,只有「\]」、「\^」、「\-」和「\\」是特殊的。請參閱 /[] 'l' 包含: "/[ \t]" 會找到 <Space>、'\' 和 't'。'l' 排除: "/[ \t]" 會找到 <Space><Tab>cpo-L
L 當設定 'list' 選項時,'wrapmargin''textwidth''softtabstop' 和虛擬取代模式 (請參閱 gR) 會將 <Tab> 視為兩個字元,而不是 <Tab> 的正常行為。cpo-m
m 當包含時,showmatch 將始終等待半秒。當不包含時,showmatch 將等待半秒或直到輸入字元為止。'showmatch'cpo-M
M 當排除時,「%」匹配會將反斜線納入考量。因此在「( \( )」和「\( ( \)」中,外層括號會匹配。當包含時,「%」會忽略反斜線,這與 Vi 相容。cpo-n
n 當包含時,用於 'number''relativenumber' 的欄位也會用於換行文字。cpo-o
o 搜尋命令的行偏移量不會記住以供下次搜尋使用。cpo-O
O 如果檔案正在被覆寫,即使在編輯時檔案並不存在,也不要抱怨。這是為了防止其他人意外建立檔案。Vi 對此並不會抱怨。cpo-P
P 當包含時,如果目前的緩衝區尚未有檔案名稱且同時也包含 'F' 旗標 cpo-F,則會將目前的緩衝區的檔案名稱設定為附加到檔案的 ":write" 命令。cpo-q
q 當合併多行時,將游標保留在合併兩行時的位置。cpo-r
r 重複執行(「.」命令)會使用「/」來重複搜尋命令,而不是實際使用的搜尋字串。cpo-R
R 從篩選的行中移除標記。如果沒有這個旗標,則會保留標記,就像使用了 :keepmarks 一樣。cpo-s
s 當第一次進入緩衝區時設定緩衝區選項。這就像 Vim 3.0 版一樣。而且它是預設值。如果不存在,則會在建立緩衝區時設定選項。cpo-S
S 每次進入緩衝區時都設定緩衝區選項 (除了 'readonly''fileformat''filetype''syntax')。這是 (最) 與 Vi 相容的設定。選項會設定為目前緩衝區中的值。當您變更選項並移至另一個緩衝區時,該值會被複製。這會有效地將緩衝區選項全域化至所有緩衝區。
's' 'S' 複製緩衝區選項 否 否 在建立緩衝區時 是 否 在第一次進入緩衝區時 (預設) X 是 每次進入緩衝區時 (vi 相容)cpo-t
t 標籤命令的搜尋模式會被記住以供「n」命令使用。否則,Vim 只會將模式放在搜尋模式的歷史記錄中,但不會變更上次使用的搜尋模式。cpo-u
u 復原與 Vi 相容。請參閱 undo-two-wayscpo-v
v 在插入模式中,退格的字元仍會顯示在螢幕上。如果沒有這個旗標,字元會立即從螢幕上刪除。使用這個旗標,螢幕上新輸入的文字會覆寫退格的字元。cpo-W
W 不要覆寫唯讀檔案。如果省略,則 ":w!" 會盡可能覆寫唯讀檔案。cpo-x
x 在命令列上使用 <Esc> 會執行命令列。Vim 中的預設值是放棄命令列,因為 <Esc> 通常會中止命令。c_<Esc>cpo-X
X 當將計數與「R」一起使用時,被取代的文字只會刪除一次。當使用「.」和計數重複「R」時也是如此。cpo-y
y 可以使用「.」重複執行 yank 命令。如果您真的想使用此功能,請三思而後行,這可能會破壞某些外掛程式,因為大多數人期望「.」只會重複變更。cpo-Z
Z 當設定 'readonly' 選項時,使用「w!」時,請勿重設 'readonly'cpo-!
! 當重複篩選命令時,請使用上次使用的外部命令,無論它是什麼。否則,將使用上次使用的 -filter- 命令。cpo-$
$ 當對一行進行變更時,不要重新顯示該行,而是在已變更文字的結尾放置一個「$」。當您輸入新文字時,已變更的文字將會被覆寫。如果您輸入任何將游標從插入點移動的命令,則會重新顯示該行。cpo-%
% 針對「%」命令執行與 Vi 相容的匹配。無法辨識「#if」、「#endif」等。無法辨識「/*」和「*/」。單引號和雙引號內的括號也會被計算在內,導致包含括號的字串會干擾匹配。例如,在類似「if (strcmp("foo(", s))」的行中,第一個括號與最後一個括號不匹配。如果不包含這個旗標,則會特別處理單引號和雙引號內的括號。當匹配引號外的括號時,會忽略引號內的所有內容。當匹配引號內的括號時,它會找到匹配的括號 (如果有的話)。這對 C 程式非常有用。此旗標也用於其他功能,例如 C 縮排。cpo-+
+ 當包含時,":write file" 命令將會重設緩衝區的 'modified' 旗標,即使緩衝區本身可能仍然與其檔案不同。cpo->
> 當附加到暫存器時,請在附加的文字之前放置分行符號。cpo-;
; 當使用 ,; 來重複上次的 t 搜尋,且游標正好在搜尋字元的前面時,游標不會移動。如果沒有包含,游標會略過它並跳到下一個出現的位置。cpo-_
_ 當在單字上使用 cw 時,不要將單字後面的空白字元包含在移動中。
'cursorbind' 'crb' 'nocursorbind' 'nocrb' 'cursorbind' 'crb' 布林值 (預設為關閉) 本機視窗 當設定此選項時,當目前視窗中的游標移動時,其他受游標限制的視窗 (也設定此選項的視窗) 會將其游標移動到對應的行和欄位。此選項對於檢視檔案的兩個版本之間的差異非常有用 (請參閱 'diff');在 diff 模式中,會將插入和刪除的行 (但不會將行內的字元) 納入考量。
'cursorcolumn' 'cuc' 'nocursorcolumn' 'nocuc' 'cursorcolumn' 'cuc' 布林值 (預設為關閉) 本機視窗 使用 CursorColumn hl-CursorColumn 反白顯示游標的螢幕欄位。適用於對齊文字。這會使螢幕重新繪製速度變慢。如果您只想在目前的視窗中進行反白顯示,可以使用下列自動命令
au WinLeave * set nocursorline nocursorcolumn
au WinEnter * set cursorline cursorcolumn
'cursorline' 'cul' 'nocursorline' 'nocul' 'cursorline' 'cul' 布林值 (預設為關閉) 本機視窗 使用 CursorLine hl-CursorLine 反白顯示游標的文字行。適用於輕鬆找到游標。這會使螢幕重新繪製速度變慢。當視覺模式處於活動狀態時,不會使用反白顯示,以更容易查看選取的文字。
'cursorlineopt' 'culopt' 'cursorlineopt' 'culopt' 字串 (預設值為 "both") 本機視窗 以逗號分隔的設定清單,用於設定如何顯示 'cursorline'。有效值: "line" 使用 CursorLine hl-CursorLine 反白顯示游標的文字行。"screenline" 僅使用 CursorLine hl-CursorLine 反白顯示游標的螢幕行。"number" 使用 CursorLineNr hl-CursorLineNr 反白顯示游標的行號。
特殊值: "both" 值 "line,number" 的別名。
「line」和「screenline」不能一起使用。
'debug'
'debug' 字串 (預設 "") 全域 可以使用下列值: msg 即使省略,也會顯示錯誤訊息。throw 即使省略,也會顯示錯誤訊息,並擲回例外狀況並設定 v:errmsg。beep 當只會產生嗶聲時,將會顯示訊息。這些值可以組合,並以逗號分隔。"msg" 和 "throw" 適用於除錯 'foldexpr''formatexpr''indentexpr'
'define' 'def' 'define' 'def' 字串 (預設 "") 全域或本機緩衝區 global-local 用於尋找巨集定義的模式。它是一個搜尋模式,就像 "/" 命令一樣。此選項用於類似「[i」和「[d」include-search 的命令。'isident' 選項用於辨識匹配後的定義名稱
{match with 'define'}{non-ID chars}{defined name}{non-ID char}
請參閱 option-backslash 了解關於插入反斜線以包含空格或反斜線的資訊。對於 C++,此值對於包含 const 類型宣告會很有用
^\(#\s*define\|[a-z]*\s*const\s*[a-z]*\)
您也可以在名稱之前使用「\ze」,並繼續使用模式來檢查後面是什麼。例如,對於 Javascript,如果使用 func_name = function(args) 定義函式
^\s*\ze\i\+\s*=\s*function(
如果函式使用 func_name : function() {... 定義
^\s*\ze\i\+\s*[:]\s*(*function\s*(
當使用 ":set" 指令時,您需要將反斜線加倍!為了避免這種情況,請使用帶有單引號字串的 :let
let &l:define = '^\s*\ze\k\+\s*=\s*function('
'delcombine' 'deco' 'nodelcombine' 'nodeco' 'delcombine' 'deco' 布林值 (預設為關閉) 全域。如果編輯 Unicode 且此選項已設定,則退格鍵和一般模式 "x" 會單獨刪除每個組合字元。當它關閉時 (預設),會刪除字元及其組合字元。注意:'delcombine' 設定時,"xx" 的行為可能與 "2x" 不同!
這對於阿拉伯語、希伯來語和許多其他語言很有用,這些語言可能在基本字元上方有組合字元,並且只想移除組合字元。
'dictionary' 'dict' 'dictionary' 'dict' 字串 (預設為 "") 全域或本機到緩衝區 global-local。用於查找關鍵字完成命令 i_CTRL-X_CTRL-K 的單字檔案名稱清單,以逗號分隔。每個檔案都應包含單字清單。可以是每行一個單字,也可以是每行多個單字,以非關鍵字字元分隔 (最好是空白字元)。最大行長度為 510 位元組。
當此選項為空或存在 "spell" 項目,且拼寫檢查已啟用時,將使用目前活動的 'spelllang' 的單字清單中的單字。請參閱 spell
若要在檔案名稱中包含逗號,請在其前面加上反斜線。逗號後的空格會被忽略,否則空格會包含在檔案名稱中。關於使用反斜線,請參閱 option-backslash。這與 Dictionary 變數類型無關。在哪裡可以找到單字清單?
BSD/macOS 包含 "/usr/share/dict/words" 檔案。
嘗試 "apt install spell" 以在 apt 管理的系統 (Debian/Ubuntu) 上取得 "/usr/share/dict/words" 檔案。當從清單中新增或移除目錄時,建議使用 :set+=:set-=。這可以避免未來版本使用其他預設值時發生問題。基於安全性考量,無法在此選項中使用反引號。
'diff' 'nodiff' 'diff' 布林值 (預設為關閉) 本機到視窗。將目前的視窗加入顯示檔案之間差異的視窗群組。請參閱 diff-mode
'diffexpr' 'dex' 'diffexpr' 'dex' 字串 (預設為 "") 全域。從檔案的兩個版本中評估以取得差異檔案 (ed 樣式或統一樣式) 的運算式。請參閱 diff-diffexpr。基於安全性考量,無法從 modeline 或在 sandbox 中設定此選項。
'diffopt' 'dip' 'diffopt' 'dip' 字串 (預設為 "internal,filler,closeoff") 全域。差異模式的選項設定。它可以包含下列項目。所有項目都是可選的。項目必須以逗號分隔。
filler 顯示填充行,以使文字與在相同位置插入行的視窗同步。當視窗並排且設定 'scrollbind' 時,最為有用。
context:{n} 在變更與包含未變更行的摺疊之間使用 {n} 行的內容。省略時,會使用六行的內容。當使用零時,內容實際上為一,因為摺疊需要行之間,也需要已刪除的行。將其設定為非常大的值 (999999) 以完全停用摺疊。請參閱 fold-diff
iblank 忽略所有行都為空白的變更。如果 'diffexpr' 為空,則將 "-B" 旗標新增至 "diff" 指令。請查看 "diff" 指令的文件以了解其確切作用。注意:差異視窗將會不同步,因為不會考慮空白行之間的差異。
icase 忽略文字大小寫的變更。"a" 和 "A" 被視為相同。如果 'diffexpr' 為空,則將 "-i" 旗標新增至 "diff" 指令。
iwhite 忽略空白字元量的變更。如果 'diffexpr' 為空,則將 "-b" 旗標新增至 "diff" 指令。請查看 "diff" 指令的文件以了解其確切作用。它應該忽略新增尾隨空白字元,但不忽略開頭的空白字元。
iwhiteall 忽略所有空白字元變更。如果 'diffexpr' 為空,則將 "-w" 旗標新增至 "diff" 指令。請查看 "diff" 指令的文件以了解其確切作用。
iwhiteeol 忽略行尾的空白字元變更。如果 'diffexpr' 為空,則將 "-Z" 旗標新增至 "diff" 指令。請查看 "diff" 指令的文件以了解其確切作用。
horizontal 以水平分割啟動差異模式 (除非另有明確指定)。
vertical 以垂直分割啟動差異模式 (除非另有明確指定)。
closeoff 當關閉設定 'diff' 的視窗,且在具有設定 'diff' 的相同索引標籤頁面中只剩下一個視窗時,在該視窗中執行 :diffoff。這會還原 :diffsplit 指令。
hiddenoff 當緩衝區變成隱藏時,請勿對其使用差異模式。
foldcolumn:{n} 在啟動差異模式時,將 'foldcolumn' 選項設定為 {n}。若沒有此設定,則會使用 2。
followwrap 遵循 'wrap' 選項並保持原狀。
internal 使用內部的差異程式庫。當設定 'diffexpr' 時,將忽略此設定。E960 當寫入緩衝區時記憶體不足時,對於涉及該緩衝區的差異,將忽略此項目。設定 'verbose' 選項以查看何時發生這種情況。
indent-heuristic 對於內部差異程式庫,使用縮排啟發式。
linematch:{n} 在每個產生的差異區塊上啟用第二階段差異,以對齊行。當差異區塊中的總行數超過 {n} 時,將不會執行第二階段差異,因為非常大的差異區塊可能會導致明顯的延遲。建議的設定為 "linematch:60",因為這將啟用最多 30 行的區塊的 2 個緩衝區差異,或最多 20 行的區塊的 3 個緩衝區差異的對齊。
algorithm:{text} 使用內部差異引擎指定差異演算法。目前支援的演算法為:myers (預設演算法) minimal (花費額外時間產生最小的差異) patience (耐心差異演算法) histogram (直方圖差異演算法)
範例
set diffopt=internal,filler,context:4
set diffopt=
set diffopt=internal,filler,foldcolumn:3
set diffopt-=internal  " do NOT use the internal diff parser
'digraph' 'dg' 'nodigraph' 'nodg' 'digraph' 'dg' 布林值 (預設為關閉) 全域。在插入模式中啟用使用 {char1} <BS> {char2} 輸入二合字母。請參閱 digraphs
'directory' 'dir' 'directory' 'dir' 字串 (預設為 "$XDG_STATE_HOME/nvim/swap//") 全域。以逗號分隔的交換檔案目錄名稱清單。
可能的項目
交換檔案將在第一個可能的位置建立。如果任何目錄都不可能,但選項中列出的最後一個目錄不存在,則會建立它。
空表示將不使用任何交換檔案 (無法復原!),且不會顯示 E303 錯誤。
目錄 "." 表示將交換檔案放在編輯檔案的相同目錄中。在 Unix 上,會在檔案名稱前面加上點,因此它不會顯示在目錄清單中。在 MS-Windows 上,會設定「隱藏」屬性,並在可能的情況下加上點。
以 "./" 開頭的目錄 (或 MS-Windows 的 "\.") 表示將交換檔案放在相對於編輯檔案的位置。開頭的 "." 會取代為編輯檔案的路徑名稱。
對於 Unix 和 Win32,如果目錄以兩個路徑分隔符號 "//" 結尾,則交換檔案名稱將從完整路徑建立,其中所有路徑分隔符號都取代為百分比 '%' 符號 (包括 Win32 上磁碟機代號後面的冒號)。這將確保保留目錄中的檔案名稱唯一性。在 Win32 上,也可以使用 "\\" 結尾。但是,當後面跟著分隔逗號時,您必須使用 "//",因為 "\\" 會將逗號包含在檔案名稱中。因此,建議使用 "//",而不是 '\\'。
逗號後的空格會被忽略,其他空格則視為目錄名稱的一部分。若要在目錄名稱的開頭使用空格,請在其前面加上反斜線。
若要在目錄名稱中包含逗號,請在其前面加上反斜線。
目錄名稱可以 ':' 或 '/' 結尾。
環境變數會被展開,請參考 :set_env
請小心使用 '\' 字元,在空格前輸入一個,若要在選項中取得一個,則輸入兩個 (請參閱 option-backslash),例如:
set dir=c:\\tmp,\ dir\\,with\\,commas,\\\ dir\ with\ spaces
兩次編輯同一個檔案會導致警告。不建議在 "/tmp" 上使用:如果系統崩潰,您將會遺失交換檔案。而且電腦上的其他人可能可以看到這些檔案。當從清單中新增或移除目錄時,請使用 :set+=:set-=,如果 Nvim 預設值變更,這可以避免問題。
出於安全原因,無法從 modeline沙箱中設定此選項。
'display' 'dy' 'display' 'dy' 字串 (預設為 "lastline") 全域。變更文字的顯示方式。這是一個以逗號分隔的旗標清單:lastline (當包含時,會顯示視窗中盡可能多的最後一行。) "@@@" 放置在最後一個螢幕行的最後一欄中,以指示未顯示該行的其餘部分。truncate (與 "lastline" 類似,但 "@@@" 顯示在最後一個螢幕行的第一欄中。) 覆蓋 "lastline"。uhex (以十六進位格式顯示不可列印的字元,如 <xx>,而不是使用 ^C 和 ~C。) msgsep (已過時的旗標。允許但無效。) msgsep
當既未包含 "lastline" 也未包含 "truncate" 時,不適配的最後一行會取代為 "@" 行。
可以透過設定 'fillchars' 中的 "lastline" 項目來變更 "@" 字元。該字元會以 hl-NonText 反白顯示。
'eadirection' 'ead' 'eadirection' 'ead' 字串 (預設為 "both") 全域。告知 'equalalways' 選項何時適用:ver (垂直,視窗寬度不受影響) hor (水平,視窗高度不受影響) both (視窗的寬度和高度都會受到影響)
'emoji' 'emo' 'noemoji' 'noemo' 'emoji' 'emo' 布林值 (預設為開啟) 全域。當開啟時,所有 Unicode 表情符號字元都被視為全寬。這不包含通常顯示為單寬的「文字表情符號」字元。但是,如果此類「文字表情符號」後面接著 U+FE0F 變體選取器,則將被視為全寬表情符號。
不幸的是,沒有關於此的良好規範,並且是根據試誤法確定的。使用 setcellwidths() 函數來變更行為。
'encoding' 'enc' 'encoding' 'enc' 字串 (預設為 "utf-8") 全域。內部和 RPC 通訊使用的字串編碼。一律為 UTF-8。
請參閱 'fileencoding' 以控制檔案內容編碼。
'endoffile' 'eof' 'noendoffile' 'noeof' 'endoffile' 'eof' 布林值 (預設關閉) 緩衝區本地選項。指出在讀取檔案時,檔案結尾處是否找到 CTRL-Z 字元。通常只有在 'fileformat' 設定為 "dos" 時才會發生。當寫入檔案時,如果此選項關閉,且 'binary' 選項開啟,或 'fixeol' 選項關閉,則不會在檔案結尾處寫入 CTRL-Z。請參閱 eol-and-eof 以取得範例設定。
'endofline' 'eol' 'noendofline' 'noeol' 'endofline' 'eol' 布林值 (預設開啟) 緩衝區本地選項。當寫入檔案時,如果此選項關閉,且 'binary' 選項開啟,或 'fixeol' 選項關閉,則不會為檔案中的最後一行寫入 <EOL>。此選項會在開始編輯新檔案時自動設定或重設,具體取決於檔案的最後一行是否有 <EOL>。通常您無需設定或重設此選項。當 'binary' 關閉且 'fixeol' 開啟時,寫入檔案時不會使用此值。當 'binary' 開啟或 'fixeol' 關閉時,它會用於記錄檔案最後一行是否有 <EOL>,以便在寫入檔案時可以保留原始檔案的狀況。但您可以根據需要更改它。請參閱 eol-and-eof 以取得範例設定。
'equalalways' 'ea' 'noequalalways' 'noea' 'equalalways' 'ea' 布林值 (預設開啟) 全域選項。當開啟時,在分割或關閉視窗後,所有視窗都會自動調整為相同大小。此情況也會在開啟此選項時發生。當關閉時,分割視窗將會縮小目前視窗的大小,並保持其他視窗大小不變。關閉視窗時,多餘的行會給予相鄰的視窗 (取決於 'splitbelow''splitright')。當混合垂直和水平分割視窗時,會計算最小尺寸,如果有空間,某些視窗可能會更大。'eadirection' 選項指定影響尺寸的方向。可以分別透過設定 'winfixheight''winfixwidth' 來避免更改視窗的高度和寬度。如果在建立新視窗時指定了視窗大小,目前不會均分視窗大小 (情況較複雜,但未來可能會實作)。
'equalprg' 'ep' 'equalprg' 'ep' 字串 (預設為 "") 全域或緩衝區本地選項 global-local。用於 "=" 命令的外部程式。當此選項為空時,會使用內部格式化函數;'lisp''cindent''indentexpr' 其中之一。會展開環境變數 :set_env。請參閱 option-backslash 以了解如何包含空格和反斜線。由於安全考量,無法從 modelinesandbox 設定此選項。
'errorbells' 'eb' 'noerrorbells' 'noeb' 'errorbells' 'eb' 布林值 (預設關閉) 全域選項。針對錯誤訊息發出鈴聲 (嗶聲或螢幕閃爍)。這只對錯誤訊息產生影響,對於許多沒有訊息的錯誤 (例如,在一般模式下按下 <Esc>),都會一直使用鈴聲。請參閱 'visualbell' 以將鈴聲行為設定為螢幕閃爍或不執行任何動作。請參閱 'belloff' 以微調何時發出鈴聲。
'errorfile' 'ef' 'errorfile' 'ef' 字串 (預設為 "errors.err") 全域選項。用於 QuickFix 模式的錯誤檔案名稱 (請參閱 :cf)。當使用 "-q" 命令列參數時,'errorfile' 會設定為後面的參數。請參閱 -q。不適用於 ":make" 命令。請參閱 'makeef'。會展開環境變數 :set_env。請參閱 option-backslash 以了解如何包含空格和反斜線。由於安全考量,無法從 modelinesandbox 設定此選項。
'errorformat' 'efm' 'errorformat' 'efm' 字串 (預設值非常長) 全域或緩衝區本地選項 global-local。錯誤檔案中行格式的 scanf 式描述 (請參閱 errorformat)。
'eventignore' 'ei' 'eventignore' 'ei' 字串 (預設為 "") 全域選項。要忽略的自動命令事件名稱列表。當設定為 "all" 或當 "all" 是其中一個項目時,所有自動命令事件都會被忽略,不會執行自動命令。否則,這是一個逗號分隔的事件名稱列表。範例
set ei=WinEnter,WinLeave
'expandtab' 'et' 'noexpandtab' 'noet' 'expandtab' 'et' 布林值 (預設關閉) 緩衝區本地選項。在插入模式中:使用適當數量的空格來插入 <Tab>。空格會用於使用 '>' 和 '<' 命令進行縮排,以及當 'autoindent' 開啟時。若要在 'expandtab' 開啟時插入真正的 Tab 鍵,請使用 CTRL-V<Tab>。另請參閱 :retabins-expandtab
'exrc' 'ex' 'noexrc' 'noex' 'exrc' 'ex' 布林值 (預設關閉) 全域選項。如果檔案在 信任列表中,則自動執行目前目錄中的 .nvim.lua、.nvimrc 和 .exrc 檔案。使用 :trust 來管理信任的檔案。另請參閱 vim.secure.read()
比較 'exrc'editorconfig
'exrc' 可以執行任何程式碼;editorconfig 僅指定設定。
'exrc' 是 Nvim 特有的;editorconfig 適用於其他編輯器。
出於安全原因,無法從 modeline沙箱中設定此選項。
'fileencoding' 'fenc' E213 'fileencoding' 'fenc' 字串 (預設為 "") 緩衝區本地選項。目前緩衝區的檔案內容編碼。轉換會使用 iconv() 或以 'charconvert' 指定的方式進行。
'fileencoding' 不是 UTF-8 時,寫入檔案時會進行轉換。關於讀取,請參閱下方說明。當 'fileencoding' 為空時,檔案會以 UTF-8 編碼儲存 (讀取或寫入檔案時不會進行轉換)。
警告: 轉換為非 Unicode 編碼可能會導致資訊遺失!
請參閱 encoding-names 以取得可能的值。此外,還可以指定轉換器可以處理的值,請參閱 mbyte-conversion
讀取檔案時,'fileencoding' 會從 'fileencodings' 設定。若要以特定編碼讀取檔案,設定 'fileencoding' 無效,請使用 ++enc 引數。一個例外:當 'fileencodings' 為空時,會使用 'fileencoding' 的值。對於新檔案,會使用 'fileencoding' 的全域值。
在此處加上 "8bit-" 和 "2byte-" 沒有意義,它們會被忽略。當設定此選項時,會將值轉換為小寫。因此,您也可以使用大寫值來設定它。'_' 字元會被 '-' 取代。如果從 encoding-names 中的列表識別出名稱,則會以標準名稱取代。例如,"ISO8859-2" 會變成 "iso-8859-2"。
設定此選項後,在開始編輯檔案後,會設定 'modified' 選項,因為寫入時檔案將會不同。
請記住,從 modeline 變更 'fenc' 會在讀取文字後發生,因此它適用於寫入檔案時。如果您在 modeline 中設定 'fenc',您可能需要設定 'nomodified' 以避免無法使用 ":q"。
'modifiable' 關閉時,無法變更此選項。
'fileencodings' 'fencs' 'fileencodings' 'fencs' 字串 (預設為 "ucs-bom,utf-8,default,latin1") 全域選項。這是開始編輯現有檔案時考慮的字元編碼列表。讀取檔案時,Vim 會嘗試使用第一個提到的字元編碼。如果偵測到錯誤,則會嘗試列表中的下一個。當找到可用的編碼時,'fileencoding' 會設定為該編碼。如果全部失敗,'fileencoding' 會設定為空字串,這表示使用 UTF-8。警告: 轉換可能會導致資訊遺失!您可以使用 ++bad 引數來指定如何處理無法轉換的字元。對於空檔案或僅包含 ASCII 字元的檔案,大多數編碼都可以使用,並且會使用 'fileencodings' 的第一個項目 (除了 "ucs-bom",它需要 BOM 存在)。如果您偏好其他編碼,請使用 BufReadPost 自動命令事件來測試是否要使用您偏好的編碼。範例
au BufReadPost * if search('\S', 'w') == 0 |
        \ set fenc=iso-2022-jp | endif
如果檔案不包含非空白字元,則此設定會將 「fileencoding」 設定為 "iso-2022-jp"。當使用 ++enc 參數時,則不會使用 「fileencodings」 的值。請注意,「fileencodings」 不適用於新檔案,而是使用 「fileencoding」 的全域值。您可以使用以下方式進行設定:
setglobal fenc=iso-8859-2
這表示一個不存在的檔案可能會得到與空檔案不同的編碼。特殊值 "ucs-bom" 可以用來檢查檔案開頭是否有 Unicode BOM(位元組順序標記)。為了使其正常運作,它前面不能有 "utf-8" 或其他 Unicode 編碼。一個 8 位元編碼(例如 "latin1")的條目應該是最後一個,因為 Vim 無法偵測到錯誤,因此該編碼永遠會被接受。特殊值 "default" 可以用於環境的編碼。當您的環境使用非 latin1 編碼(例如俄語)時,它非常有用。當檔案包含非法的 UTF-8 位元組序列時,它不會被識別為 "utf-8"。您可以使用 8g8 指令來尋找非法的位元組序列。錯誤的值:哪裡錯了:latin1,utf-8 "latin1" 將永遠被使用 utf-8,ucs-bom,latin1 BOM 在 utf-8 檔案中不會被識別 cp1250,latin1 "cp1250" 將永遠被使用 如果 「fileencodings」 是空的,則 「fileencoding」 不會被修改。請參閱 「fileencoding」 以取得可能的值。設定此選項在下次讀取檔案之前不會生效。
「fileformat」 「ff」 「fileformat」 「ff」 字串(預設 Windows: "dos",Unix: "unix")本機緩衝區。這會給出當前緩衝區的 <EOL>,用於從/向檔案讀取/寫入緩衝區:dos <CR><NL> unix <NL> mac <CR>。當使用 "dos" 時,檔案結尾的 CTRL-Z 會被忽略。請參閱 檔案格式檔案讀取。如需檔案的字元編碼,請參閱 「fileencoding」。當設定 「binary」 時,「fileformat」 的值會被忽略,檔案 I/O 的運作方式就像設定為 "unix"。當開始編輯檔案且 「fileformats」 不為空且 「binary」 關閉時,會自動設定此選項。當設定此選項時,在開始編輯檔案後,會設定 「modified」 選項,因為寫入時檔案會有所不同。當 「modifiable」 關閉時,無法變更此選項。
「fileformats」 「ffs」 「fileformats」 「ffs」 字串(預設 Windows: "dos,unix",Unix: "unix,dos")全域。這給出了在開始編輯新緩衝區和將檔案讀入現有緩衝區時將嘗試的行尾 (<EOL>) 格式。
當為空時,將永遠使用使用 「fileformat」 定義的格式。它不會自動設定。
當設定為一個名稱時,每當開啟新緩衝區時,都將使用該格式。「fileformat」 會針對該緩衝區進行相應設定。當將檔案讀入現有緩衝區時,將使用 「fileformats」 名稱,無論該緩衝區的 「fileformat」 設定為何。
當有多個名稱以逗號分隔時,在讀取檔案時將會執行自動 <EOL> 偵測。當開始編輯檔案時,會檢查 <EOL>:1. 如果所有行都以 <CR><NL> 結尾,且 「fileformats」 包含 "dos",則 「fileformat」 會設定為 "dos"。2. 如果找到 <NL>「fileformats」 包含 "unix",則 「fileformat」 會設定為 "unix"。請注意,當找到沒有前導 <CR><NL> 時,會優先選擇 "unix" 而不是 "dos"。3. 如果 「fileformat」 尚未設定,且如果找到 <CR>,且如果 「fileformats」 包含 "mac",則 「fileformat」 會設定為 "mac"。這表示只有在以下情況下才會選擇 "mac":檔案中不存在 "unix" 或未找到 <NL>,且不存在 "dos" 或未找到 <CR><NL>。例外情況:如果選擇了 "unix",但第一個 <NL> 之前有 <CR>,且前幾行中似乎有比 <NL> 更多的 <CR>,則會使用 "mac"。4. 如果 「fileformat」 仍然未設定,則會使用 「fileformats」 中的第一個名稱。當將檔案讀入現有緩衝區時,也會執行相同的操作,但就像已針對該檔案適當設定 「fileformat」 一樣,選項不會變更。當設定 「binary」 時,不會使用 「fileformats」 的值。
當 Vim 以空緩衝區啟動時,會使用第一個項目。您可以在 .vimrc 中設定 「fileformat」 來覆寫此設定。
對於具有類似 Dos 的 <EOL><CR><NL>)的系統,當讀取 ":source" 且用於 vimrc 檔案的檔案時,可能會執行自動 <EOL> 偵測。
「fileformats」 為空時,不會進行自動偵測。將會使用 Dos 格式。
「fileformats」 設定為一個或多個名稱時,會執行自動偵測。這是基於檔案中的第一個 <NL>:如果前面有 <CR>,則使用 Dos 格式,否則使用 Unix 格式。另請參閱 檔案格式
「fileignorecase」 「fic」 「nofileignorecase」 「nofic」 「fileignorecase」 「fic」 布林值(預設對於檔案名稱通常會忽略大小寫的系統開啟)全域。當設定時,在使用檔案名稱和目錄時會忽略大小寫。請參閱 「wildignorecase」 以僅在執行完成時忽略大小寫。
「filetype」 「ft」 「filetype」 「ft」 字串(預設 "")本機緩衝區 local-noglobal。設定此選項後,會觸發 FileType 自動指令事件。所有與此選項的值相符的自動指令都將會被執行。因此,「filetype」 的值將會取代檔案名稱。否則,此選項並不總是反映當前的檔案類型。此選項通常會在偵測到檔案類型時設定。若要啟用此功能,請使用 ":filetype on" 指令。":filetype"。將此選項設定為不同的值在 modeline 中最有用,適用於未自動識別檔案類型的檔案。範例,適用於 IDL 檔案
/* vim: set filetype=idl : */
FileType 檔案類型。當值中出現點時,會分隔兩個檔案類型名稱,因此不應用於檔案類型。範例
/* vim: set filetype=c.doxygen : */
這將先使用 "c" 檔案類型,然後使用 "doxygen" 檔案類型。這適用於檔案類型外掛程式和語法檔案。可能會出現一個以上的點。此選項不會複製到另一個緩衝區,與 「cpoptions」 中的 's' 或 'S' 旗標無關。只能使用字母數字字元、'-' 和 '_'。
「fillchars」 「fcs」 「fillchars」 「fcs」 字串(預設 "")全域或本機視窗 global-local。用來填滿狀態列、垂直分隔符號和視窗中特殊行的字元。它是以逗號分隔的項目列表。每個項目都有一個名稱、一個冒號和該項目的值:E1511
項目 預設值 用於
stl ' ' 當前視窗的狀態列 stlnc ' ' 非當前視窗的狀態列 wbr ' ' 視窗列 horiz '─' 或 '-' 水平分隔符號 ":split" horizup '┴' 或 '-' 向上水平分隔符號 horizdown '┬' 或 '-' 向下水平分隔符號 vert '│' 或 '|' 垂直分隔符號 ":vsplit" vertleft '┤' 或 '|' 向左垂直分隔符號 vertright '├' 或 '|' 向右垂直分隔符號 verthoriz '┼' 或 '+' 重疊的垂直和水平分隔符號 fold '·' 或 '-' 填滿 「foldtext」 foldopen '-' 標記摺疊的開始 foldclose '+' 顯示關閉的摺疊 foldsep '│' 或 '|' 開啟摺疊中間標記 diff '-' 「diff」 選項中已刪除的行 msgsep ' ' 訊息分隔符號 「display」 eob '~' 緩衝區結尾的空行 lastline '@' 「display」 包含 lastline/truncate
任何省略的項目都將回復為預設值。
請注意,只有當 「laststatus」 為 3 時才會使用 "horiz"、"horizup"、"horizdown"、"vertleft"、"vertright" 和 "verthoriz",因為否則只會使用垂直視窗分隔符號。
如果 「ambiwidth」 為 "double",則 "horiz"、"horizup"、"horizdown"、"vert"、"vertleft"、"vertright"、"verthoriz"、"foldsep" 和 "fold" 將預設為單一位元組替代項。
範例
set fillchars=stl:\ ,stlnc:\ ,vert:│,fold:·,diff:-
對於 "stl"、"stlnc"、"foldopen"、"foldclose" 和 "foldsep" 項目,支援單一位元組和多位元組字元。但是不支援雙寬字元。E1512
用於這些項目的醒目提示
項目 醒目提示群組
stl 狀態列 hl-StatusLine stlnc 非使用中的狀態列 hl-StatusLineNC wbr 視窗分隔欄 hl-WinBarhl-WinBarNC horiz 視窗分隔符號 hl-WinSeparator horizup 視窗分隔符號 hl-WinSeparator horizdown 視窗分隔符號 hl-WinSeparator vert 視窗分隔符號 hl-WinSeparator vertleft 視窗分隔符號 hl-WinSeparator vertright 視窗分隔符號 hl-WinSeparator verthoriz 視窗分隔符號 hl-WinSeparator fold 已摺疊 hl-Folded diff 差異刪除 hl-DiffDelete eob 緩衝區結束 hl-EndOfBuffer lastline 非文字 hl-NonText
'findfunc' 'ffu' E1514 'findfunc' 'ffu' 字串 (預設 "") 全域或緩衝區局部 global-local 用於取得 :find 命令的檔案名稱的函式。當此選項為空時,將使用內部的 檔案搜尋機制。
該值可以是函式的名稱、一個 lambda 或一個 函式參照 (Funcref)。更多資訊請參閱 option-value-function
該函式會被呼叫並帶有兩個參數。第一個參數是一個 字串,它是 :find 命令的參數。第二個參數是一個 布林值,當該函式被呼叫以取得 :find 命令的命令列補全匹配的列表時,該值會被設定為 v:true。該函式應回傳一個字串列表。
該函式每個 :find 命令的呼叫只會被呼叫一次。該函式可以處理 'path' 中指定的所有目錄。
如果找到匹配項,該函式應回傳一個包含一個或多個檔案名稱的 列表。如果未找到匹配項,該函式應回傳一個空列表。
如果在函式呼叫期間發生任何錯誤,將會使用一個空列表作為回傳值。
在執行 'findfunc' 文字鎖定時,不允許更改文字或跳到另一個視窗。
出於安全原因,無法從 modeline沙箱中設定此選項。
範例
" Use glob()
func FindFuncGlob(cmdarg, cmdcomplete)
    let pat = a:cmdcomplete ? $'{a:cmdarg}*' : a:cmdarg
    return glob(pat, v:false, v:true)
endfunc
set findfunc=FindFuncGlob
" Use the 'git ls-files' output
func FindGitFiles(cmdarg, cmdcomplete)
    let fnames = systemlist('git ls-files')
    return fnames->filter('v:val =~? a:cmdarg')
endfunc
set findfunc=FindGitFiles
'fixendofline' 'fixeol' 'nofixendofline' 'nofixeol' 'fixendofline' 'fixeol' 布林值 (預設為開啟) 緩衝區局部 當寫入檔案且此選項開啟時,如果檔案結尾缺少 `<EOL>`,將會還原它。如果您想要保留原始檔案的情況,請關閉此選項。當設定 'binary' 選項時,此選項的值無關緊要。請參閱 'endofline' 選項。請參閱 eol-and-eof 以取得範例設定。
'foldclose' 'fcl' 'foldclose' 'fcl' 字串 (預設 "") 全域 當設定為 "all" 時,當游標不在摺疊中,且其層級高於 'foldlevel' 時,該摺疊將會關閉。如果您想要在移出摺疊時自動關閉摺疊,這會很有用。
'foldcolumn' 'fdc' 'foldcolumn' 'fdc' 字串 (預設 "0") 視窗局部 何時以及如何繪製摺疊欄。有效值為:"auto": 調整大小為顯示摺疊所需的最小數量。"auto:[1-9]": 調整大小以容納多個摺疊,最多到選定的層級。"0": 停用摺疊欄"[1-9]": 顯示固定數量的欄。請參閱 摺疊
'foldenable' 'fen' 'nofoldenable' 'nofen' 'foldenable' 'fen' 布林值 (預設為開啟) 視窗局部 當關閉時,所有摺疊都會開啟。此選項可用於快速切換顯示所有未摺疊文字和檢視帶有摺疊的文字 (包括手動開啟或關閉的摺疊)。可以使用 zi 命令來切換此選項。'foldenable' 關閉時,'foldcolumn' 將會保持空白。此選項由建立新摺疊或關閉摺疊的命令設定。請參閱 摺疊
'foldexpr' 'fde' 'foldexpr' 'fde' 字串 (預設 "0") 視窗局部 當 'foldmethod' 為 "expr" 時所使用的運算式。它會針對每一行進行評估,以取得其摺疊層級。上下文會設定為設定 'foldexpr' 的指令碼,可以存取指令碼局部的項目。請參閱 fold-expr 以取得使用方法。
如果從 modeline 設定,則運算式將會在 沙箱中進行評估,請參閱 sandbox-option。當 'diff' 選項開啟或 'modelineexpr' 選項關閉時,無法從 modeline 設定此選項。
在評估 'foldexpr' 文字鎖定時,不允許更改文字或跳到另一個視窗。
'foldignore' 'fdi' 'foldignore' 'fdi' 字串 (預設 "#") 視窗局部 僅當 'foldmethod' 為 "indent" 時使用。以 'foldignore' 中的字元開頭的行會從周圍的行取得其摺疊層級。在檢查此字元之前會跳過空白字元。預設值 "#" 適用於 C 程式。請參閱 fold-indent
'foldlevel' 'fdl' 'foldlevel' 'fdl' 數字 (預設 0) 視窗局部 設定摺疊層級:具有較高層級的摺疊將會關閉。將此選項設定為零將會關閉所有摺疊。較高的數字將會關閉較少的摺疊。此選項由 zmzMzR 等命令設定。請參閱 fold-foldlevel
'foldlevelstart' 'fdls' 'foldlevelstart' 'fdls' 數字 (預設 -1) 全域 當開始在視窗中編輯另一個緩衝區時,設定 'foldlevel'。適用於總是從所有摺疊關閉 (值為零)、一些摺疊關閉 (一) 或沒有摺疊關閉 (99) 開始編輯。這是在讀取任何 modeline 之前完成的,因此 modeline 中的設定會覆蓋此選項。開始編輯 diff-mode 的檔案也會忽略此選項並關閉所有摺疊。它也會在 BufReadPre 自動命令之前完成,以允許自動命令覆蓋特定檔案的 'foldlevel' 值。當該值為負數時,不會使用它。
'foldmarker' 'fmr' E536 'foldmarker' 'fmr' 字串 (預設 "{{{,}}}") 視窗局部 當 'foldmethod' 為 "marker" 時所使用的開始和結束標記。必須有一個逗號,用於分隔開始和結束標記。該標記是一個文字字串 (正規表示式會太慢)。請參閱 fold-marker
'foldmethod' 'fdm' 'foldmethod' 'fdm' 字串 (預設 "manual") 視窗局部 用於目前視窗的摺疊種類。可能的值:fold-manual manual 手動建立摺疊。fold-indent indent 具有相同縮排的行形成一個摺疊。fold-expr expr 'foldexpr' 給定一行的摺疊層級。fold-marker marker 使用標記來指定摺疊。fold-syntax syntax 語法反白項目指定摺疊。fold-diff diff 摺疊未變更的文字。
'foldminlines' 'fml' 'foldminlines' 'fml' 數字 (預設 1) 視窗局部 設定螢幕行數,超過該行數時,可以關閉顯示摺疊。也適用於手動關閉的摺疊。使用預設值 1 時,只有當摺疊佔用兩個或更多螢幕行時才能關閉。設定為零則可以關閉僅佔用一個螢幕行的摺疊。請注意,這只會影響顯示的內容。在使用 "zc" 關閉一個摺疊後 (因為它小於 'foldminlines' 而顯示為開啟),接下來的 "zc" 可能會關閉一個包含的摺疊。
'foldnestmax' 'fdn' 'foldnestmax' 'fdn' 數字 (預設 20) 視窗局部 設定 "indent" 和 "syntax" 方法的摺疊最大巢狀層級。這可以避免建立過多的摺疊。使用超過 20 沒有作用,因為內部限制為 20。
'foldopen' 'fdo' 'foldopen' 'fdo' 字串 (預設 "block,hor,mark,percent,quickfix,search,tag,undo") 全域 指定在哪些類型的命令中,如果命令將游標移動到關閉的摺疊中,則會開啟摺疊。它是一個以逗號分隔的項目列表。注意:當命令是對應的一部分時,不會使用此選項。將 zv 命令新增至對應,以獲得相同的效果。(理由:對應可能想要自行控制開啟摺疊)
項目 命令
all 任何區塊 (, {, [[, [{, 等 hor 水平移動:"l"、"w"、"fx" 等 insert 插入模式中的任何命令 jump 遠距離跳躍:"G"、"gg" 等 mark 跳到標記:"'m"、CTRL-O 等 percent "%" quickfix ":cn"、":crew"、":make" 等 search 搜尋模式:"/"、"n"、"*"、"gd" 等 (不適用於 ":" 命令中的搜尋模式) 也適用於 [s]s。tag 跳到標籤:":ta"、CTRL-T 等 undo 復原或重做:"u" 和 CTRL-R 當移動命令用於運算子 (例如 "dl" 或 "y%") 時,不會使用此選項。這表示運算子將會包含整個關閉的摺疊。請注意,這裡沒有垂直移動,因為這會讓移動到關閉的摺疊變得非常困難。在插入模式中,當插入文字時,包含游標的摺疊將會始終開啟。若要關閉摺疊,您可以使用 zx 命令重新套用 'foldlevel',或將 'foldclose' 選項設定為 "all"。
'foldtext' 'fdt' 'foldtext' 'fdt' 字串 (預設值為 "foldtext()"),視窗本地變數。此為一個表達式,用於指定關閉摺疊時顯示的文字。上下文設定為 'foldexpr' 設定的腳本,可以存取腳本本地項目。請參閱 fold-foldtext 以了解使用方式。
如果從模式行設定,表達式將在 沙箱中求值,請參閱 sandbox-option。當 'modelineexpr' 關閉時,此選項無法在模式行中設定。
在評估 'foldtext' 時,不允許變更文字或跳到另一個視窗 textlock
當設定為空字串時,會停用 foldtext,並且該行會正常顯示,帶有高亮且不會換行。
'formatexpr' 'fex' 'formatexpr' 'fex' 字串 (預設值為 ""),緩衝區本地變數。此為一個表達式,用於評估格式化 gq 運算子或自動格式化 (請參閱 'formatoptions') 的行範圍。當此選項為空時,會使用 'formatprg'
v:lnum 變數會保留要格式化的第一行。 v:count 變數會保留要格式化的行數。如果此表達式因自動格式化而求值,v:char 變數會保留要插入的字元。這可以為空。請先不要插入!
範例
set formatexpr=mylang#Format()
這會調用 'runtimepath' 中 autoload/mylang.vim 檔案中的 mylang#Format() 函式。autoload
使用不帶參數的函式呼叫的優點是它速度更快,請參閱 expr-option-function
當設定 'textwidth' 且加入的文字超出該限制時,也會評估此表達式。此情況與使用內部格式化時的條件相同。請確保游標相對於文字保持在相同的位置!在這種情況下,mode() 函式會傳回 "i" 或 "R"。
當表達式評估為非零值時,Vim 會退回使用內部格式機制。
如果表達式以 s: 或 <SID> 開頭,則會以腳本 ID 取代 ( local-function)。範例:
set formatexpr=s:MyFormatExpr()
set formatexpr=<SID>SomeFormatExpr()
否則,表達式會在設定該選項的腳本的上下文中評估,因此可以使用腳本本地項目。
當從模式行設定時,表達式將在 沙箱中評估,請參閱 sandbox-option。這會阻止選項運作,因為不允許變更緩衝區文字。當 'modelineexpr' 關閉時,此選項無法在模式行中設定。注意:當設定 'compatible' 時,此選項會設定為 ""。
'formatlistpat' 'flp' 'formatlistpat' 'flp' 字串 (預設值為 "^\s*\d\+[\]:.)}\t ]\s*"),緩衝區本地變數。此為用於識別清單標頭的模式。這用於 'formatoptions' 中的 "n" 標誌。此模式必須完全符合下面行的縮排文字。您可以使用 /\ze 來標記符合項目的結尾,同時檢查更多字元。當符合整行時,必須在模式後方加上字元,否則會如同未符合項目般處理。預設值會識別數字,後接可選的標點符號和空白字元。
'formatoptions' 'fo' 'formatoptions' 'fo' 字串 (預設值為 "tcqj"),緩衝區本地變數。這是一串字母,描述如何進行自動格式化。請參閱 fo-table 以了解可能的值,並參閱 gq 以了解如何格式化文字。可以插入逗號以提高可讀性。為避免未來加入的標誌出現問題,請使用 ":set" 的 "+=" 和 "-=" 功能 add-option-flags
'formatprg' 'fp' 'formatprg' 'fp' 字串 (預設值為 ""),全域或緩衝區本地變數 global-local。此為外部程式的名稱,將用於格式化使用 gq 運算子選取的行。程式必須從 stdin 接收輸入,並在 stdout 上產生輸出。Unix 程式 "fmt" 就是這樣的程式。如果 'formatexpr' 選項不為空,則會改用此選項。否則,如果 'formatprg' 選項為空字串,則會使用內部格式化函式 C-indenting。會展開環境變數 :set_env。請參閱 option-backslash 以了解如何加入空格和反斜線。基於安全考量,此選項無法從 模式行沙箱中設定。
'fsync' 'fs' 'nofsync' 'nofs' 'fsync' 'fs' 布林值 (預設值為開啟),全域。開啟時,在儲存檔案 (:writewritefile()、…)、交換檔案復原持續性shada 檔案後,將會呼叫 OS 函式 fsync()。這會將檔案刷新到磁碟,確保安全寫入。在某些系統上速度較慢:寫入緩衝區、退出 Nvim 和其他操作有時可能需要幾秒鐘。
當發生以下情況時,檔案「總是」會被刷新 ('fsync' 會被忽略):
觸發 CursorHold 事件
呼叫 :preserve
系統訊號指示電池電量不足
Nvim 異常退出
出於安全原因,無法從 modeline沙箱中設定此選項。
'gdefault' 'gd' 'nogdefault' 'nogd' 'gdefault' 'gd' 布林值 (預設值為關閉),全域。開啟時,":substitute" 標誌 'g' 預設為開啟。這表示會替換一行中的所有符合項目,而不是一個。當對 ":substitute" 命令提供 'g' 標誌時,這會切換替換所有或一個符合項目。請參閱 complex-change
命令 'gdefault' 開啟 'gdefault' 關閉
:s/// 替換全部 替換一個 :s///g 替換一個 替換全部 :s///gg 替換全部 替換一個
注意:設定此選項可能會破壞依賴 'g' 標誌預設行為的外掛程式。這也會使 'g' 標誌具有與 :s_g 中所記錄的相反效果。
'grepformat' 'gfm' 'grepformat' 'gfm' 字串 (預設值為 "%f:%l:%m,%f:%l%m,%f %l%m"),全域。用於識別 ":grep" 命令輸出的格式。這是一個類似 scanf 的字串,使用與 'errorformat' 選項相同的格式:請參閱 errorformat
如果 ripgrep ('grepprg') 可用,則此選項預設為 %f:%l:%c:%m
'grepprg' 'gp' 'grepprg' 'gp' 字串 (預設值請參閱下方),全域或緩衝區本地變數 global-local。用於 :grep 命令的程式。此選項可能包含 '%' 和 '#' 字元,其展開方式與在命令列中使用時相同。允許使用佔位符 "$*" 來指定將包含引數的位置。會展開環境變數 :set_env。請參閱 option-backslash 以了解如何加入空格和反斜線。特殊值:當 'grepprg' 設定為 "internal" 時,:grep 命令的運作方式與 :vimgrep 相同,:lgrep 的運作方式與 :lvimgrep 相同,:grepadd 的運作方式與 :vimgrepadd 相同,而 :lgrepadd 的運作方式與 :lvimgrepadd 相同。另請參閱 :make_makeprg 一節,因為其中的大部分註解都同樣適用於 'grepprg'。基於安全考量,此選項無法從 模式行沙箱中設定。此選項預設為:
如果 ripgrep 可用 (:checkhealth),則為 rg --vimgrep -uu
在 Unix 上為 grep -HIn $* /dev/null
在 Windows 上為 findstr /n $* nul。Ripgrep 可以執行額外的篩選,例如使用 .gitignore 規則和跳過隱藏檔案。預設會停用此功能 (請參閱 -u 選項),以更符合標準 grep 的行為。您可以使用 -i/--ignore-case 和 -S/--smart-case 選項,使 ripgrep 符合 Vim 的大小寫處理。可以使用 OptionSet 自動命令將其設定為自動比對。
'guicursor' 'gcr' E545 E546 E548 E549 'guicursor' 'gcr' 字串 (預設值為 "n-v-c-sm:block,i-ci-ve:ver25,r-cr-o:hor20"),全域。設定每種模式的游標樣式。適用於 GUI 和許多終端機。請參閱 tui-cursor-shape
若要停用游標樣式,請重設選項
set guicursor=
若要啟用模式形狀、「游標」高亮和閃爍
set guicursor=n-v-c:block,i-ci-ve:ver25,r-cr:hor20,o:hor50
  \,a:blinkwait700-blinkoff400-blinkon250-Cursor/lCursor
  \,sm:block-blinkwait175-blinkoff150-blinkon175
此選項是以逗號分隔的各部分列表。每個部分包含一個模式列表和一個參數列表:模式列表:參數列表,模式列表:參數列表,...。模式列表是以破折號分隔的這些模式列表:n 一般模式 v 可視模式 ve 可視模式,具有 'selection' "exclusive"(如果未指定,則與 'v' 相同) o 運算符等待模式 i 插入模式 r 取代模式 c 命令列一般(附加)模式 ci 命令列插入模式 cr 命令列取代模式 sm 插入模式中的 showmatch a 所有模式。參數列表是以破折號分隔的這些參數列表:hor{N} 水平線,{N} 為字符高度的百分比 ver{N} 垂直線,{N} 為字符寬度的百分比 block 塊狀游標,填充整個字符
以上三者只能出現一個。
每個模式的預設值為「block」。 blinkwait{N} 游標閃爍
blinkon{N} blinkoff{N} 游標閃爍次數:blinkwait 是游標開始閃爍之前的延遲時間,blinkon 是游標顯示的時間,blinkoff 是游標不顯示的時間。時間單位為毫秒。當其中一個數字為零時,則不閃爍。例如:
set guicursor=n:blinkon0
每個模式的預設值為「blinkon0」。 {group-name} 決定游標顏色和字型的突出顯示群組。在 TUI
inverse/reverse 和沒有 group-name 會被解釋為「主機終端機預設游標顏色」,通常表示「反轉背景和前景顏色」。
ctermfgguifg 會被忽略。 {group-name}/{group-name} 兩個突出顯示群組名稱,第一個用於未使用語言映射時,另一個用於使用語言映射時。語言映射
部分的範例:n-c-v:block-nCursor 在一般模式、命令列模式和可視模式下,使用來自「nCursor」突出顯示群組的顏色之塊狀游標。n-v-c-sm:block,i-ci-ve:ver25-Cursor,r-cr-o:hor20 在一般等模式下,使用主機終端機定義的預設顏色的塊狀游標。在類似插入模式下,使用來自「Cursor」突出顯示群組的顏色的垂直線游標。在類似取代模式下,使用預設顏色的下劃線游標。i-ci:ver30-iCursor-blinkwait300-blinkon200-blinkoff150 在插入和命令列插入模式下,使用來自「iCursor」突出顯示群組的顏色的 30% 垂直線游標。閃爍速度稍快。
「a」模式不同。它將為所有模式設定給定的參數列表。它不會將任何內容重設為預設值。這可以用於對所有模式執行通用設定。例如,關閉閃爍:「a:blinkon0」
游標突出顯示的範例
highlight Cursor gui=reverse guifg=NONE guibg=NONE
highlight Cursor gui=NONE guifg=bg guibg=fg
'guifont' 'gfn' E235 E596 'guifont' 'gfn' 字串(預設值為 "")全域。這是將用於 Vim GUI 版本的字型列表。最簡單的形式是值只是一個字型名稱。當找不到字型時,您將收到錯誤訊息。要嘗試其他字型名稱,可以指定一個列表,字型名稱以逗號分隔。會使用第一個有效的字型。
逗號後的空格會被忽略。要在字型名稱中包含逗號,請在其前面加上反斜線。設定選項需要在空格和反斜線之前加上額外的反斜線。另請參閱 option-backslash。例如
set guifont=Screen15,\ 7x13,font\\,with\\,commas
這將使 Vim 嘗試先使用「Screen15」字型,如果失敗,則會嘗試使用「7x13」,然後嘗試使用「font,with,commas」。
如果無法載入任何字型,Vim 將保留目前的設定。如果給定一個空的字型列表,Vim 將嘗試使用其他資源設定(對於 X,它將使用 Vim.font 資源),最後它會嘗試一些應該始終存在的內建預設值(在 X 的情況下為「7x13」)。給定的字型名稱應該是「一般」字型。Vim 將嘗試找到相關的粗體和斜體字型。
適用於 Win32 和 Mac OS
set guifont=*
會開啟一個字型選擇器,您可以在其中選擇您想要的字型。
字型名稱取決於所使用的 GUI。
對於 Mac OSX,您可以使用類似以下內容
set guifont=Monaco:h10
E236
請注意,字型必須是等寬字型(所有字元的寬度都相同)。
要在 X11 上預覽字型,您可以使用「xfontsel」程式。「xlsfonts」程式會列出所有可用的字型。
對於 Win32 GUI E244 E245
字型名稱中會使用這些選項:hXX - 高度為 XX(點,可以是浮點數) wXX - 寬度為 XX(點,可以是浮點數) b - 粗體 i - 斜體 u - 下劃線 s - 刪除線 cXX - 字元集 XX。有效的字元集為:ANSI、ARABIC、BALTIC、CHINESEBIG5、DEFAULT、EASTEUROPE、GB2312、GREEK、HANGEUL、HEBREW、JOHAB、MAC、OEM、RUSSIAN、SHIFTJIS、SYMBOL、THAI、TURKISH、VIETNAMESE ANSI 和 BALTIC。通常您會使用「cDEFAULT」。
使用「:」分隔選項。
可以使用「_」代替空格,因此您不需要使用反斜線來逸脫空格。
範例
set guifont=courier_new:h12:w5:b:cRUSSIAN
set guifont=Andale_Mono:h7.5:w4.5
'guifontwide' 'gfw' E231 E533 E534 'guifontwide' 'gfw' 字串(預設值為 "")全域。用於雙寬字元的字型的逗號分隔列表。會使用第一個可以載入的字型。注意:這些字型的大小必須與 'guifont' 指定的字型寬度完全相同,且高度相同。
'guifont' 具有有效的字型且 'guifontwide' 為空時,Vim 會嘗試將 'guifontwide' 設定為相符的雙寬字型。
'helpfile' 'hf' 'helpfile' 'hf' 字串(預設值為 (MS-Windows) "$VIMRUNTIME\doc\help.txt" (其他) "$VIMRUNTIME/doc/help.txt")全域。主要說明檔案的名稱。所有分散的說明檔案都應放置在一個目錄中。此外,也會使用 'runtimepath' 中的所有「doc」目錄。環境變數會被展開 :set_env。例如:「$VIMRUNTIME/doc/help.txt」。如果未設定 $VIMRUNTIME,也會嘗試 $VIM。另請參閱 $VIMRUNTIMEoption-backslash,了解如何包含空格和反斜線。由於安全原因,無法從 modelinesandbox 設定此選項。
'helpheight' 'hh' 'helpheight' 'hh' 數字(預設值為 20)全域。使用「:help」命令開啟說明視窗時的最小初始高度。說明視窗的初始高度是目前視窗的一半,或者(當 'ea' 選項開啟時)與其他視窗相同。當高度小於 'helpheight' 時,高度會設定為 'helpheight'。設定為零可停用。
'helplang' 'hlg' 'helplang' 'hlg' 字串(預設值為訊息語言或空白)全域。以逗號分隔的語言列表。Vim 將使用可以找到所需說明的首種語言。英文說明將始終作為最後的手段使用。您可以加入「en」以偏好英文而不是其他語言,但這只會找到該語言中存在而不是英文說明中存在的標籤。範例
set helplang=de,it
這會先搜尋德文、然後是義大利文,最後是英文說明檔案。當在非英文說明檔案中使用 CTRL-] 和「:help!」時,Vim 會先嘗試在目前語言中找到標籤,然後再使用此選項。請參閱 help-translated
'hidden' 'hid' 'nohidden' 'nohid' 'hidden' 'hid' 布林值(預設值為開啟)全域。當關閉時,緩衝區在被 放棄 時會被卸載(包括遺失復原資訊)。當開啟時,緩衝區在被 放棄 時會變成隱藏。當然,在另一個視窗中顯示的緩衝區不會變成隱藏。
當這三種情況皆為真時,即使 'hidden' 選項關閉,也會有在緩衝區列表中移動的命令隱藏緩衝區
緩衝區已修改
'autowrite' 關閉或無法寫入
使用了「!」旗標。另請參閱 windows
要隱藏特定的緩衝區,請使用 'bufhidden' 選項。使用「:hide {command}:hide 為一個命令設定 'hidden'
'history' 'hi' 'history' 'hi' 數字(預設值為 10000)全域。會記住「:」命令的歷史記錄,以及先前的搜尋模式歷史記錄。此選項決定可以在這些歷史記錄中儲存多少項目(請參閱 cmdline-editing)。最大值為 10000。
'hlsearch' 'hls' 'nohlsearch' 'nohls' 'hlsearch' 'hls' 布林值(預設值為開啟)全域。當有先前的搜尋模式時,會突出顯示其所有相符項目。hl-Search 突出顯示群組決定了游標下方的所有相符項目的突出顯示,而 hl-CurSearch 突出顯示群組(如果已定義)則決定了游標下方相符項目的突出顯示。如果未定義 hl-CurSearch,則 hl-Search 會用於兩者。請注意,只會突出顯示相符的文字,不會套用任何偏移。另請參閱:'incsearch':match。當您厭倦看突出顯示的相符項目時,您可以使用 :nohlsearch 關閉它。這不會變更選項值,當您使用搜尋命令時,突出顯示會返回。'redrawtime' 指定尋找相符項目的最長時間。當搜尋模式可以比對行尾時,Vim 會嘗試突出顯示所有相符的文字。但是,這取決於搜尋的起點。這將是視窗中的第一行或封閉折疊下的第一行。上一行中未繪製的相符項可能不會在新繪製的行中繼續。您可以使用 'shada' shada-h 中的「h」旗標指定是否在啟動時還原突出顯示狀態。
'icon' 'noicon' 'icon' 布林值(預設值為關閉,當可以還原標題時為開啟)全域。當開啟時,視窗的圖示文字將設定為 'iconstring' 的值(如果不是空白),或設定為目前正在編輯的檔案名稱。只會使用名稱的最後一部分。會被 'iconstring' 選項覆寫。僅當終端機支援設定視窗圖示時才有效。
'iconstring'
'iconstring' 字串 (預設值為 "") 全域 當此選項不為空時,它將用於視窗的圖示文字。這僅在 'icon' 選項開啟時發生。僅當終端機支援設定視窗圖示文字時才有效。當此選項包含 printf 樣式的 '%' 項目時,它們將根據用於 'statusline' 的規則展開。有關範例設定,請參閱 'titlestring'。當 'modelineexpr' 關閉時,無法在 modeline 中設定此選項。
'ignorecase' 'ic' 'noignorecase' 'noic' 'ignorecase' 'ic' 布林值 (預設為關閉) 全域 在搜尋模式、命令列補全、在標籤檔案中搜尋以及 expr-== 時忽略大小寫。另請參閱 'smartcase''tagcase'。可以在模式中使用 "\c" 或 "\C" 來覆蓋此選項,請參閱 /ignorecase
'iminsert' 'imi' 'iminsert' 'imi' 數字 (預設值為 0) 緩衝區本地 設定在插入模式中是否使用 :lmap 或輸入法 (IM)。有效值:0:lmap 關閉,IM 關閉 1:lmap 開啟,IM 關閉 2:lmap 關閉,IM 開啟 若要在使用 <Esc> 離開插入模式時始終將選項重設為零,可以使用此選項
inoremap <ESC> <ESC>:set iminsert=0<CR>
這會使 :lmap 和 IM 在離開插入模式時自動關閉。請注意,此選項在使用插入模式中的 CTRL-^ i_CTRL-^ 時會變更。當將 'keymap' 設定為有效的鍵盤對應名稱時,該值會設定為 1。它也用於 "r" 和 "f" 等指令的參數。
'imsearch' 'ims' 'imsearch' 'ims' 數字 (預設值為 -1) 緩衝區本地 設定在輸入搜尋模式時是否使用 :lmap 或輸入法 (IM)。有效值:-1:使用 'iminsert' 的值,使其看起來像是在輸入搜尋模式時也使用 'iminsert' 0:lmap 關閉,IM 關閉 1:lmap 開啟,IM 關閉 2:lmap 關閉,IM 開啟 請注意,此選項在使用命令列模式中的 CTRL-^ c_CTRL-^ 時會變更。當此值不為 -1 且將 'keymap' 選項設定為有效的鍵盤對應名稱時,該值會設定為 1。
'inccommand' 'icm' 'inccommand' 'icm' 字串 (預設值為 "nosplit") 全域 當此選項不為空時,會在您輸入時顯示 :substitute:smagic:snomagic 和帶有 :command-preview 標記的使用者指令的效果。
可能的值:nosplit:在緩衝區中逐步顯示指令的效果。split:與 "nosplit" 類似,但也會在預覽視窗中顯示部分螢幕外結果。
如果內建指令的預覽速度太慢 (超過 'redrawtime'),則會自動停用 'inccommand',直到 命令列模式 完成為止。
'include' 'inc' 'include' 'inc' 字串 (預設值為 "") 全域或緩衝區本地 global-local 用於尋找 include 指令的模式。它是一個搜尋模式,就像 "/" 指令一樣 (請參閱 模式)。此選項用於指令 "[i"、"]I"、"[d" 等。通常,會使用 'isfname' 選項來識別符合模式後的檔案名稱。但是,如果模式中出現 "\zs",則會使用從 "\zs" 到結尾或直到出現 "\ze" 為止的文字作為檔案名稱。使用此選項來包含不在 'isfname' 中的字元,例如空格。然後,您可以使用 'includeexpr' 來處理相符的文字。請參閱 option-backslash 以了解如何包含空格和反斜線。
'includeexpr' 'inex' 'includeexpr' 'inex' 字串 (預設值為 "") 緩衝區本地 用於將使用 'include' 選項找到的字串轉換為檔案名稱的運算式。主要用於將 Java 的 "." 變更為 "/"
setlocal includeexpr=substitute(v:fname,'\\.','/','g')
變數 "v:fname" 將設定為偵測到的檔案名稱。請注意雙反斜線::set 指令會先將它們減半,然後在值中保留一個,其中 "\." 會逐字元匹配一個點。對於簡單的字元替換,tr() 可避免需要逸出
setlocal includeexpr=tr(v:fname,'.','/')
如果找不到未修改的檔案名稱,也會用於 gf 指令。允許在 'include' 陳述式之後對名稱執行 "gf"。也用於 <cfile>
如果表達式以 s: 或 <SID> 開頭,則會以腳本 ID 取代 ( local-function)。範例:
setlocal includeexpr=s:MyIncludeExpr()
setlocal includeexpr=<SID>SomeIncludeExpr()
否則,表達式會在設定該選項的腳本的上下文中評估,因此可以使用腳本本地項目。
如果值只是沒有引數的函式呼叫,則效率會更高,請參閱 expr-option-function
當從 modeline 設定時,會在 沙箱中評估運算式,請參閱 sandbox-option。當 'modelineexpr' 關閉時,無法在 modeline 中設定此選項。
在評估 'includeexpr' textlock 時,不允許變更文字或跳到另一個視窗。
'incsearch' 'is' 'noincsearch' 'nois' 'incsearch' 'is' 布林值 (預設為開啟) 全域 在輸入搜尋指令時,顯示模式到目前為止所輸入的內容在哪裡相符。相符的字串會被反白顯示。如果模式無效或找不到,則不會顯示任何內容。螢幕會經常更新,這僅在快速終端機上才有用。請注意,會顯示相符項,但當找不到相符項以及按下 <Esc> 時,游標會返回其原始位置。您仍然需要使用 <Enter> 完成搜尋指令,才能將游標移動到相符項。您可以使用 CTRL-GCTRL-T 鍵移動到下一個和上一個相符項。 c_CTRL-G c_CTRL-T Vim 僅搜尋大約半秒鐘。如果模式複雜和/或文字很多,則可能找不到相符項。這是為了避免在您輸入模式時 Vim 掛起。hl-IncSearch 反白群組會決定反白顯示的方式。當 'hlsearch' 開啟時,在輸入搜尋指令時,也會反白顯示所有相符的字串。另請參閱:'hlsearch'。如果您不想開啟 'hlsearch',但想在搜尋時反白顯示所有相符項,您可以使用自動指令開啟和關閉 'hlsearch'。範例
augroup vimrc-incsearch-highlight
  autocmd!
  autocmd CmdlineEnter /,\? :set hlsearch
  autocmd CmdlineLeave /,\? :set nohlsearch
augroup END
可以使用 CTRL-L 將目前相符項之後的一個字元新增至指令列。如果設定了 'ignorecase''smartcase' 且指令列沒有大寫字元,則新增的字元會轉換為小寫。CTRL-R CTRL-W 可用於新增目前相符項結尾的單字,但不包含已輸入的字元。
'indentexpr' 'inde' 'indentexpr' 'inde' 字串 (預設值為 "") 緩衝區本地 用於取得行之正確縮排的運算式。當建立新行時、用於 = 運算子,以及在插入模式中(如 'indentkeys' 選項所指定)時會使用。當此選項不為空時,它會覆蓋 'cindent''smartindent' 縮排。當設定 'lisp' 時,僅當 'lispoptions' 包含 "expr:1" 時才會使用此選項。評估運算式時會將 v:lnum 設定為要計算縮排的行號。當評估運算式時,游標也會位於此行中(但可能會四處移動)。
如果表達式以 s: 或 <SID> 開頭,則會以腳本 ID 取代 ( local-function)。範例:
set indentexpr=s:MyIndentExpr()
set indentexpr=<SID>SomeIndentExpr()
否則,表達式會在設定該選項的腳本的上下文中評估,因此可以使用腳本本地項目。
使用不帶參數的函式呼叫的優點是它速度更快,請參閱 expr-option-function
運算式必須傳回相當於縮排的空格數。它可以傳回 "-1" 以保留目前的縮排 (這表示縮排會使用 'autoindent')。用於計算縮排的實用函式有 indent()cindent()lispindent()。運算式的評估不得有副作用!它不得變更文字、跳到另一個視窗等。之後,游標位置會始終還原,因此可以移動游標。通常,此選項會設定為呼叫函式
set indentexpr=GetMyIndent()
錯誤訊息將會被隱藏,除非 'debug' 選項包含 "msg"。請參閱 indent-expression
當從 modeline 設定時,會在 沙箱中評估運算式,請參閱 sandbox-option。當 'modelineexpr' 關閉時,無法在 modeline 中設定此選項。
在評估 'indentexpr' textlock 時,不允許變更文字或跳到另一個視窗。
'indentkeys' 'indk' 'indentkeys' 'indk' 字串 (預設值為 "0{,0},0),0],:,0#,!^F,o,O,e") 緩衝區本地 在插入模式中輸入時,會導致重新縮排目前行的按鍵清單。僅在 'indentexpr' 不為空時才會發生。格式與 'cinkeys' 相同,請參閱 indentkeys-format。請參閱 C-indentingindent-expression
'infercase' 'inf' 'noinfercase' 'noinf' 'infercase' 'inf' 布林值 (預設為關閉) 緩衝區局部設定。當在插入模式下進行關鍵字補全 ins-completion,且 'ignorecase' 也啟用時,匹配的大小寫會根據輸入的文字進行調整。如果輸入的文字包含小寫字母,而匹配的文字包含大寫字母,則補全的部分會變成小寫。如果輸入的文字沒有小寫字母,而匹配的文字包含小寫字母,且輸入的文字有大寫字母,且前面有字母,則補全的部分會變成大寫。使用 'noinfercase' 時,匹配的文字會原樣使用。
'isfname' 'isf' 'isfname' 'isf' 字串 (Windows 預設值為 "@,48-57,/,\,.,-,_,+,,,#,$,%,{,},[,],@-@,!,~,=",否則為 "@,48-57,/,.,-,_,+,,,#,$,%,~,=") 全域設定。此選項指定的字元會包含在檔案名稱和路徑名稱中。檔案名稱會用於 "gf"、"[i" 等指令,以及標籤檔中。它也用於 pattern 中的 "\f"。多位元組字元 256 及以上永遠會包含,只有 255 及以下的字元會由此選項指定。對於 UTF-8,也會包含 0xa0 到 0xff 的字元。將空白字元加入此選項前請三思。雖然空白字元可能出現在檔案名稱中,但效果會變成 Vim 在進行補全時不知道檔案名稱的開頭或結尾。最好不要在 'isfname' 中使用空白字元。
請注意,在使用反斜線作為路徑分隔符號的系統上,Vim 會盡力讓它像您預期的那樣運作。這有點棘手,因為 Vi 原本使用反斜線來跳脫特殊字元。Vim 不會移除在這些系統上一般檔案名稱字元前面的反斜線,但在 Unix 和類似系統上則會移除。預設不包含 '&' 和 '^',因為這些是 cmd.exe 的特殊字元。
此選項的格式是多個部分,以逗號分隔。每個部分可以是單個字元編號或一個範圍。範圍是兩個字元編號,中間以 '-' 分隔。字元編號可以是 0 到 255 之間的十進制數字,或是 ASCII 字元本身(不適用於數字)。範例: "_,-,128-140,#-43" (包含 '_' 和 '-' 以及 128 到 140 和 '#' 到 43 的範圍) 如果某個部分以 '^' 開頭,則會從選項中排除後面的字元編號或範圍。此選項會從左到右進行解讀。將排除的字元放在包含它的範圍之後。若要包含 '^' 本身,請將它用作選項的最後一個字元或範圍的結尾。範例:"^a-z,#,^" (排除 'a' 到 'z',包含 '#' 和 '^') 如果字元是 '@',則會包含所有 isalpha() 回傳 TRUE 的字元。通常這些是 a 到 z 和 A 到 Z 的字元,加上帶重音符號的字元。若要包含 '@' 本身,請使用 "@-@"。範例:"@,^a-z" 所有字母字元,不包含小寫 ASCII 字母。"a-z,A-Z,@-@" 所有字母加上 '@' 字元。可以將逗號放在需要字元編號的位置來包含逗號。範例:"48-57,,,_" 數字、逗號和底線。可以透過在逗號前面加上 '^' 來排除逗號。範例:" -~,^,,9" 從空白到 '~' 的所有字元,不包含逗號,加上 <Tab>。請參閱 option-backslash 以了解如何包含空白和反斜線。
'isident' 'isi' 'isident' 'isi' 字串 (Windows 預設值為 "@,48-57,_,128-167,224-235",否則為 "@,48-57,_,192-255") 全域設定。此選項所給定的字元會包含在識別碼中。識別碼會用於識別環境變數,以及在匹配 'define' 選項之後。它也用於 pattern 中的 "\i"。有關此選項格式的說明,請參閱 'isfname'。對於 '@',只會使用 255 及以下的字元。請注意:如果您變更此選項,可能會破壞環境變數的展開。例如,當包含 '/' 且 Vim 嘗試展開 "$HOME/.local/state/nvim/shada/main.shada" 時。您或許應該改為變更 'iskeyword'
'iskeyword' 'isk' 'iskeyword' 'isk' 字串 (預設為 "@,48-57,_,192-255") 緩衝區局部設定。關鍵字會用於搜尋以及使用許多指令進行識別:"w"、"*"、"[i" 等。它也用於 pattern 中的 "\k"。有關此選項格式的說明,請參閱 'isfname'。對於 255 以上的 '@' 字元,請檢查 "word" 字元類別(任何不是空白或標點符號的字元)。對於 C 程式,您可以使用 "a-z,A-Z,48-57,_,.,-,>"。對於說明檔,它會設定為所有非空白的可列印字元,除了 "*"、'"' 和 '|' 之外(因此在指令上按 CTRL-] 會尋找該指令的說明)。當 'lisp' 選項啟用時,永遠會包含 '-' 字元。除非語法使用 :syn-iskeyword,否則此選項也會影響語法高亮顯示。
'isprint' 'isp' 'isprint' 'isp' 字串 (預設為 "@,161-255") 全域設定。此選項所給定的字元會直接顯示在螢幕上。它也用於 pattern 中的 "\p"。從空白字元 (ASCII 32) 到 '~' 字元 (ASCII 126) 的字元永遠會直接顯示,即使它們未包含在 'isprint' 中或被排除。有關此選項格式的說明,請參閱 'isfname'
不可列印的字元會以兩個字元顯示:0 - 31 "^@" - "^_"、32 - 126 永遠為單個字元、127 "^?"、128 - 159 "~@" - "~_"、160 - 254 "| " - "|~"、255 "~?"。從 128 到 255 的非法位元組 (無效的 UTF-8) 會顯示為 <xx>,其中 xx 是位元組的十六進位值。當 'display' 包含 "uhex" 時,所有不可列印的字元都會顯示為 <xx>。SpecialKey 高亮顯示會用於不可列印的字元。hl-SpecialKey
多位元組字元 256 及以上永遠會包含,只有 255 及以下的字元會由此選項指定。當字元可列印但目前字型中沒有時,會顯示替代字元。不可列印和零寬度的 Unicode 字元會顯示為 <xxxx>。沒有選項可以指定這些字元。
'joinspaces' 'js' 'nojoinspaces' 'nojs' 'joinspaces' 'js' 布林值 (預設為關閉) 全域設定。在使用 join 指令時,在 '.'、'?' 和 '!' 之後插入兩個空白字元。否則只會插入一個空白字元。
'jumpoptions' 'jop' 'jumpoptions' 'jop' 字串 (預設為 "clean") 全域設定。用於變更 jumplist 行為的單字清單。stack 讓 jumplist 的行為類似 tagstack。jumplist 中項目的相對位置會被保留,代價是當在 jumplist 中向後導覽,然後跳到某個位置時,會捨棄後續的項目。jumplist-stack
view 當在 jumplist、changelistalternate-file 中移動,或使用 mark-motions 時,嘗試還原動作發生的 mark-view
clean 從 jumplist 中移除已卸載的緩衝區。實驗性功能:此旗標未來可能會變更。
'keymap' 'kmp' 'keymap' 'kmp' 字串 (預設為 "") 緩衝區局部設定。鍵盤映射的名稱。請參閱 mbyte-keymap。將此選項設定為有效的鍵盤映射名稱具有副作用,會將 'iminsert' 設定為 1,以便鍵盤映射生效。'imsearch' 也會設定為 1,除非它原本是 -1。只能使用英數字元、'.'、'-' 和 '_'。
'keymodel' 'km' 'keymodel' 'km' 字串 (預設為 "") 全域設定。以逗號分隔的單字清單,可啟用按鍵可以執行的特殊操作。可以使用以下值:startsel 使用 Shift 特殊按鍵開始選取(Select 模式或 Visual 模式,取決於 'selectmode' 中是否出現 "key")。stopsel 使用非 Shift 特殊按鍵停止選取。在此內容中的特殊按鍵是指游標鍵、<End><Home><PageUp><PageDown>
'keywordprg' 'kp' 'keywordprg' 'kp' 字串 (預設值:":Man",Windows:":help") 全域或緩衝區局部設定。global-local 用於 K 指令的程式。環境變數會展開 :set_env。可以使用 ":help" 來存取 Vim 內部說明。(請注意,先前將全域選項設定為空白值會執行此動作,但現在已不建議使用。)當第一個字元是 ":" 時,該指令會以 Vim Ex 指令的形式呼叫,並加上 [count] 前綴。當使用 "man" 或 "man -s" 時,Vim 會自動將 "K" 指令的 [count] 轉換為章節編號。請參閱 option-backslash 以了解如何包含空白和反斜線。範例
set keywordprg=man\ -s
set keywordprg=:Man
出於安全原因,無法從 modeline沙箱中設定此選項。
'langmap' 'lmap' E357 E358 'langmap' 'lmap' 字串 (預設為 "") 全域設定。此選項允許將您的鍵盤切換到特殊的語言模式。當您在插入模式下輸入文字時,字元會直接插入。當在一般模式下時,'langmap' 選項會負責將這些特殊字元轉換為按鍵的原始含義。這表示您不必變更鍵盤模式就可以執行一般模式指令。這與 'keymap' 選項相反,在該選項中,字元會在插入模式中對應。也請考慮將 'langremap' 設定為關閉,以防止 'langmap' 套用到對應產生的字元。基於安全考量,無法從 modelinesandbox 中設定此選項。
範例 (對於希臘文,使用 UTF-8): greek
set langmap=ΑA,ΒB,ΨC,ΔD,ΕE,ΦF,ΓG,ΗH,ΙI,ΞJ,ΚK,ΛL,ΜM,ΝN,ΟO,ΠP,QQ,ΡR,ΣS,ΤT,ΘU,ΩV,WW,ΧX,ΥY,ΖZ,αa,βb,ψc,δd,εe,φf,γg,ηh,ιi,ξj,κk,λl,μm,νn,οo,πp,qq,ρr,σs,τt,θu,ωv,ςw,χx,υy,ζz
範例 (交換指令 z 和 y 的含義)
set langmap=zy,yz,ZY,YZ
'langmap' 選項是多個部分的清單,以逗號分隔。每個部分可以是以下兩種形式之一:1. 成對的清單。每對都是一個 "from" 字元,緊接著 "to" 字元。範例:"aA"、"aAbBcC"。2. "from" 字元的清單、一個分號和 "to" 字元的清單。範例:"abc;ABC" 範例:"aA,fgh;FGH,cCdDeE"。特殊字元前面需要加上反斜線。這些字元是 ";"、'、'"'、'|' 和反斜線本身。
這將允許您啟用 vim 的操作,而無需在語言之間來回切換。您的語言字元在以下情況下將被視為正常的 vim 英文單字(根據 langmap 的對應): o 一般/視覺模式(指令、緩衝區/暫存器名稱、使用者對應) o 插入/取代模式:CTRL-R 後的暫存器名稱 o 插入/取代模式:對應 在命令列模式中輸入的字元將不受此選項影響。請注意,此選項可以隨時變更,允許在不同語言/編碼的對應之間切換。使用對應來避免每次都輸入!
'langmenu' 'lm' 'langmenu' 'lm' 字串 (預設值為 "") 全域 設定用於選單翻譯的語言。告知從 'runtimepath' 中的 "lang" 目錄載入哪個檔案
"lang/menu_" .. &langmenu .. ".vim"
(不含空格)。例如,無論 $LANG 設定為何,始終使用荷蘭語選單
set langmenu=nl_NL.ISO_8859-1
'langmenu' 為空時,會使用 v:lang。只能使用正常的檔案名稱字元,/\*?[|<> 是非法的。如果您的 $LANG 設定為非英語語言,但您想使用英文選單
set langmenu=none
必須在載入選單、開啟檔案類型偵測或語法突顯之前設定此選項。一旦定義選單,設定此選項便沒有效果。但您可以執行此操作
source $VIMRUNTIME/delmenu.vim
set langmenu=de_DE.ISO_8859-1
source $VIMRUNTIME/menu.vim
警告: 這會刪除所有您自己定義的選單!
'langremap' 'lrm' 'nolangremap' 'nolrm' 'langremap' 'lrm' 布林值 (預設為關閉) 全域 當關閉時,設定 'langmap' 不適用於從對應產生的字元。如果設定 'langmap' 會停用您的某些對應,請確保此選項已關閉。
'laststatus' 'ls' 'laststatus' 'ls' 數字 (預設值為 2) 全域 此選項的值會影響最後一個視窗何時會有狀態列:0:永遠不顯示 1:只有在至少有兩個視窗時才顯示 2:總是顯示 3:總是顯示,且只顯示最後一個視窗 如果您有多個視窗,則使用狀態列螢幕看起來會更好,但會佔用另一行螢幕。狀態列
'lazyredraw' 'lz' 'nolazyredraw' 'nolz' 'lazyredraw' 'lz' 布林值 (預設為關閉) 全域 當設定此選項時,在執行巨集、暫存器和其他未輸入的指令時,螢幕不會重新繪製。此外,視窗標題的更新也會延遲。若要強制更新,請使用 :redraw。這有時可能會導致顯示錯誤。它僅適用於在執行重新繪製可能會導致閃爍或導致速度變慢的操作時暫時設定。
'linebreak' 'lbr' 'nolinebreak' 'nolbr' 'linebreak' 'lbr' 布林值 (預設為關閉) 本機視窗 若開啟,Vim 會在 'breakat' 中的字元處換行長行,而不是在螢幕上最後一個符合的字元處換行。與 'wrapmargin''textwidth' 不同,這不會在檔案中插入 <EOL>,它只會影響檔案的顯示方式,而不是其內容。如果設定 'breakindent',則行會在視覺上縮排。然後,會使用 'showbreak' 的值來放在換行的前面。當 'wrap' 選項關閉時,不會使用此選項。請注意,<EOL> 之後的 <Tab> 字元大多不會以正確的空格量顯示。
'lines' E593 'lines' 數字 (預設值為 24 或終端機高度) 全域 Vim 視窗的行數。通常您不需要設定此值。它會由終端機初始化程式碼自動完成。當 Vim 在 GUI 中或在可調整大小的視窗中執行時,設定此選項會導致變更視窗大小。當您只想將大小用於 GUI 時,請將指令放入 gvimrc 檔案中。Vim 會將行數限制為符合螢幕的大小。您可以使用此指令來取得盡可能高的視窗
set lines=999
最小值為 2,最大值為 1000。
'linespace' 'lsp' 'linespace' 'lsp' 數字 (預設值為 0) 全域 僅限 GUI 字元之間插入的像素線條數。如果字型使用完整的字元儲存格高度,使得行彼此接觸,則此功能非常有用。當非零時,會有空間用於底線。對於某些字型,行之間可能會有太多空間(以便為上標和下標保留空間)。然後,將 'linespace' 設定為負值是有意義的。不過,這可能會導致顯示問題!
'lisp' 'nolisp' 'lisp' 布林值 (預設為關閉) 本機緩衝區 Lisp 模式:當在插入模式中輸入 <Enter> 時,將下一行的縮排設定為 Lisp 標準(嗯,算是)。「cc」或「S」也會發生這種情況。'autoindent' 也必須開啟才能運作。'cpoptions' 中的 'p' 旗標會變更縮排方法:Vi 相容或更好。另請參閱 'lispwords'。'-' 字元包含在關鍵字字元中。如果 'equalprg' 為空,則會重新定義 "=" 運算子以使用相同的縮排演算法,而不是呼叫外部程式。
'lispoptions' 'lop' 'lispoptions' 'lop' 字串 (預設值為 "") 本機緩衝區 以逗號分隔的項目清單,當使用 'lisp' 選項啟用時,會影響 Lisp 縮排。目前僅支援一個項目:expr:1 當設定時,將 'indentexpr' 用於 Lisp 縮排 expr:0 不使用 'indentexpr' 進行 Lisp 縮排 (預設值) 請注意,當使用 'indentexpr' 時,= 運算子會縮排所有行,否則第一行不會縮排 (與 Vi 相容)。
'lispwords' 'lw' 'lispwords' 'lw' 字串 (預設值非常長) 全域或本機緩衝區 全域-本機 以逗號分隔的單字清單,當使用 'lisp' 選項啟用時,會影響 Lisp 縮排。
'list' 'nolist' 'list' 布林值 (預設為關閉) 本機視窗 清單模式:預設情況下,將 Tab 顯示為 ">",尾隨空格顯示為 "-",將不分行空格字元顯示為 "+"。有助於查看 Tab 和空格之間的差異,以及用於尾隨空白。由 'listchars' 選項進一步變更。
'listchars' 不包含 "tab" 欄位時,Tab 會顯示為 "^I" 或 "<09>",就像顯示不可列印的字元一樣。
游標會顯示在 Tab 字元佔用的空間的開頭,而不是像一般在一般模式中一樣顯示在結尾。若要在使用空格顯示 Tab 時取得此游標位置,請使用
set list lcs=tab:\ \
請注意,當 'cpoptions' 包含 'L' 時,清單模式也會影響格式設定(使用 'textwidth''wrapmargin' 設定)。請參閱 'listchars' 以變更 Tab 的顯示方式。
'listchars' 'lcs' 'listchars' 'lcs' 字串 (預設值為 "tab:> ,trail:-,nbsp:+") 全域或本機視窗 全域-本機 用於 'list' 模式和 :list 指令的字串。它是以逗號分隔的字串設定清單。E1511
lcs-eol
eol:c 在每一行末尾顯示的字元。省略時,行尾沒有額外的字元。lcs-tab
tab:xy[z] 用於顯示 Tab 的兩個或三個字元。第三個字元是選用的。
tab:xy 始終使用 'x',然後根據需要多次使用 'y'。因此 "tab:>-" 會顯示
>
>-
>--
etc.
tab:xyz 始終使用 'z',然後將 'x' 前置,然後根據需要多次使用 'y'。因此 "tab:<->" 會顯示
>
<>
<->
<-->
etc.
當省略 "tab:" 時,Tab 會顯示為 ^I。lcs-space
space:c 用於顯示空格的字元。省略時,空格會留白。lcs-multispace
multispace:c... 一個或多個字元,用於循環顯示多個連續的空格。覆寫 "space" 設定,但單一空格除外。省略時,會使用 "space" 設定。例如,:set listchars=multispace:---+ 會將十個連續的空格顯示為
---+---+--
lcs-lead
lead:c 用於顯示開頭空格的字元。省略時,開頭空格會留白。覆寫開頭空格的 "space" 和 "multispace" 設定。您可以將它與 "tab:" 結合使用,例如
set listchars+=tab:>-,lead:.
lcs-leadmultispace
leadmultispace:c... 與 lcs-multispace 值類似,但僅適用於開頭空格。也覆寫開頭多個空格的 lcs-lead:set listchars=leadmultispace:---+ 會將十個連續的開頭空格顯示為
---+---+--XXX
其中 "XXX" 表示行中第一個非空白字元。lcs-trail
trail:c 用於顯示尾隨空格的字元。若省略,尾隨空格將顯示為空白。此設定會覆蓋尾隨空格的 "space" 和 "multispace" 設定。lcs-extends
extends:c 當 'wrap' 設定為關閉且該行超出螢幕右側時,在最後一欄顯示的字元。lcs-precedes
precedes:c 當實體行的第一個可見欄位之前有文字時,在該實體行的第一個可見欄位中顯示的字元。lcs-conceal
conceal:c 當 'conceallevel' 設定為 1 時,用來顯示被隱藏文字的字元。若省略,則為空格。lcs-nbsp
nbsp:c 用於顯示不換行空格字元 (0xA0 (十進位 160) 和 U+202F) 的字元。若省略,則留白。
不應使用字元 ':' 和 ','。可以使用 UTF-8 字元。所有字元都必須是單一寬度。E1512
每個字元都可以指定為十六進位。
set listchars=eol:\\x24
set listchars=eol:\\u21b5
set listchars=eol:\\U000021b5
請注意,必須使用雙反斜線。\\x 的十六進位字元數必須剛好是 2 個,\\u 是 4 個,而 \\U 是 8 個。
範例
set lcs=tab:>-,trail:-
set lcs=tab:>-,eol:<,nbsp:%
set lcs=extends:>,precedes:<
hl-NonText 語法高亮將用於 "eol"、"extends" 和 "precedes"。 hl-Whitespace 則用於 "nbsp"、"space"、"tab"、"multispace"、"lead" 和 "trail"。
'loadplugins' 'lpl' 'noloadplugins' 'nolpl' 'loadplugins' 'lpl' 布林值(預設為開啟)全域。當啟用時,啟動時會載入外掛程式腳本。load-plugins。您可以在 vimrc 檔案中重設此選項,以停用外掛程式的載入。請注意,使用 "-u NONE" 和 "--noplugin" 命令列引數會重設此選項。 -u --noplugin
'magic' 'nomagic' 'magic' 布林值(預設為開啟)全域。變更搜尋模式中可使用的特殊字元。請參閱 pattern警告:關閉此選項很可能會破壞外掛程式!這是因為許多模式都假設它是開啟的,並且在關閉時會失敗。只有在處理舊版 Vi 腳本時才關閉它。在任何其他情況下,請撰寫在 'magic' 開啟時可以運作的模式。當您想要 /\M 時,請包含 "\M"。
'makeef' 'mef' 'makeef' 'mef' 字串(預設為 "")全域。用於 :make 命令(請參閱 :make_makeprg)和 :grep 命令的錯誤檔案名稱。當它為空時,將使用內部產生的臨時檔案。當包含 "##" 時,它會被數字取代,以使名稱唯一。這可以確保 ":make" 命令不會覆蓋現有檔案。不適用於 ":cf" 命令。請參閱 'errorfile'。環境變數會被展開 :set_env。關於包含空格和反斜線,請參閱 option-backslash。為了安全性考量,無法從 modelinesandbox 中設定此選項。
'makeencoding' 'menc' 'makeencoding' 'menc' 字串(預設為 "")全域或本機緩衝區 global-local。用於讀取外部命令輸出的編碼。當為空時,不轉換編碼。這用於 :make:lmake:grep:lgrep:grepadd:lgrepadd:cfile:cgetfile:caddfile:lfile:lgetfile:laddfile
當您使用 MS-Windows 時,這會特別有用。如果已啟用 iconv,則將 'makeencoding' 設定為 "char" 與設定為系統地區設定編碼具有相同的效果。範例
set makeencoding=char        " system locale is used
'makeprg' 'mp' 'makeprg' 'mp' 字串(預設為 "make")全域或本機緩衝區 global-local。用於 ":make" 命令的程式。請參閱 :make_makeprg。此選項可以包含 '%' 和 '#' 字元(請參閱 :_%:_#),它們會展開為目前和替代的檔案名稱。如果檔案名稱包含特殊字元,請使用 ::S 來逸脫它們。環境變數會被展開 :set_env。關於包含空格和反斜線,請參閱 option-backslash。請注意,'|' 必須被逸脫兩次:一次用於 ":set",一次用於命令的解譯。當您使用名為 "myfilter" 的篩選器時,請這樣做
set makeprg=gmake\ \\\|\ myfilter
可以給定佔位符 "$*"(即使多次給定),以指定將包含引數的位置,例如
set makeprg=latex\ \\\\nonstopmode\ \\\\input\\{$*}
出於安全原因,無法從 modeline沙箱中設定此選項。
'matchpairs' 'mps' 'matchpairs' 'mps' 字串(預設為 "(:),{:},[:]")本機緩衝區。形成配對的字元。% 命令會從一個跳到另一個。只允許使用不同的字元配對,因此您無法在兩個雙引號之間跳轉。字元必須以冒號分隔。配對必須以逗號分隔。包含 '<' 和 '>' 的範例 (用於 HTML)
set mps+=<:>
一個更特殊的範例,可在賦值中 '=' 和 ';' 之間跳轉,這對於 C 和 Java 等語言很有用
au FileType c,cpp,java set mps+==:;
如需更進階的 "%" 使用方式,請參閱 $VIMRUNTIME/plugin 目錄中的 matchit.vim 外掛程式。add-local-help
'matchtime' 'mat' 'matchtime' 'mat' 數字(預設為 5)全域。當設定 'showmatch' 時,顯示相符括號的十分之一秒數。請注意,這不是毫秒,與其他設定時間的選項不同。這是為了與 Nvi 相容。
'maxfuncdepth' 'mfd' 'maxfuncdepth' 'mfd' 數字(預設為 100)全域。使用者函數的最大函數呼叫深度。這通常會捕捉到無止盡的遞迴。當使用具有更深層次的遞迴函數時,請將 'maxfuncdepth' 設定為更大的數字。但這會使用更多記憶體,當記憶體耗盡時,可能會發生錯誤。將此限制增加到 200 以上也會變更 Ex 命令遞迴的最大值,請參閱 E169。另請參閱 :function。也用於回呼函數的最大深度。
'maxmapdepth' 'mmd' E223 'maxmapdepth' 'mmd' 數字(預設為 1000)全域。在不產生要使用的字元的情況下,進行映射的最大次數。這通常會捕捉到無止盡的映射,例如 ":map x y" 與 ":map y x"。它仍然無法捕捉到 ":map g wg",因為 'w' 會在執行下一個映射之前被使用。另請參閱 key-mapping
'maxmempattern' 'mmp' 'maxmempattern' 'mmp' 數字(預設為 1000)全域。用於模式比對的最大記憶體量(以 Kbyte 為單位)。最大值約為 2000000。使用此選項可在沒有限制的情況下工作。 E363
當 Vim 達到限制時,它會給出錯誤訊息,並且行為大多與輸入 CTRL-C 類似。達到限制通常表示模式非常低效或太複雜。即使在非常長的行上使用模式 "\(.\)*" 也可能會發生這種情況。"." 運作得更好。當語法規則嘗試比對複雜的文字結構時,重新繪製也可能會發生這種情況。Vim 可能會在達到 'maxmempattern' 限制之前用完記憶體,在這種情況下,您會收到 "記憶體不足" 錯誤。
'menuitems' 'mis' 'menuitems' 'mis' 數字(預設為 25)全域。在選單中使用的最大項目數。用於從項目清單產生的選單,例如,緩衝區選單。變更此選項沒有直接影響,必須先重新整理選單。
'mkspellmem' 'msm' 'mkspellmem' 'msm' 字串(預設為 "460000,2000,500")全域。用於 :mkspell 的參數。這會調整何時開始壓縮單字樹。當單字很多時,壓縮可能會很慢,但這是避免記憶體不足所必需的。每個單字使用的記憶體量很大程度上取決於單字的相似程度,這就是為什麼這種調整很複雜的原因。
有三個數字,以逗號分隔
{start},{inc},{added}
對於大多數語言來說,未壓縮的單字樹可以放入記憶體中。{start} 給出在執行任何壓縮之前可以使用的記憶體量(以 Kbyte 為單位)。它應該比 Vim 可用的記憶體量小一點。
當超過 {start} 限制時,{inc} 數字會指定在執行另一次壓縮之前可以配置的記憶體量(以 Kbyte 為單位)。較低的數字表示在添加較少的單字後執行壓縮,這很慢。較高的數字表示將配置更多記憶體。
在完成壓縮後,在忽略 {inc} 上限之前,可以加入 {added} 次 1024 個詞,並且當需要任何額外記憶體時會進行壓縮。數字越小,代表達到 {inc} 上限的機率越小,使用的記憶體越少,但速度會比較慢。
這些數字對於義大利語和匈牙利語來說很重要。預設值適用於您擁有約 512 MB 記憶體的情況。如果您有 1 GB 記憶體,您可以使用
set mkspellmem=900000,3000,800
如果您擁有的記憶體少於 512 MB,則對於某些語言來說,無論您將 'mkspellmem' 設定為多少,:mkspell 都可能會失敗。
出於安全原因,無法從 modeline沙箱中設定此選項。
'modeline' 'ml' 'nomodeline' 'noml' 'modeline' 'ml' 布林值(預設為開啟 (root 使用者為關閉)),屬於緩衝區的本地設定。如果 'modeline' 為開啟,則 'modelines' 會給出檢查設定指令的行數。如果 'modeline' 為關閉或 'modelines' 為零,則不檢查任何行。請參閱 modeline
'modelineexpr' 'mle' 'nomodelineexpr' 'nomle' 'modelineexpr' 'mle' 布林值(預設為關閉),屬於全域設定。當開啟時,允許在模式行中設定一些為運算式的選項。檢查選項是否受 'modelineexpr' 影響。另請參閱 modeline。基於安全原因,無法從 模式行 或在 沙箱中設定此選項。
'modelines' 'mls' 'modelines' 'mls' 數值(預設為 5),屬於全域設定。如果 'modeline' 為開啟,則 'modelines' 會給出檢查設定指令的行數。如果 'modeline' 為關閉或 'modelines' 為零,則不檢查任何行。請參閱 modeline
'modifiable' 'ma' 'nomodifiable' 'noma' E21 'modifiable' 'ma' 布林值(預設為開啟),屬於緩衝區的本地設定。當關閉時,緩衝區內容無法變更。'fileformat''fileencoding' 選項也無法變更。可以使用 -M 命令列參數在啟動時重置。
'modified' 'mod' 'nomodified' 'nomod' 'modified' 'mod' 布林值(預設為關閉),屬於緩衝區的本地設定 local-noglobal。當開啟時,緩衝區會被視為已修改。此選項會在以下情況下設定: 1. 自上次寫入後,文字有被更改過。使用 undo 命令回到原始文字會重置此選項。但是,還原寫入緩衝區之前所做的變更會再次設定此選項,因為文字與寫入時不同。 2. 'fileformat''fileencoding' 與其原始值不同。原始值是在讀取或寫入緩衝區時設定的。":set nomodified" 命令也會將原始值重置為當前值,並且 'modified' 選項將被重置。'eol''bomb' 也是如此。當緩衝區變更是由於 BufNewFile、BufRead/BufReadPost、BufWritePost、FileAppendPost 或 VimLeave 自動指令事件所導致時,不會設定此選項。請參閱 gzip-example 以了解說明。當 'buftype' 為 "nowrite" 或 "nofile" 時,可能會設定此選項,但會被忽略。請注意,文字實際上可能相同,例如,在 "A" 上使用 "rA" 時會設定 'modified'
'more' 'nomore' 'more' 布林值(預設為開啟),屬於全域設定。當開啟時,當整個螢幕填滿時,清單會暫停。您將會看到 more-prompt。當此選項關閉時,不會有任何暫停,清單會持續到完成。
'mouse'
'mouse' 字串(預設為 "nvi"),屬於全域設定。啟用滑鼠支援。例如,要在一般模式和視覺模式中啟用滑鼠
set mouse=nv
若要暫時停用滑鼠支援,在使用滑鼠時按住 Shift 鍵。
可以針對不同模式啟用滑鼠支援: n 一般模式 v 視覺模式 i 插入模式 c 命令列模式 h 編輯說明檔時的所有先前模式 a 所有先前模式 r 用於 hit-entermore-prompt 提示
在文字緩衝區中任何位置左鍵單擊,即可將游標放置於該處。這也適用於運算子,例如,輸入 d,然後左鍵單擊以刪除從目前游標位置到您單擊位置的文字。
拖曳視窗的 狀態列或垂直分隔符以調整其大小。
如果為 "v"(視覺模式)啟用,則雙擊選擇以字為單位,三擊使其以行為單位,四擊使其以矩形區塊為單位。
有關使用滑鼠滾輪滾動,請參閱 scroll-mouse-wheel
注意: 當在終端機中啟用滑鼠時,複製/貼上將盡可能使用 * 暫存器。另請參閱 'clipboard'
相關選項:'mousefocus' 視窗焦點跟隨滑鼠指標 'mousemodel' 滑鼠按鈕執行什麼動作 'mousehide' 輸入文字時隱藏滑鼠指標 'selectmode' 是否啟動選取模式或視覺模式
'mousefocus' 'mousef' 'nomousefocus' 'nomousef' 'mousefocus' 'mousef' 布林值(預設為關閉),屬於全域設定。滑鼠指標所在的視窗會自動啟用。當以其他方式變更視窗版面配置或視窗焦點時,滑鼠指標會移至具有鍵盤焦點的視窗。預設為關閉,因為這會讓下拉式選單的使用有點奇怪,因為指標的移動可能會在無意間啟用視窗。
'mousehide' 'mh' 'nomousehide' 'nomh' 'mousehide' 'mh' 布林值(預設為開啟),僅在 GUI 中為全域設定。當開啟時,輸入字元時會隱藏滑鼠指標。當滑鼠移動時,會還原滑鼠指標。
'mousemodel' 'mousem' 'mousemodel' 'mousem' 字串(預設為 "popup_setpos"),屬於全域設定。設定滑鼠要使用的模式。名稱主要指定滑鼠右鍵的用途: extend 滑鼠右鍵擴展選取範圍。這與 xterm 中的方式相同。 popup 滑鼠右鍵彈出選單。按住 Shift 鍵的滑鼠左鍵會擴展選取範圍。這與 Microsoft Windows 中的方式相同。 popup_setpos 類似於 "popup",但游標會移動到滑鼠單擊的位置,因此選取的動作會對單擊的物件起作用。如果在選取範圍內單擊,則會對該選取範圍起作用,即不會移動游標。這當然意味著在選取範圍外單擊右鍵會結束視覺模式。每個模式的按鈕功能概述
滑鼠 extend popup(_setpos)
左鍵單擊 放置游標 放置游標 左鍵拖曳 開始選取 開始選取 按住 Shift 鍵的左鍵 搜尋單字 擴展選取範圍 右鍵單擊 擴展選取範圍 彈出選單(放置游標) 右鍵拖曳 擴展選取範圍 中鍵單擊 貼上 貼上
在 "popup" 模式中,滑鼠右鍵會產生彈出選單。Nvim 會建立預設的 彈出選單,但您可以重新定義它。
請注意,您可以使用對應進一步完善按鈕的含義。請參閱 mouse-overview。但對應不適用於非模式選取。
範例
map <S-LeftMouse>     <RightMouse>
map <S-LeftDrag>      <RightDrag>
map <S-LeftRelease>   <RightRelease>
map <2-S-LeftMouse>   <2-RightMouse>
map <2-S-LeftDrag>    <2-RightDrag>
map <2-S-LeftRelease> <2-RightRelease>
map <3-S-LeftMouse>   <3-RightMouse>
map <3-S-LeftDrag>    <3-RightDrag>
map <3-S-LeftRelease> <3-RightRelease>
map <4-S-LeftMouse>   <4-RightMouse>
map <4-S-LeftDrag>    <4-RightDrag>
map <4-S-LeftRelease> <4-RightRelease>
可以使用在滑鼠前輸入 "g" 鍵來模擬需要 CTRL 修飾鍵的滑鼠命令:"g<LeftMouse>" 為 "<C-LeftMouse>"(跳到滑鼠點擊下的標籤) "g<RightMouse>" 為 "<C-RightMouse>" ("CTRL-T")
'mousemoveevent' 'mousemev' 'nomousemoveevent' 'nomousemev' 'mousemoveevent' 'mousemev' 布林值(預設為關閉),屬於全域設定。當開啟時,滑鼠移動事件會傳遞到輸入佇列,並可供對應使用。預設為關閉,可避免滑鼠移動的額外負荷,除非需要。 警告:設定此選項可能會在滑鼠移動時中止擱置的對應。
'mousescroll' E5080 'mousescroll' 字串(預設為 "ver:3,hor:6"),屬於全域設定。此選項控制使用滑鼠滾輪滾動時要滾動的行數/列數(scroll-mouse-wheel)。此選項為逗號分隔的清單。每個部分都包含方向和計數,如下所示: direction:count,direction:count 方向為 "hor" 或 "ver" 其中之一。"hor" 控制水平滾動,而 "ver" 控制垂直滾動。Count 設定給定方向的滾動量,它應為非負整數。每個方向最多應設定一次。如果省略方向,則會使用預設值(水平滾動為 6,垂直滾動為 3)。您可以使用計數 0 來停用滑鼠滾動。
範例
set mousescroll=ver:5,hor:2
這將使 Nvim 在垂直滾動時每次滾動 5 行,在水平滾動時每次滾動 2 列。
'mousetime' 'mouset' 'mousetime' 'mouset' 數值(預設為 500),屬於全域設定。定義在兩次滑鼠點擊之間的最大時間(毫秒),以使第二次點擊被辨識為多次點擊。
'nrformats' 'nf' 'nrformats' 'nf' 字串(預設為 "bin,hex"),屬於緩衝區的本地設定。這定義當使用 CTRL-ACTRL-X 命令分別新增和減少數字時,Vim 會將哪些進位視為數字;請參閱 CTRL-A,以取得有關這些命令的更多資訊。alpha 如果包含,則會遞增或遞減單個字母字元。這對於使用字母索引 a)、b) 等的清單很有用。octal-nrformats
八進位 如果包含此選項,則以零開頭的數字會被視為八進位。範例:在 "007" 上使用 CTRL-A 會產生 "010"。十六進位 如果包含此選項,則以 "0x" 或 "0X" 開頭的數字會被視為十六進位。範例:在 "0x100" 上使用 CTRL-X 會產生 "0x0ff"。二進位 如果包含此選項,則以 "0b" 或 "0B" 開頭的數字會被視為二進位。範例:在 "0b1000" 上使用 CTRL-X 會減一,產生 "0b0111"。無符號 如果包含此選項,則數字會被識別為無符號。因此,前導的破折號或負號不會被視為數字的一部分。範例:在 "9-2020" 中的 "2020" 上使用 CTRL-X 會產生 "9-2019"(若沒有「unsigned」,則會變成 "9-2021")。在 "9-2020" 中的 "2020" 上使用 CTRL-A 會產生 "9-2021"(若沒有「unsigned」,則會變成 "9-2019")。在 "0" 上使用 CTRL-X 或在 "18446744073709551615" (2^64 - 1) 上使用 CTRL-A 不會產生任何影響,可以防止溢位。空白 如果包含此選項,則根據前面的空白字元將數字視為有符號或無符號。如果帶有前導破折號的數字,其破折號的前面緊鄰非空白字元(即,不是 tab 或 " "),則負號不會被視為數字的一部分。例如:在 "Carbon-14" 中的 "14" 上使用 CTRL-A 會產生 "Carbon-15"(若沒有「blank」,則會變成 "Carbon-13")。在 "Carbon -8" 中的 "8" 上使用 CTRL-X 會產生 "Carbon -9"(因為 -8 前面有空白字元。如果設定了「unsigned」,則會產生 "Carbon -7")。如果包含此格式,則會像設定了「unsigned」一樣防止溢位。如果同時包含此格式和「unsigned」,則「unsigned」將優先。
僅以 1-9 範圍內的數字開頭的數字始終被視為十進位。對於未被識別為八進位或十六進位的數字也是如此。
'number' 'nu' 'nonumber' 'nonu' 'number' 'nu' 布林值(預設關閉)本機視窗 在每行的前面列印行號。當 'n' 選項從 'cpoptions' 中排除時,換行將不會使用行號的欄位。使用 'numberwidth' 選項調整行號的空間。當一個長、換行的行不是以第一個字元開始時,會在數字前加上 '-' 字元。有關高亮顯示,請參閱 hl-LineNrhl-CursorLineNr:sign-define "numhl" 引數。number_relativenumber
'relativenumber' 選項會將顯示的數字更改為相對於游標。與 'number' 一起使用,會有以下四種組合(游標在第 3 行)
'nonu' 'nu' 'nonu' 'nu' 'nornu' 'nornu' 'rnu' 'rnu'
|apple          |  1 apple      |  2 apple      |  2 apple
|pear           |  2 pear       |  1 pear       |  1 pear
|nobody         |  3 nobody     |  0 nobody     |3   nobody
|there          |  4 there      |  1 there      |  1 there
'numberwidth' 'nuw' 'numberwidth' 'nuw' 數字(預設值 4)本機視窗 行號使用的最小欄位數。僅在設定 'number''relativenumber' 選項或使用行號列印行時才相關。由於數字和文字之間始終有一個空格,因此數字本身少了一個字元。該值是最小寬度。當需要容納緩衝區中最高的行號,或視窗中的行數時,會使用更大的寬度,具體取決於是否設定了 'number''relativenumber'。因此,使用 Vim 的預設值 4 時,最多可以容納 999 的行號。當緩衝區有 1000 行時,將使用五個欄位。最小值為 1,最大值為 20。
'omnifunc' 'ofu' 'omnifunc' 'ofu' 字串(預設值 "")本機緩衝區 此選項指定一個函數,用於使用 CTRL-X CTRL-O 進行插入模式 Omni 補全。i_CTRL-X_CTRL-O 有關如何調用函數以及它應該返回什麼,請參閱 complete-functions。該值可以是函數的名稱、lambdaFuncref。有關詳細資訊,請參閱 option-value-function。此選項通常由檔案類型外掛程式設定::filetype-plugin-on 出於安全原因,無法從 modelinesandbox 中設定此選項。
'operatorfunc' 'opfunc' 'operatorfunc' 'opfunc' 字串(預設值 "")全域 此選項指定由 g@ 運算子調用的函數。有關詳細資訊和範例,請參閱 :map-operator。該值可以是函數的名稱、lambdaFuncref。有關詳細資訊,請參閱 option-value-function
出於安全原因,無法從 modeline沙箱中設定此選項。
'packpath' 'pp' 'packpath' 'pp' 字串(預設值請參閱 'runtimepath')全域 用於尋找套件的目錄。請參閱 packagespackages-runtimepath。出於安全原因,無法從 modelinesandbox 中設定此選項。
'paragraphs' 'para' 'paragraphs' 'para' 字串(預設值 "IPLPPPQPP TPHPLIPpLpItpplpipbp")全域 指定分隔段落的 nroff 巨集。這些是兩個字母的配對(請參閱 object-motions)。
'patchexpr' 'pex' 'patchexpr' 'pex' 字串(預設值 "")全域 評估的表達式,用於將修補程式應用於檔案並產生檔案的結果新版本。請參閱 diff-patchexpr。出於安全原因,無法從 modelinesandbox 中設定此選項。
'patchmode' 'pm' E205 E206 'patchmode' 'pm' 字串(預設值 "")全域 當非空時,將保留檔案的舊版本。如果您正在變更原始碼發行版中的檔案,則可以使用此選項來保留檔案的原始版本。僅在第一次寫入檔案時,才會保留原始檔案的副本。副本的名稱是原始檔案的名稱,並附加 'patchmode' 選項中的字串。此選項應以點開頭。使用類似 ".orig" 或 ".org" 的字串。'backupdir' 不得為空,才能使其正常運作。(詳細資訊:備份檔案會在成功寫入新檔案後重新命名為 patchmode 檔案,這就是為什麼必須可以寫入備份檔案的原因)。如果沒有要備份的檔案,則會建立一個空檔案。當 'backupskip' 模式匹配時,不會建立 patchmode 檔案。將 'patchmode' 用於壓縮檔案會在末尾附加副檔名(例如,「file.gz.orig」),因此產生的名稱並不總是會被識別為壓縮檔案。僅能使用正常的檔案名稱字元,/\*?[|<> 是不合法的。
'path' 'pa' E343 E345 E347 E854 'path' 'pa' 字串(預設值 ".,,")全域或本機緩衝區 global-local 這是當使用 gf、[f、]f、^Wf、:find:sfind:tabfind 和其他命令時,將搜尋的目錄列表,前提是要搜尋的檔案具有相對路徑(不是以 "/"、"./" 或 "../" 開頭)。'path' 選項中的目錄可以是相對或絕對路徑。
使用逗號分隔目錄名稱
set path=.,/usr/local/include,/usr/include
也可以使用空格分隔目錄名稱。要在目錄名稱中使用空格,請在空格前加上額外的反斜線,並逸出空格
set path=.,/dir/with\\\ space
要在目錄名稱中包含逗號,請在逗號前加上額外的反斜線
set path=.,/dir/with\\,comma
若要相對於目前檔案的目錄進行搜尋,請使用
set path=.
若要在目前的目錄中搜尋,請在兩個逗號之間使用空字串
set path=,,
目錄名稱可以以 ':' 或 '/' 結尾。
環境變數會被展開,請參考 :set_env
當使用 netrw.vim 時,可以使用 URL。例如,加入 "https://www.vim.org" 會使 ":find index.html" 生效。
使用 "*"、"**" 和 ";" 在目錄樹中向上和向下搜尋。有關資訊和語法,請參閱 file-searching
小心使用 '\' 字元,鍵入兩個字元才能在選項中獲得一個字元
set path=.,c:\\include
或者直接使用 '/' 取代
set path=.,c:/include
不要忘記 ".",否則即使檔案與檔案位於同一目錄中也找不到!最大長度受到限制。具體取決於系統,大多數情況下類似於 256 或 1024 個字元。您可以使用 'path' 的值檢查是否找到了所有包含檔案,請參閱 :checkpath。在從列表中新增或刪除目錄時,首選使用 :set+=:set-=。這可以避免未來版本使用其他預設值時出現問題。若要移除目前目錄,請使用
set path-=
若要新增目前目錄,請使用
set path+=
若要使用環境變數,您可能需要取代分隔符號。以下是一個範例,用於附加 $INCL,其中目錄名稱以分號分隔
let &path = &path .. "," .. substitute($INCL, ';', ',', 'g')
將 ';' 取代為 ':' 或使用的任何分隔符號。請注意,當 $INCL 包含逗號或空格時,此方法不起作用。
'preserveindent' 'pi' 'nopreserveindent' 'nopi' 'preserveindent' 'pi' 布林值 (預設為關閉) 緩衝區局部選項。當變更目前行的縮排時,盡可能保留縮排結構。一般情況下,縮排會被替換為一系列的 Tab 字元,後面再接上所需數量的空格(除非啟用 'expandtab' 選項,否則只會使用空格)。啟用此選項表示縮排會盡可能保留現有的字元來進行縮排,並且只在必要時添加額外的 Tab 字元或空格。'expandtab' 選項不適用於保留的空白字元,Tab 字元仍會是 Tab 字元。 注意: 當多次使用 ">>" 時,產生的縮排會是 Tab 字元和空格的混合。您可能不喜歡這樣。另請參閱 'copyindent'。使用 :retab 來清理空白字元。
'previewheight' 'pvh' 'previewheight' 'pvh' 數字 (預設值為 12) 全域選項。預覽視窗的預設高度。用於 :ptag 和相關指令。當沒有指定計數時,也用於 CTRL-W_}
'previewwindow' 'pvw' 'nopreviewwindow' 'nopvw' E590 'previewwindow' 'pvw' 布林值 (預設為關閉) 視窗局部選項 local-noglobal。識別預覽視窗。只有一個視窗可以設定此選項。通常不是直接設定,而是透過使用 :ptag:pedit 等指令來設定。
'pumblend' 'pb' 'pumblend' 'pb' 數字 (預設值為 0) 全域選項。為 快顯功能表啟用偽透明效果。有效值範圍為 0 (完全不透明的快顯功能表,已停用) 到 100 (完全透明的背景)。介於 0-30 之間的值通常最為實用。
可以透過 highlight-blend 來覆寫快顯功能表中各個高亮顯示的透明度等級。例如,要啟用透明度,但強制使目前選取的元素完全不透明。
set pumblend=15
hi PmenuSel blend=0
與 UI 相關。搭配 RGB 色彩效果最佳。'termguicolors'
'pumheight' 'ph' 'pumheight' 'ph' 數字 (預設值為 0) 全域選項。在快顯功能表中顯示的最大項目數 (ins-completion-menu)。零表示「使用可用的螢幕空間」。
'pumwidth' 'pw' 'pumwidth' 'pw' 數字 (預設值為 15) 全域選項。快顯功能表的最小寬度 (ins-completion-menu)。如果游標欄位 + 'pumwidth' 超過螢幕寬度,則會調整快顯功能表以符合螢幕。
'pyxversion' 'pyx' 'pyxversion' 'pyx' 數字 (預設值為 3) 全域選項。指定用於 pyx* 函式和指令的 Python 版本 python_x。由於僅支援 Python 3,此值始終為 3。設定任何其他值都會導致錯誤。
出於安全原因,無法從 modeline沙箱中設定此選項。
'quickfixtextfunc' 'qftf' 'quickfixtextfunc' 'qftf' 字串 (預設值為 "") 全域選項。此選項指定一個函式,用於取得要在快速修復和位置清單視窗中顯示的文字。這可用於自訂快速修復或位置視窗中針對對應快速修復或位置清單中每個項目顯示的資訊。有關如何撰寫函式和範例的說明,請參閱 quickfix-window-function。該值可以是函式的名稱、lambdaFuncref。有關更多資訊,請參閱 option-value-function
出於安全原因,無法從 modeline沙箱中設定此選項。
'quoteescape' 'qe' 'quoteescape' 'qe' 字串 (預設值為 "\") 緩衝區局部選項。用於逸出字串中引號的字元。用於像 a'、a" 和 a` 之類的物件 a'。當在此選項中找到一個字元在字串內部時,會跳過後面的字元。預設值會將文字 "foo\"bar\\" 視為一個字串。
'readonly' 'ro' 'noreadonly' 'noro' 'readonly' 'ro' 布林值 (預設為關閉) 緩衝區局部選項 local-noglobal。如果開啟,則寫入會失敗,除非您使用 '!'。保護您避免意外覆寫檔案。當 Vim 以唯讀模式 ("vim -R") 啟動,或當執行檔被呼叫為 "view" 時,預設為開啟。當使用 ":w!" 時,會重設目前緩衝區的 'readonly' 選項,除非 'Z' 旗標位於 'cpoptions' 中。當使用 ":view" 指令時,會為新編輯的緩衝區設定 'readonly' 選項。有關不允許變更緩衝區的選項,請參閱 'modifiable'
'redrawdebug' 'rdb' 'redrawdebug' 'rdb' 字串 (預設值為 "") 全域選項。用於變更重繪工作方式的旗標,用於除錯目的。與將 'writedelay' 設定為某個合理值最為實用。支援下列旗標:compositor 表示合成器處理的每個重繪事件,方式是快速閃爍以色彩指示重繪類型的重繪區域。這些是使用的突出顯示群組(及其預設顏色):RedrawDebugNormal gui=reverse 通過的正常重繪 RedrawDebugClear guibg=Yellow 通過的清除事件 RedrawDebugComposed guibg=Green 由合成器修改的重繪事件(由於網格重疊等)RedrawDebugRecompose guibg=Red 由合成器本身產生的重繪,由於網格移動或刪除。line 在螢幕上繪製每行後引入延遲。當使用 TUI 或其他單網格 UI 時,「compositor」會提供更多資訊,應該優先使用(合成器會將每一行作為單獨的事件進行處理)flush 在每個「刷新」事件後引入延遲。nothrottle 關閉訊息網格的節流。這是一種最佳化方法,當繪製訊息區域時(啟用 'display' msgsep 旗標),會將許多小的捲動合併為一個較大的捲動。invalid 啟用對內部螢幕狀態不一致的更嚴格檢查(中止)。這在除錯器(和測試套件)內部執行 nvim 時最為實用。nodelta 將所有內部重新繪製的單元格發送到 UI,即使它們與已顯示狀態未更改也是如此。
'redrawtime' 'rdt' 'redrawtime' 'rdt' 數字 (預設值為 2000) 全域選項。重繪顯示的時間(以毫秒為單位)。適用於 'hlsearch''inccommand':match 高亮顯示和語法高亮顯示。當重繪時間超過此毫秒數時,將不會突出顯示其他比對項。對於語法高亮顯示,時間適用於每個視窗。當超過限制時,會停用語法高亮顯示,直到使用 CTRL-L。這用於避免 Vim 在使用非常複雜的模式時掛起。
'regexpengine' 're' 'regexpengine' 're' 數字 (預設值為 0) 全域選項。這會選取預設的正規表示式引擎。two-engines 可能的值為:0 自動選取 1 舊引擎 2 NFA 引擎 請注意,當使用 NFA 引擎且模式包含不支援的內容時,該模式將不匹配。這僅對偵錯正規表示式引擎有用。使用自動選取可讓 Vim 切換引擎,如果預設引擎的成本過高。例如,當 NFA 引擎使用過多的狀態時。這應該可以防止 Vim 在複雜模式與長文字組合時掛起。
'relativenumber' 'rnu' 'norelativenumber' 'nornu' 'relativenumber' 'rnu' 布林值 (預設為關閉) 視窗局部選項。在每行前面顯示相對於游標所在行的行號。相對行號可協助您使用您可以在某些垂直移動指令(例如 j k + -)之前使用的 count,而無需自行計算。與其他指令(例如 y d c < > gq gw =)結合使用時特別有用。當 'n' 選項從 'cpoptions' 中排除時,換行不會使用行號的欄位。可以使用 'numberwidth' 選項來設定用於行號的空間。當長的換行不以第一個字元開始時,數字前面會放置 '-' 字元。有關用於數字的突出顯示,請參閱 hl-LineNrhl-CursorLineNr
游標行前面的數字也取決於 'number' 的值,有關兩個選項的所有組合,請參閱 number_relativenumber
'report'
'report' 數字 (預設值為 2) 全域選項。報告變更行數的閾值。當變更的行數大於 'report' 時,大多數 ":" 指令都會顯示訊息。如果您想要它始終顯示,請將 'report' 設定為 0。對於 ":substitute" 指令,會使用取代的次數,而不是行數。
'revins' 'ri' 'norevins' 'nori' 'revins' 'ri' 布林值 (預設為關閉) 全域選項。在插入模式中插入字元會向後工作。請參閱「向後輸入」ins-reverse。當設定 'allowrevins' 時,可以在插入模式下使用 CTRL-_ 指令切換此選項。
'rightleft' 'rl' 'norightleft' 'norl' 'rightleft' 'rl' 布林值 (預設為關閉) 視窗本地設定。啟用時,顯示方向會變成從右至左,也就是說,檔案中儲存的字元會從右向左顯示。使用此選項,可以編輯希伯來語和阿拉伯語等從右向左書寫的語言的檔案。此選項是每個視窗各自設定,因此可以同時編輯混合檔案,或者以兩種方式檢視同一個檔案(當您有一個同時包含從右至左和從左至右字串的混合文字檔案時,這非常有用,以便兩組字串在不同的視窗中都能正確顯示)。另請參閱 rileft.txt
'rightleftcmd' 'rlc' 'rightleftcmd' 'rlc' 字串 (預設為 "search") 視窗本地設定。此選項中的每個單字都允許命令列編輯在從右至左模式下針對一組命令工作。
用於搜尋 "/" 和 "?" 命令
這對於希伯來語、阿拉伯語和波斯語等語言很有用。必須設定 'rightleft' 選項,'rightleftcmd' 才能生效。
'ruler' 'ru' 'noruler' 'noru' 'ruler' 'ru' 布林值 (預設為啟用) 全域設定。顯示游標位置的行號和欄號,以逗號分隔。當有空間時,會顯示檔案中顯示文字的相對位置,位於最右側:頂部第一行可見 底部最後一行可見 所有第一行和最後一行都可見 檔案中 45% 的相對位置。如果設定了 'rulerformat',它將決定尺規的內容。每個視窗都有自己的尺規。如果視窗有狀態列,則尺規會顯示在那裡。如果視窗沒有狀態列且 'cmdheight' 為零,則不會顯示尺規。否則,它會顯示在螢幕的最後一行。如果狀態列由 'statusline' 提供(即不為空),則此選項的優先順序高於 'ruler''rulerformat'。如果顯示的字元數與文字中的位元組數不同(例如,對於 TAB 或多位元組字元),則會顯示文字欄(位元組數)和螢幕欄,並以破折號分隔。對於空行,會顯示「0-1」。對於空緩衝區,行號也將為零:「0,0-1」。如果您不想一直看到尺規,但想知道您在哪裡,請使用「g CTRL-Gg_CTRL-G
'rulerformat' 'ruf' 'rulerformat' 'ruf' 字串 (預設為 "") 全域設定。當此選項不為空時,它會決定尺規字串的內容,如 'ruler' 選項所顯示。此選項的格式與 'statusline' 的格式相同。當 'modelineexpr' 關閉時,無法在模式行中設定此選項。
預設尺規寬度為 17 個字元。若要將尺規設為 15 個字元寬,請在開頭放置「%15(」,在結尾放置「%)」。範例
set rulerformat=%15(%c%V\ %p%%%)
'runtimepath' 'rtp' vimfiles 'runtimepath' 'rtp' 字串 (預設值為 "$XDG_CONFIG_HOME/nvim, $XDG_CONFIG_DIRS[1]/nvim, $XDG_CONFIG_DIRS[2]/nvim, … $XDG_DATA_HOME/nvim[-data]/site, $XDG_DATA_DIRS[1]/nvim/site, $XDG_DATA_DIRS[2]/nvim/site, … $VIMRUNTIME, … $XDG_DATA_DIRS[2]/nvim/site/after, $XDG_DATA_DIRS[1]/nvim/site/after, $XDG_DATA_HOME/nvim[-data]/site/after, … $XDG_CONFIG_DIRS[2]/nvim/after, $XDG_CONFIG_DIRS[1]/nvim/after, $XDG_CONFIG_HOME/nvim/after") 全域設定。要搜尋這些執行階段檔案的目錄清單:filetype.lua 檔案類型 new-filetype autoload/ 自動載入的腳本 autoload-functions colors/ 配色方案檔案 :colorscheme compiler/ 編譯器檔案 :compiler doc/ 文件 write-local-help ftplugin/ 檔案類型外掛程式 write-filetype-plugin indent/ 縮排腳本 indent-expression keymap/ 按鍵對應檔案 mbyte-keymap lang/ 選單翻譯 :menutrans lua/ Lua 外掛程式 menu.vim GUI 選單 menu.vim pack/ 套件 :packadd parser/ treesitter 語法剖析器 plugin/ 外掛程式腳本 write-plugin queries/ treesitter 查詢 rplugin/ remote-plugin 腳本 spell/ 拼字檢查檔案 spell syntax/ 語法檔案 mysyntaxfile tutor/ 教學檔案 :Tutor
以及使用 :runtime 命令搜尋的任何其他檔案。
預設值設定為搜尋以下位置:1. 您的主目錄,用於個人喜好設定。由 stdpath("config") 提供。$XDG_CONFIG_HOME 2. 根據 xdg,必須包含設定檔的目錄($XDG_CONFIG_DIRS,預設為 /etc/xdg)。這也包含系統管理員的喜好設定。3. 資料主目錄,用於使用者安裝的外掛程式。由 stdpath("data")/site 提供。$XDG_DATA_HOME 4. $XDG_DATA_DIRS 中每個目錄的 nvim/site 子目錄。這適用於系統管理員安裝但不是 Nvim 發行版一部分的外掛程式。XDG_DATA_DIRS 預設為 /usr/local/share/:/usr/share/,因此預計系統管理員會將站點外掛程式安裝到 /usr/share/nvim/site。5. 會話狀態目錄,用於交換、備份目錄、檢視目錄、復原目錄等狀態資料。由 stdpath("state") 提供。$XDG_STATE_HOME 6. $VIMRUNTIME,用於與 Nvim 一起發行的檔案。after-directory
7、8、9、10。在 1、2、3 和 4 的 after/ 子目錄中,以相反的順序排列。這是為了讓喜好設定覆蓋或添加到發行的預設值或全系統設定(很少需要)。
packages-runtimepath
「start」套件也會在這些之後搜尋執行階段檔案 (runtime-search-path),儘管此類套件不會明確地在 &runtimepath 中報告。但是「opt」套件會由 :packadd 明確地新增到 &runtimepath。
請注意,與 'path' 不同,不允許使用「**」等萬用字元。允許使用一般的萬用字元,但會顯著減慢搜尋執行階段檔案的速度。為了加快速度,請盡可能少使用項目並避免使用萬用字元。請參閱 :runtime。範例
set runtimepath=~/vimruntime,/mygroup/vim,$VIMRUNTIME
這將首先使用目錄 "~/vimruntime"(包含您的個人 Nvim 執行階段檔案),然後使用 "/mygroup/vim",最後使用 "$VIMRUNTIME"(預設執行階段檔案)。您可以將一個目錄放在 $VIMRUNTIME 之前,以尋找取代發行執行階段檔案的檔案。您可以將一個目錄放在 $VIMRUNTIME 之後,以尋找添加到發行執行階段檔案的檔案。
使用 --clean 時,不會包含主目錄條目。
'scroll' 'scr' 'scroll' 'scr' 數字 (預設為視窗高度的一半) 視窗本地設定 local-noglobal 使用 CTRL-UCTRL-D 命令捲動的行數。當視窗大小變更時,將設定為視窗中行數的一半。當在設定 'scroll' 選項後啟用 狀態列'tabline' 選項時,可能會發生這種情況。如果您向 CTRL-UCTRL-D 命令提供計數,它將用作 'scroll' 的新值。使用 ":set scroll=0" 重設為視窗高度的一半。
'scrollback' 'scbk' 'scrollback' 'scbk' 數字 (預設為 10000) 緩衝區本地設定。超出可見螢幕範圍的行數上限。如果新行超出此限制,則會刪除頂部的行。最小值為 1,最大值為 100000。僅在 終端機緩衝區中。
注意:當水平調整終端機緩衝區的大小時,不可見且保留在捲動緩衝區中的行不會重新排版。
'scrollbind' 'scb' 'noscrollbind' 'noscb' 'scrollbind' 'scb' 布林值 (預設為關閉) 視窗本地設定。另請參閱 scroll-binding。設定此選項後,捲動目前的視窗也會捲動其他具有 scrollbind 的視窗(也設定了此選項的視窗)。此選項適用於檢視檔案的兩個版本之間的差異,請參閱 'diff'。請參閱 'scrollopt',了解決定如何解釋此選項的選項。當分割視窗以編輯另一個檔案時,此選項大多會重設。這表示「:split | edit file」會產生兩個具有捲動綁定的視窗,但「:split file」則不會。
'scrolljump' 'sj' 'scrolljump' 'sj' 數字 (預設為 1) 全域設定。當游標移出螢幕時(例如,使用「j」),捲動的最小行數。不適用於捲動命令(例如,CTRL-ECTRL-D)。如果您的終端機捲動速度非常慢,這非常有用。當設定為 -1 到 -100 的負數時,這會用作視窗高度的百分比。因此,-50 會捲動視窗高度的一半。
'scrolloff' 'so' 'scrolloff' 'so' 數字 (預設為 0) 全域或視窗本地設定 global-local。在游標上方和下方保持的最小螢幕行數。這會讓您正在工作的位置周圍有一些上下文可見。如果您將其設定為非常大的值 (999),游標行將始終位於視窗中間(檔案開頭或結尾處或長行換行時除外)。使用本地值後,使用以下兩種方法之一返回全域值
setlocal scrolloff<
setlocal scrolloff=-1
有關水平捲動,請參閱 'sidescrolloff'
'scrollopt' 'sbo' 'scrollopt' 'sbo' 字串 (預設值 "ver,jump") 全域 此為以逗號分隔的單字列表,指定 'scrollbind' 視窗的行為。'sbo' 代表 ScrollBind 選項。以下單字可用: ver 為 'scrollbind' 視窗綁定垂直捲動 hor 為 'scrollbind' 視窗綁定水平捲動 jump 適用於垂直捲動時兩個視窗之間的偏移量。此偏移量為綁定視窗中第一行顯示的差異。在視窗中移動時,另一個 'scrollbind' 視窗可能會到達緩衝區開頭之前或結尾之後的位置。不過,當往回移動時,偏移量不會變更,'scrollbind' 視窗會在可能的情況下嘗試捲動到所需的位置。現在當將該視窗設為目前視窗時,對於相對偏移量可以進行兩件事: 1. 當不包含 "jump" 時,會針對新目前視窗中的捲動位置調整相對偏移量。當回到另一個視窗時,將使用新的相對偏移量。 2. 當包含 "jump" 時,會捲動其他視窗以保持相同的相對偏移量。當回到另一個視窗時,它仍會使用相同的相對偏移量。另請參閱 捲動綁定。當 'diff' 模式啟用時,即使沒有 "ver",也會永遠啟用垂直捲動綁定。
'sections' 'sect' 'sections' 'sect' 字串 (預設值 "SHNHH HUnhsh") 全域 指定分隔區段的 nroff 巨集。這些是成對的兩個字母(請參閱 物件移動)。預設會讓區段從 nroff 巨集 ".SH"、".NH"、".H"、".HU"、".nh" 和 ".sh" 開始。
'selection' 'sel' 'selection' 'sel' 字串 (預設值 "inclusive") 全域 此選項定義選取的行為。它僅在視覺模式和選取模式中使用。可能的值
值 超過行 是否包含
old 無 是 inclusive 是 是 exclusive 是 無 "超過行" 表示允許游標定位在行尾後的一個字元。"inclusive" 表示選取的最後一個字元會包含在操作中。例如,當使用 "x" 刪除選取時。當使用 "old" 且 'virtualedit' 允許游標移過行尾時,換行符號仍不會包含在內。請注意,當使用 "exclusive" 且從末尾向後選取時,當從一般模式開始且 'virtualedit' 為空時,您無法包含行的最後一個字元。
'selectmode' 'slm' 'selectmode' 'slm' 字串 (預設值 "") 全域 此為以逗號分隔的單字列表,指定當開始選取時,何時開始選取模式而不是視覺模式。可能的值: mouse 當使用滑鼠時 key 當使用 Shift 特殊鍵時 cmd 當使用 "v"、"V" 或 CTRL-V 時。請參閱 選取模式
'sessionoptions' 'ssop' 'sessionoptions' 'ssop' 字串 (預設值 "blank,buffers,curdir,folds,help,tabpages,winsize,terminal") 全域 變更 :mksession 命令的效果。此為以逗號分隔的單字列表。每個單字都會啟用儲存和還原某些項目
單字 儲存和還原
blank 空白視窗 buffers 隱藏和未載入的緩衝區,而不僅僅是視窗中的緩衝區 curdir 目前目錄 folds 手動建立的摺疊、開啟/關閉的摺疊和本機摺疊選項 globals 以大寫字母開頭且至少包含一個小寫字母的全域變數。僅儲存字串和數字類型。 help 說明視窗 localoptions 視窗或緩衝區的本機選項和對應 (而非本機選項的全域值) options 所有選項和對應 (也包括本機選項的全域值) skiprtp 從選項中排除 'runtimepath''packpath' resize Vim 視窗的大小:'lines''columns' sesdir 工作階段檔案所在的目錄將成為目前目錄 (在不同系統從網路存取專案時很有用) tabpages 所有標籤頁面;若無此選項,則僅還原目前標籤頁面,因此您可以為每個標籤頁面建立一個工作階段 terminal 包含可還原命令的終端機視窗 winpos 整個 Vim 視窗的位置 winsize 視窗大小 slash 已棄用 永遠啟用。在檔案名稱中使用 "/"。 unix 已棄用 永遠啟用。使用 "\n" 行尾符號。
請勿同時包含 "curdir" 和 "sesdir"。當兩者皆未包含時,檔案名稱會儲存為絕對路徑。如果您省略 "options",則在還原工作階段後許多事情都無法正常運作。
'shada' 'sd' E526 E527 E528 'shada' 'sd' 字串 (Win32 的預設值:!,'100,<50,s10,h,rA:,rB: 其他的預設值:!,'100,<50,s10,h) 全域 當非空白時,會在啟動時讀取 shada 檔案,並在結束 Vim 時寫入 (請參閱 shada 檔案)。字串應為以逗號分隔的參數列表,每個參數都包含一個識別特定參數的字元,後面接著指定該參數值的數字或字串。如果省略特定字元,則該參數會使用預設值。以下是識別字元的列表及其值的效果。
字元 值
shada-!
! 當包含時,儲存和還原以大寫字母開頭且不包含小寫字母的全域變數。因此,會儲存 "KEEPTHIS 和 "K_L_M",但不會儲存 "KeepThis" 和 "_K_L_M"。巢狀列表和字典項目可能無法正確讀回,您最後會得到一個空白項目。shada-quote
" 為每個暫存器儲存的最大行數。'<' 項目的舊名稱,缺點是您需要在 " 前面加上反斜線,否則它會被識別為註解的開頭!shada-%
% 當包含時,儲存和還原緩衝區列表。如果 Vim 是使用檔案名稱引數啟動的,則不會還原緩衝區列表。如果 Vim 是在沒有檔案名稱引數的情況下啟動的,則會從 shada 檔案還原緩衝區列表。快速修正 ('buftype')、未列出 ('buflisted')、未命名和卸除式媒體上的緩衝區 (shada-r) 不會儲存。當後面跟著一個數字時,該數字會指定儲存的最大緩衝區數量。如果沒有數字,則會儲存所有緩衝區。shada-'
' 記住標記的先前編輯檔案的最大數量。當 'shada' 非空白時,必須永遠包含此參數。包含此項目也表示會在 shada 檔案中儲存 跳躍列表變更列表shada-/
/ 要儲存的搜尋模式歷程記錄中的最大項目數。如果非零,也會儲存先前的搜尋和取代模式。當未包含時,會使用 'history' 的值。shada-:
: 要儲存的命令列歷程記錄中的最大項目數。當未包含時,會使用 'history' 的值。shada-<
< 為每個暫存器儲存的最大行數。如果為零,則不會儲存暫存器。當未包含時,會儲存所有行。'"' 是此項目的舊名稱。另請參閱下方的 's' 項目:以 KiB 為單位指定的限制。shada-@
@ 要儲存的輸入行歷程記錄中的最大項目數。當未包含時,會使用 'history' 的值。shada-c
c 虛擬選項,保留以實現相容性。沒有實際效果:ShaDa 永遠使用 UTF-8,而且 'encoding' 值也固定為 UTF-8。shada-f
f 是否需要儲存檔案標記。如果為零,則不會儲存檔案標記 ('0 到 '9、'A 到 'Z)。當不存在或非零時,則會全部儲存。'0 用於目前的游標位置 (當結束或執行 :wshada 時)。shada-h
h 停用在載入 shada 檔案時 'hlsearch' 的效果。當未包含時,會取決於自上次搜尋命令後是否已使用 ":nohlsearch"。 shada-n
n shada 檔案的名稱。名稱必須緊接著 'n'。必須在選項的結尾!如果已設定 'shadafile' 選項,則該檔案名稱會覆寫此處透過 'shada' 給定的檔案名稱。開啟檔案時會擴充環境變數,而不是在設定選項時。shada-r
r 卸除式媒體。引數為字串 (最多到下一個 ',')。可以多次給定此參數。每個參數都會指定不儲存標記的路徑開頭。這是為了避免卸除式媒體。對於 Windows,您可以使用 "ra:,rb:"。您也可以將其用於暫存檔案,例如,對於 Unix: "r/tmp"。會忽略大小寫。shada-s
s 項目內容的最大大小 (以 KiB 為單位)。如果為零,則不會儲存任何項目。與 Vim 不同,這適用於所有項目,但緩衝區列表和標頭除外。完整項目大小會減少三個不帶正負號的整數:若使用 s10,則最大項目大小可能為 1 個位元組 (類型:7 位元整數) + 9 個位元組 (時間戳記:最多 64 位元整數) + 3 個位元組 (項目大小:最多 16 位元整數,因為 2^8 < 10240 < 2^16) + 10240 個位元組 (要求的最大項目內容大小) = 10253 個位元組。
範例
set shada='50,<1000,s100,:0,n~/nvim/shada
'50 系統會記住您編輯的最後 50 個檔案的標記。 <1000 系統會記住暫存器的內容 (每個暫存器最多 1000 行)。 s100 系統會略過內容佔用超過 100 KiB 的項目。 :0 系統不會儲存命令列歷程記錄。 n~/nvim/shada 要使用的檔案名稱為 "~/nvim/shada"。 no / 由於未指定 '/',因此會使用預設值,也就是儲存所有搜尋歷程記錄,以及先前的搜尋和取代模式。 no % 系統不會儲存也不會讀回緩衝區列表。 no h 系統會還原 'hlsearch' 反白顯示。
當從空白值設定 'shada' 時,您可以使用 :rshada 載入檔案的內容,此動作不會自動執行。
出於安全原因,無法從 modeline沙箱中設定此選項。
'shadafile' 'sdf' 'shadafile' 'sdf' 字串 (預設值 "") 全域 當非空白時,會覆寫用於 shada (viminfo) 的檔案名稱。當等於 "NONE" 時,不會讀取或寫入 shada 檔案。可以使用 -i 命令列旗標設定此選項。--clean 命令列旗標會將其設為 "NONE"。由於安全性原因,無法從 modeline沙箱設定此選項。
'shell' 'sh' E91 'shell' 'sh' 字串 (預設值為 $SHELL 或 "sh", Win32: "cmd.exe") 全域選項,用於指定執行 ! 和 :! 命令時使用的 shell 名稱。當變更此值時,也請檢查以下選項: 'shellpipe''shellslash''shellredir''shellquote''shellxquote''shellcmdflag'。允許為命令指定引數,例如 "csh -f"。關於如何包含空格和反斜線,請參閱 option-backslash。環境變數會被展開 :set_env
如果 shell 的名稱包含空格,則需要將其用引號括起來。以下為使用引號的範例
set shell=\"c:\program\ files\unix\sh.exe\"\ -f
請注意,每個引號前面都有一個反斜線 (以避免開始註解),並且每個空格前面也有一個反斜線 (以避免結束選項值),因此最好使用 :let-&,如下所示
let &shell='"C:\Program Files\unix\sh.exe" -f'
另請注意,"-f" 並不在引號內,因為它不是命令名稱的一部分。shell-unquoting
關於引號的規則:1. 選項會以空格和 Tab 字元分隔,但引號內的除外:"abc def" 會執行名為 "abc" 的 shell,並帶有額外的引數 "def",而 '"abc def"' 會執行名為 "abc def" 的 shell,不帶任何額外引數 (此處及以下:額外引數意指「除了 'shellcmdflag' 之外的引數」)。2. 引號在選項中可以出現在任何位置和任何次數:'"abc"'、'"a"bc'、'a"b"c'、'ab"c"' 和 '"a"b"c"' 都等同於 "abc"。3. 在引號內,反斜線後接反斜線表示一個反斜線。反斜線後接引號表示一個引號。反斜線後接其他任何字元,則表示反斜線和下一個字元的字面意義:'"a\\b"' 與 "a\b" 相同,'"a\\"b"' 會執行字面上名為 'a"b' 的 shell,'"a\b"' 再次與 "a\b" 相同。4. 在引號外,反斜線始終表示它本身,不能用於跳脫引號:'a\"b"' 與 "a\b" 相同。請注意,此處理是在 :set 完成其自身的跳脫處理後才進行的,因此為了確保程式碼的易讀性,請像上面所示使用 :let-&shell-powershell
若要使用 PowerShell
let &shell = executable('pwsh') ? 'pwsh' : 'powershell'
let &shellcmdflag = '-NoLogo -NonInteractive -ExecutionPolicy RemoteSigned -Command [Console]::InputEncoding=[Console]::OutputEncoding=[System.Text.UTF8Encoding]::new();$PSDefaultParameterValues[''Out-File:Encoding'']=''utf8'';$PSStyle.OutputRendering=''plaintext'';Remove-Alias -Force -ErrorAction SilentlyContinue tee;'
let &shellredir = '2>&1 | %%{ "$_" } | Out-File %s; exit $LastExitCode'
let &shellpipe  = '2>&1 | %%{ "$_" } | tee %s; exit $LastExitCode'
set shellquote= shellxquote=
出於安全原因,無法從 modeline沙箱中設定此選項。
'shellcmdflag' 'shcf' 'shellcmdflag' 'shcf' 字串 (預設值為 "-c"; Windows: "/s /c") 全域選項,傳遞給 shell 以執行 "!" 和 ":!" 命令的旗標;例如,bash.exe -c lscmd.exe /s /c "dir"。對於 MS-Windows,預設值會根據 'shell' 的值進行設定,以減少使用者設定此選項的需求。在 Unix 上,它可以有多個旗標。每個以空白分隔的部分都會作為引數傳遞給 shell 命令。關於如何包含空格和反斜線,請參閱 option-backslash。請參閱 shell-unquoting,其中討論了如何將此選項分隔為多個引數。由於安全考量,此選項無法從 modelinesandbox 中設定。
'shellpipe' 'sp' 'shellpipe' 'sp' 字串 (預設值為 ">", "| tee", "|& tee" 或 "2>&1| tee") 全域選項,用於將 ":make" 命令的輸出放入錯誤檔案的字串。另請參閱 :make_makeprg。關於如何包含空格和反斜線,請參閱 option-backslash。臨時檔案的名稱可以使用 "%s" 來表示 (如果此選項的值中沒有出現 %s,則會自動附加檔案名稱)。對於 MS-Windows,預設值為 "2>&1| tee"。stdout 和 stderr 會儲存在檔案中並回顯到螢幕上。對於 Unix,預設值為 "| tee"。編譯器的 stdout 會儲存在檔案中並回顯到螢幕上。如果 'shell' 選項在初始化後為 "csh" 或 "tcsh",則預設值會變為 "|& tee"。如果 'shell' 選項為 "sh"、"ksh"、"mksh"、"pdksh"、"zsh"、"zsh-beta"、"bash"、"fish"、"ash" 或 "dash",則預設值會變為 "2>&1| tee"。這表示 stderr 也會包含在內。在使用 'shell' 選項之前,會移除路徑,因此 "/bin/sh" 會使用 "sh"。此選項的初始化會在讀取 vimrc 和其他初始化之後進行,以便在設定 'shell' 選項時,'shellpipe' 選項會自動變更,除非之前已明確設定。當 'shellpipe' 設定為空字串時,將不會重新導向 ":make" 的輸出。如果您使用的 'makeprg' 會自行寫入 'makeef',這會很有用。如果您不想要使用管道,但又想要包含 'makeef',請將 'shellpipe' 設定為單一空格。別忘了在空格前面加上反斜線:":set sp=\ "。未來,管道可能會用於篩選,此選項將會過時 (至少對於 Unix 而言)。由於安全考量,此選項無法從 modelinesandbox 中設定。
'shellquote' 'shq' 'shellquote' 'shq' 字串 (預設值為 ""; Windows,當 'shell' 在某處包含 "sh" 時: "\"") 全域選項,將傳遞給 shell 的命令用引號括起來,用於 "!" 和 ":!" 命令。重新導向會保留在引號外。請參閱 'shellxquote' 以包含重新導向。設定這兩個選項可能沒有用處。預設情況下,此為空字串。僅在 Windows 系統上的第三方 shell (例如 MKS Korn Shell 或 bash) 上有用,此時應設定為 "\"。預設值會根據 'shell' 的值進行調整,以減少使用者設定此選項的需求。由於安全考量,此選項無法從 modelinesandbox 中設定。
'shellredir' 'srr' 'shellredir' 'srr' 字串 (預設值為 ">", ">&" 或 ">%s 2>&1") 全域選項,用於將篩選器命令的輸出放入臨時檔案的字串。另請參閱 :!。關於如何包含空格和反斜線,請參閱 option-backslash。臨時檔案的名稱可以使用 "%s" 來表示 (如果此選項的值中沒有出現 %s,則會自動附加檔案名稱)。預設值為 ">"。對於 Unix,如果 'shell' 選項在初始化期間為 "csh" 或 "tcsh",則預設值會變為 ">&"。如果 'shell' 選項為 "sh"、"ksh"、"mksh"、"pdksh"、"zsh"、"zsh-beta"、"bash" 或 "fish",則預設值會變為 ">%s 2>&1"。這表示 stderr 也會包含在內。對於 Win32,會執行 Unix 檢查,並額外檢查 "cmd",這會將預設值變為 ">%s 2>&1"。此外,也會檢查附加 ".exe" 的相同名稱。此選項的初始化會在讀取 vimrc 和其他初始化之後進行,以便在設定 'shell' 選項時,'shellredir' 選項會自動變更,除非之前已明確設定。未來,管道可能會用於篩選,此選項將會過時 (至少對於 Unix 而言)。由於安全考量,此選項無法從 modelinesandbox 中設定。
'shellslash' 'ssl' 'noshellslash' 'nossl' 'shellslash' 'ssl' 布林值 (預設值為關閉) 全域選項,僅適用於 MS-Windows。當設定時,展開檔案名稱時會使用正斜線。當使用類似 Unix 的 shell 而不是 cmd.exe 時,此選項非常有用。仍然可以輸入反斜線,但 Vim 會將其變更為正斜線。請注意,設定或重設此選項對某些現有檔案名稱沒有任何影響,因此最好在開啟任何檔案之前設定此選項,以獲得最佳結果。未來可能會有所變更。'shellslash' 僅在反斜線可用作路徑分隔符時才有效。若要測試是否如此,請使用
if exists('+shellslash')
另請參閱 'completeslash'
'shelltemp' 'stmp' 'noshelltemp' 'nostmp' 'shelltemp' 'stmp' 布林值 (預設值為開啟) 全域選項。當開啟時,會為 shell 命令使用臨時檔案。當關閉時,會使用管道。如果無法使用管道,則無論如何都會使用臨時檔案。使用管道的優點是,沒有人可以讀取臨時檔案,而且 'shell' 命令不需要支援重新導向。使用臨時檔案的優點是,可以偵測檔案類型和編碼。FilterReadPreFilterReadPostFilterWritePreFilterWritePost 自動命令事件在 'shelltemp' 關閉時不會觸發。system() 不會遵循此選項,它始終使用管道。
'shellxescape' 'sxe' 'shellxescape' 'sxe' 字串 (預設值為 "") 全域選項。當 'shellxquote' 設定為 "(" 時,此選項中列出的字元會使用 '^' 字元跳脫。這使得可以使用 cmd.exe 執行大多數外部命令。由於安全考量,此選項無法從 modelinesandbox 中設定。
'shellxquote' 'sxq' 'shellxquote' 'sxq' 字串 (預設值為 "", Windows: "\") 全域設定。用於將傳遞給 shell 的命令加上引號的字元,適用於 "!" 和 ":!" 命令。包含重新導向。請參閱 'shellquote' 以排除重新導向。同時設定這兩個選項可能沒有意義。當值為 '(' 時,會附加 ')'。當值為 '"(' 時,會附加 ')"'。當值為 '(' 時,另請參閱 'shellxescape'。基於安全考量,此選項無法從 modelinesandbox 設定。
'shiftround' 'sr' 'noshiftround' 'nosr' 'shiftround' 'sr' 布林值 (預設值為關閉) 全域設定。將縮排調整為 'shiftwidth' 的倍數。適用於 > 和 < 命令。在插入模式中,CTRL-TCTRL-D 總是將縮排調整為 'shiftwidth' 的倍數(此行為與 Vi 相容)。
'shiftwidth' 'sw' 'shiftwidth' 'sw' 數值 (預設值為 8) 緩衝區的區域設定。用於每次 (自動) 縮排的空格數。用於 'cindent'>><< 等。當值為零時,將使用 'tabstop' 的值。使用 shiftwidth() 函式取得實際的 shiftwidth 值。
'shortmess' 'shm' E1336 'shortmess' 'shm' 字串 (預設值為 "ltToOCF") 全域設定。此選項有助於避免因檔案訊息而導致的所有 hit-enter 提示,例如使用 CTRL-G,並避免一些其他訊息。它是一個旗標列表
旗標 存在時的含義
l 使用 "999L, 888B" 而不是 "999 lines, 888 bytes" shm-l m 使用 "[+]" 而不是 "[Modified]" shm-m
r 使用 "[RO]" 而不是 "[readonly]" shm-r
w 對於檔案寫入訊息使用 "[w]" 而不是 "written" shm-w,並對 ':w >> file' 命令使用 "[a]" 而不是 "appended" a 上述所有縮寫 shm-a
o 覆蓋寫入檔案的訊息,並隨後 shm-o 覆蓋讀取檔案的訊息(對於 ":wn" 或當 'autowrite' 開啟時很有用) O 讀取檔案的訊息會覆蓋任何先前的 shm-O 訊息;也適用於快速修復訊息 (例如,":cn") s 不顯示 "search hit BOTTOM, continuing at TOP" 或 shm-s "search hit TOP, continuing at BOTTOM" 訊息;當使用搜尋計數時,不在計數訊息前顯示 "W" (請參閱下方的 shm-S) t 如果檔案訊息太長而無法顯示在命令列上,則截斷訊息的開頭 shm-t,最左邊的欄位會出現 "<";在 Ex 模式下會忽略 T 如果其他訊息太長而無法顯示在命令列上,則截斷訊息的中央 shm-T;中央會出現 "...";在 Ex 模式下會忽略 W 在寫入檔案時,不顯示 "written" 或 "[w]" shm-W A 當找到現有的 shm-A 交換檔案時,不顯示 "ATTENTION" 訊息 I 在啟動 Vim 時,不顯示介紹訊息 shm-I
請參閱 :intro c 不顯示 ins-completion-menu 訊息;例如 shm-c
範例:「-- XXX completion (YYY)」、「match 1 of 2」、「The only match」、「Pattern not found」、「Back at original」等等。 C 不顯示掃描 ins-completion shm-C 項目時的訊息,例如「scanning tags」 q 在錄製巨集時,不顯示「recording @a」shm-q F 編輯檔案時,不顯示檔案資訊,例如 shm-F 對於該命令使用 :silent;請注意,這也會影響來自 'autoread' 重新載入的訊息 S 搜尋時不顯示搜尋計數訊息,例如 shm-S "[1/5]"。當不存在 "S" 旗標時(例如,顯示搜尋計數),「search hit BOTTOM, continuing at TOP」和「search hit TOP, continuing at BOTTOM」訊息僅透過搜尋計數統計資料之前的 "W" (提示:Wrapped) 字母表示。
這讓您可以避免在緩衝區之間切換時需要按下 <Enter>,但仍盡可能在可用空間中提供有用的訊息。若要取得 'shm' 為空時會收到的完整訊息,請使用 ":file!"。有用的值: shm= 不縮寫訊息。 shm=a 縮寫,但不損失資訊。 shm=at 縮寫,並在必要時截斷訊息。
'showbreak' 'sbr' E595 'showbreak' 'sbr' 字串 (預設值為 "") 全域設定或視窗的區域設定 global-local 將此字串放在換行的行的開頭。有用的值為 "> " 或 "+++ "。
let &showbreak = "> "
let &showbreak = '+++ '
只允許使用可列印的單元格字元,不包括 <Tab> 和逗號(在未來版本中,逗號可能用於分隔顯示在行尾和開頭的部分)。hl-NonText 高亮顯示群組決定高亮顯示。請注意,showbreak 後面的 Tab 字元會以不同的方式顯示。如果您想要讓 'showbreak' 出現在行號之間,請將 "n" 旗標新增到 'cpoptions'。視窗的區域設定會覆蓋全域設定。如果已設定全域值,而您希望目前視窗中沒有值,請使用 NONE。
setlocal showbreak=NONE
'showcmd' 'sc' 'noshowcmd' 'nosc' 'showcmd' 'sc' 布林值 (預設值為開啟) 全域設定。在螢幕的最後一行顯示(部分)命令。如果您的終端機速度較慢,請關閉此選項。在可視模式下,會顯示選取區域的大小
當選取一行中的字元時,會顯示字元數。如果位元組數不同,也會顯示:「2-6」表示兩個字元和六個位元組。
當選取多於一行時,會顯示行數。
當選取區塊時,會顯示螢幕字元的大小:{lines}x{columns}。可以使用 'showcmdloc' 選項在其他位置顯示此資訊,當 'cmdheight' 為 0 時很有用。
'showcmdloc' 'sloc' 'showcmdloc' 'sloc' 字串 (預設值為 "last") 全域設定。此選項可用於在其他位置顯示(部分)輸入的命令。可能的值有: last 螢幕的最後一行(預設值)。 statusline 目前視窗的狀態列。 tabline 如果啟用 'showtabline',則為螢幕的第一行。將此選項設定為 "statusline" 或 "tabline" 表示每次命令變更時都會重新繪製這些選項,這可能會在每次按下按鍵時發生。'statusline' 項目 %S 可用於 'statusline''tabline' 中以放置文字。若沒有自訂的 'statusline''tabline',它將顯示在方便的位置。
'showfulltag' 'sft' 'noshowfulltag' 'nosft' 'showfulltag' 'sft' 布林值 (預設值為關閉) 全域設定。當在插入模式下從標籤檔案完成單字時(請參閱 ins-completion),將標籤名稱和搜尋模式的整理形式(如果有的話)都顯示為可能的比對。因此,如果您比對了一個 C 函式,您可以看到所需的參數範本(如果允許編碼風格)。請注意,這與在 'completeopt' 中使用 "longest" 時無法順利運作,因為搜尋模式的比對可能與輸入的文字不符。
'showmatch' 'sm' 'noshowmatch' 'nosm' 'showmatch' 'sm' 布林值 (預設值為關閉) 全域設定。當插入括號時,會短暫跳至相符的括號。只有在螢幕上可看到比對時才會跳躍。顯示比對的時間可以使用 'matchtime' 設定。如果沒有比對,會發出嗶聲(無論是否看得到比對)。當 'm' 旗標未包含在 'cpoptions' 中時,輸入字元會立即將游標移回其所屬的位置。請參閱 'guicursor' 中的 "sm" 欄位,以設定顯示比對時的游標形狀和閃爍。可以使用 'matchpairs' 選項指定要顯示比對的字元。'rightleft''revins' 用於尋找相反的比對。另請參閱 matchparen 外掛程式,以在高亮顯示周圍移動時的比對 pi_paren.txt 請注意: 短格式的使用評級為 PG。
'showmode' 'smd' 'noshowmode' 'nosmd' 'showmode' 'smd' 布林值 (預設值為開啟) 全域設定。如果在插入、取代或可視模式下,會在最後一行放置訊息。hl-ModeMsg 高亮顯示群組決定高亮顯示。當 'cmdheight' 為零時,此選項無效。
'showtabline' 'stal' 'showtabline' 'stal' 數字 (預設值 1) 全域 此選項的值指定何時顯示帶有索引標籤頁面標籤的行: 0:永不顯示 1:僅在至少有兩個索引標籤頁面時顯示 2:始終顯示 這適用於索引標籤頁面的 GUI 和非 GUI 實作。 有關索引標籤頁面的更多資訊,請參閱 tab-page
'sidescroll' 'ss' 'sidescroll' 'ss' 數字 (預設值 1) 全域 水平滾動的最小列數。 僅在 'wrap' 選項關閉且游標移出螢幕時使用。 當其為零時,游標將放置在螢幕中間。 當使用速度較慢的終端時,請將其設定為較大的數字或 0。 不用於 "zh" 和 "zl" 命令。
'sidescrolloff' 'siso' 'sidescrolloff' 'siso' 數字 (預設值 0) 全域或視窗本地 全域-本地 如果設定了 'nowrap',則游標左右兩側要保留的最小螢幕欄數。 如果 'sidescroll' 也設定為非零值,則將此選項設定為大於 0 的值,可以在水平滾動的行中看到一些上下文(行首除外)。 將此選項設定為較大的值(例如 999)的效果是將游標水平居中於視窗中,只要不要太靠近行首即可。 在使用本地值後,請使用以下兩種方法之一返回全域值
setlocal sidescrolloff<
setlocal sidescrolloff=-1
範例:將此選項與 'sidescroll''listchars' 一起嘗試,如下列範例所示,永遠不要讓游標移動到「extends」字元上
set nowrap sidescroll=1 listchars=extends:>,precedes:<
set sidescrolloff=1
'signcolumn' 'scl' 'signcolumn' 'scl' 字串 (預設值 "auto") 視窗本地 何時以及如何繪製符號欄。 有效值為: "auto" 僅在有符號要顯示時 "auto:[1-9]" 調整大小以容納最多指定數字 (最多 9 個) 的多個符號,例如 "auto:4" "auto:[1-8]-[2-9]" 調整大小以容納最多指定最大數字 (最多 9 個) 的多個符號,同時保留至少指定最小數字 (最多 8 個) 的固定空間。 最小數字應始終小於最大數字,例如 "auto:2-5" "no" 永不顯示 "yes" 始終顯示 "yes:[1-9]" 始終顯示,並為最多指定數字 (最多 9 個) 的符號保留固定空間,例如 "yes:3" "number" 在 'number' 欄中顯示符號。 如果數字欄不存在,則行為類似於 "auto"。
'smartcase' 'scs' 'nosmartcase' 'noscs' 'smartcase' 'scs' 布林值 (預設值為 off) 全域 如果搜尋模式包含大寫字元,則覆寫 'ignorecase' 選項。 僅當輸入搜尋模式且 'ignorecase' 選項開啟時使用。 用於命令 "/"、"?"、"n"、"N"、":g" 和 ":s"。 不用於 "*"、"#"、"gd"、標籤搜尋等。 在 "*" 和 "#" 之後,您可以通過執行 "/" 命令、從歷史記錄中回溯搜尋模式並按下 <Enter> 來使用 'smartcase'
'smartindent' 'si' 'nosmartindent' 'nosi' 'smartindent' 'si' 布林值 (預設值為 off) 緩衝區本地 在開始新行時進行智慧自動縮排。 適用於類似 C 的程式,但也可以用於其他語言。 'cindent' 執行類似的操作,在大多數情況下效果更好,但更嚴格,請參閱 C-indenting。 當 'cindent' 開啟或設定了 'indentexpr' 時,設定 'si' 無效。 'indentexpr' 是一個更進階的替代方案。 通常,在使用 'smartindent' 時,也應開啟 'autoindent'。 會自動插入縮排
在以 "{" 結尾的行之後。
在以 'cinwords' 中的關鍵字開頭的行之後。
在以 "}" 開頭的行之前(僅限於 "O" 命令)。 當在新行中輸入 '}' 作為第一個字元時,該行的縮排與相符的 "{" 相同。 當在新行中輸入 '#' 作為第一個字元時,將移除該行的縮排,'#' 放在第一欄中。 會為下一行恢復縮排。 如果您不希望這樣,請使用此映射: ":inoremap # X^H#",其中 ^H 是使用 CTRL-V CTRL-H 輸入的。 當使用 ">>" 命令時,以 '#' 開頭的行不會向右移動。
'smarttab' 'sta' 'nosmarttab' 'nosta' 'smarttab' 'sta' 布林值 (預設值為 on) 全域 當開啟時,行首的 <Tab> 會根據 'shiftwidth' 插入空格。 'tabstop''softtabstop' 用於其他位置。 <BS> 將刪除行首的 'shiftwidth' 的空格。 當關閉時,<Tab> 始終根據 'tabstop''softtabstop' 插入空格。 'shiftwidth' 僅用於向左或向右移動文字 shift-left-right。 插入的內容(<Tab> 或空格)取決於 'expandtab' 選項。 另請參閱 ins-expandtab。 當未設定 'expandtab' 時,會通過使用 <Tab> 來最小化空格數。
'smoothscroll' 'sms' 'nosmoothscroll' 'nosms' 'smoothscroll' 'sms' 布林值 (預設值為 off) 視窗本地 滾動適用於螢幕行。 當設定了 'wrap' 且視窗中的第一行換行時,它的部分內容可能不可見,就好像它在視窗上方一樣。 "<<<" 顯示在第一行的開頭,並以 hl-NonText 突出顯示。 您可能還想將 "lastline" 新增到 'display' 選項,以顯示盡可能多的最後一行。 注意:部分實作,尚未適用於 gjgk
'softtabstop' 'sts' 'softtabstop' 'sts' 數字 (預設值 0) 緩衝區本地 在執行編輯操作(例如插入 <Tab> 或使用 <BS>)時,<Tab> 計算的空格數。 它「感覺」就像正在插入 <Tab>,而實際上使用的是空格和 <Tab> 的組合。 這對於將 'ts' 設定保持在其 8 的標準值,同時能夠像將其設定為 'sts' 一樣進行編輯非常有用。 但是,諸如 "x" 之類的命令仍然適用於實際字元。 當 'sts' 為零時,此功能關閉。 當 'sts' 為負數時,將使用 'shiftwidth' 的值。 另請參閱 ins-expandtab。 當未設定 'expandtab' 時,會通過使用 <Tab> 來最小化空格數。 'cpoptions' 中的 'L' 旗標會變更在設定 'list' 時如何使用 Tab 鍵。
如果將 'varsofttabstop' 設定為空字串以外的任何內容,則會忽略 'softtabstop' 的值。
'spell' 'nospell' 'spell' 布林值 (預設值為 off) 視窗本地 當開啟時,將執行拼寫檢查。 請參閱 spell。 語言由 'spelllang' 指定。
'spellcapcheck' 'spc' 'spellcapcheck' 'spc' 字串 (預設值 "[.?!]\_[\])'"\t ]\+") 緩衝區本地 用於定位句子結尾的模式。 將檢查後面的單字是否以大寫字母開頭。 如果不是,則會使用 SpellCap hl-SpellCap 突出顯示(除非該單字的拼寫也有誤)。 如果不想要此檢查,請將此選項設為空。 僅在設定了 'spell' 時使用。 請小心使用特殊字元,請參閱 option-backslash,了解如何包含空格和反斜線。 若要根據語言自動設定此選項,請參閱 set-spc-auto
'spellfile' 'spf' 'spellfile' 'spf' 字串 (預設值 "") 緩衝區本地 單字列表檔案的名稱,其中新增了用於 zgzw 命令的單字。 它必須以 ".{encoding}.add" 結尾。 您需要包含路徑,否則該檔案將放置在目前目錄中。 該路徑可能包含 'isfname'、' '、','、'@' 和 ':' 中的字元。E765
它也可能是以逗號分隔的名稱列表。 可以在 zgzw 命令之前使用計數來存取每個檔案。 這允許使用個人單字列表檔案和專案單字列表檔案。 當此選項為空時,新增單字時,Vim 將為您設定它:使用 'runtimepath' 中第一個可寫入的目錄。 如果還沒有 "spell" 目錄,則會建立它。 對於檔案名稱,將使用 'spelllang' 中出現的第一個語言名稱,忽略地區。 產生的 ".spl" 檔案將用於拼寫檢查,它不必出現在 'spelllang' 中。 通常,一個檔案用於所有地區,但如果需要,您可以新增地區名稱。 但是,它只會在將 'spellfile' 設定為該名稱時使用,對於 'spelllang' 中的條目,只會找到沒有地區名稱的檔案。 出於安全原因,無法從 modelinesandbox 中設定此選項。
'spelllang' 'spl' 'spelllang' 'spl' 字串 (預設值 "en") 緩衝區本地 以逗號分隔的單字列表名稱。 當 'spell' 選項開啟時,將針對這些語言執行拼寫檢查。 範例
set spelllang=en_us,nl,medical
這表示可以辨識美式英語、荷蘭語和醫學詞彙。無法辨識的單字會被反白顯示。單字列表名稱必須由字母數字字元、破折號或底線組成。不應包含逗號或句點。建議使用破折號將兩個字母的語言名稱與規格分開。因此,「en-rare」用於表示罕見的英文單字。地區名稱必須放在最後,格式為「_xx」,其中「xx」是兩個字母的小寫地區名稱。您可以列出多個地區來使用:「en_us,en_ca」同時支援美國和加拿大英語,但不支援澳洲、紐西蘭或英國的特定單字。(注意:目前 en_au 和 en_nz 字典比 en_ca、en_gb 和 en_us 舊)。如果包含名稱「cjk」,則不會對東亞字元進行拼字檢查。這在編輯同時包含亞洲文字的文本時很有用。請注意,「medical」字典並不存在,它只是一個較長名稱的範例。E757
作為特殊情況,可以按原樣給定 .spl 檔案的名稱。名稱中的第一個「_xx」會被移除並用作地區名稱(_xx 是一個底線,後面跟著兩個字母,然後是非字母)。這主要是為了測試目的。您必須確保使用正確的編碼,Vim 不會檢查它。相關拼字檔案的尋找方式在此說明:spell-load
如果 spellfile.vim 外掛程式處於活動狀態,並且您使用的語言名稱是 Vim 在 'runtimepath' 中找不到 .spl 檔案的,則該外掛程式會詢問您是否要下載該檔案。
成功設定此選項後,Vim 會在 'runtimepath' 中讀取「spell/LANG.vim」檔案。「LANG」是 'spelllang' 的值,直到第一個不是 ASCII 字母或數字且不是破折號的字元為止。另請參閱 set-spc-auto
'spelloptions' 'spo' 'spelloptions' 'spo' 字串(預設為 "")緩衝區局部設定。用於拼字檢查的逗號分隔選項列表:camel 當單字為 CamelCased 時,假設「Cased」是單獨的單字:單字中小寫字母後面的每個大寫字元都表示一個新單字的開始。noplainbuffer 只有在啟用 'syntax' 或在緩衝區內設定了 extmark 時,才對緩衝區進行拼字檢查。在這種情況下,只會對緩衝區的指定區域進行拼字檢查。
'spellsuggest' 'sps' 'spellsuggest' 'sps' 字串(預設為「best」)全域設定。用於拼字建議的方法。z= 命令和 spellsuggest() 函數都使用這些方法。這是一個逗號分隔的項目列表
best 最適合英文的內部方法。尋找像「fast」這樣的變更,並使用一些聽起來類似的評分來改善排序。
double 使用兩種方法並混合結果的內部方法。第一種方法是「fast」,另一種方法計算建議聽起來與錯誤單字的相似程度。這僅在語言指定聲音折疊時才有效。可能很慢且不一定會產生更好的結果。
fast 僅檢查簡單變更的內部方法:字元插入/刪除/交換。對於簡單的輸入錯誤效果很好。
{number}z= 列出的最大建議數量。不適用於 spellsuggest()。建議的數量永遠不會超過 'lines' 的值減 2。
timeout:{millisec} 將搜尋建議的時間限制為 {millisec} 毫秒。適用於以下方法。省略時,限制為 5000。為負數時,沒有限制。
file:{filename} 讀取檔案 {filename},該檔案必須有兩欄,以斜線分隔。第一欄包含錯誤的單字,第二欄包含建議的正確單字。範例
theribal/terrible
將其用於常見的錯誤,這些錯誤不會出現在內部方法建議列表的頂部。沒有斜線的行會被忽略,請將其用於註解。第二欄中的單字必須正確,否則將不會使用。如果某個單字目前標記為拼字錯誤,請將該單字新增到「.add」檔案。該檔案適用於所有語言。
expr:{expr} 評估運算式 {expr}。使用函數來避免空格問題。最好呼叫沒有引數的函數,請參閱 expr-option-functionv:val 儲存拼錯的單字。運算式必須評估為清單的清單,每個清單都包含建議和分數。範例
[[the, 33], [that, 44]]
設定 'verbose' 並使用 z= 來查看內部方法使用的分數。分數越低越好。如果您暫時將 'spellsuggest' 設定為排除「expr:」部分,這可能會呼叫 spellsuggest()。錯誤會被靜默忽略,除非您將 'verbose' 選項設定為非零值。
只能使用「best」、「double」或「fast」中的一種。其他選項可以以任何順序出現多次。範例
set sps=file:~/.config/nvim/sugg,best,expr:MySuggest()
出於安全原因,無法從 modeline沙箱中設定此選項。
'splitbelow' 'sb' 'nosplitbelow' 'nosb' 'splitbelow' 'sb' 布林值(預設為關閉)全域設定。啟用時,分割視窗會將新視窗放在目前視窗下方。:split
'splitkeep' 'spk' 'splitkeep' 'spk' 字串(預設為「cursor」)全域設定。此選項的值決定了開啟、關閉或調整水平分割大小時的捲動行為。
可能的值為:cursor 維持相同的相對游標位置。screen 將文字保留在相同的螢幕行上。topline 維持相同的頂部行。
對於「screen」和「topline」值,必要時會變更游標位置。在這種情況下,跳躍列表將使用先前的游標位置填入。「screen」在啟用 'wrap' 時,文字並非總是能保留在相同的螢幕行上。
'splitright' 'spr' 'nosplitright' 'nospr' 'splitright' 'spr' 布林值(預設為關閉)全域設定。啟用時,分割視窗會將新視窗放在目前視窗右側。:vsplit
'startofline' 'sol' 'nostartofline' 'nosol' 'startofline' 'sol' 布林值(預設為關閉)全域設定。在「on」時,下面列出的命令會將游標移動到該行的第一個非空白字元。關閉時,游標會保留在相同的欄位中(如果可能)。這適用於以下命令
CTRL-DCTRL-UCTRL-BCTRL-F、「G」、「H」、「M」、「L」、「gg」
使用行式運算子(operator-resulting-pos)的「d」、「<<」、「==」和「>>」
帶有計數的「%」
變更緩衝區的命令(CTRL-^、:bnext、:bNext 等)
只有行號的 Ex 命令,例如「:25」或「:+」。在變更緩衝區的命令的情況下,游標會放置在上次編輯緩衝區時所在的欄位。
'statuscolumn' 'stc' 'statuscolumn' 'stc' 字串(預設為 "")視窗局部設定。如果非空白,則此選項決定視窗側邊區域的內容,通常包含摺疊、標記和數字欄。此選項的格式類似於 'statusline' 的格式。
'statusline' 格式中的某些項目對於 'statuscolumn' 是不同的
%l 目前繪製行的行號欄 %s 目前繪製行的標記欄 %C 目前繪製行的摺疊欄
'statuscolumn' 的寬度遵循預設欄的寬度,並適應 'numberwidth''signcolumn''foldcolumn' 選項值(無論標記和摺疊項目是否存在)。此外,'statuscolumn' 會隨著評估格式字串的大小而增大,直到某個點(遵循預設摺疊、標記和數字欄的最大大小)。只有在緩衝區中的行數變更,或設定了 'statuscolumn' 選項時才會縮小。
v:lnum 變數保留要繪製的行號。v:relnum 變數保留要繪製的相對行號。v:virtnum 變數在繪製虛擬行時為負數,在繪製實際緩衝區行時為零,在繪製緩衝區行的換行部分時為正數。
使用 v:relnum 時,請記住,除非設定了 'relativenumber',否則單獨的游標移動不會導致 'statuscolumn' 更新。
注意:也支援 %@ 按一下執行函數項目,但指定函數對於同一欄中的每一列都相同。它不能透過動態 'statuscolumn' 格式切換,處理常式在撰寫時應考慮到這一點。
範例
" Line number with bar separator and click handlers:
set statuscolumn=%@SignCb@%s%=%T%@NumCb@%l│%T
" Line numbers in hexadecimal for non wrapped part of lines:
let &stc='%=%{v:virtnum>0?"":printf("%x",v:lnum)} '
" Human readable line numbers with thousands separator:
let &stc='%{substitute(v:lnum,"\\d\\zs\\ze\\'
           . '%(\\d\\d\\d\\)\\+$",",","g")}'
" Both relative and absolute line numbers with different
" highlighting for odd and even relative numbers:
let &stc='%#NonText#%{&nu?v:lnum:""}' .
 '%=%{&rnu&&(v:lnum%2)?"\ ".v:relnum:""}' .
 '%#LineNr#%{&rnu&&!(v:lnum%2)?"\ ".v:relnum:""}'
警告:此運算式會針對每個螢幕行進行評估,因此定義一個昂貴的運算式可能會對渲染效能產生負面影響。
'statusline' 'stl' E540 E542 'statusline' 'stl' 字串(預設為 "")全域或視窗局部設定。global-local 如果非空白,則此選項決定狀態行的內容。另請參閱 status-line
該選項由以標準文字穿插的 printf 樣式 '%' 項目組成。每個狀態行項目的格式為:%-0{minwid}.{maxwid}{item} 除 {item} 之外的所有欄位都是選用的。單個百分比符號可以寫成「%%」。
如果選項以「%!」開頭,則將其用作運算式,進行評估,並將結果用作選項值。範例
set statusline=%!MyStatusLine()
g:statusline_winid 變數將設定為狀態行所屬視窗的 視窗 ID。結果可以包含也將被評估的 %{} 項目。請注意,「%!」運算式是在目前視窗和緩衝區的上下文中評估的,而 %{} 項目是在狀態行所屬視窗的上下文中評估的。
如果在評估選項時發生錯誤,則會將其設為空白,以避免進一步的錯誤。否則,螢幕更新會循環。如果結果包含不可列印的字元,則結果是不可預測的。
請注意,設定此選項(且 'laststatus' 為 2 或 3)時,'ruler' 的唯一作用是控制 CTRL-G 的輸出。
欄位含義
- 左對齊項目。當 minwid 大於項目的長度時,預設為右對齊。0 數字項目中的前導零。被「-」覆寫。minwid 項目的最小寬度,由「-」和「0」設定的填補。值必須小於或等於 50。maxwid 項目的最大寬度。文字項目會在左側截斷為「<」。數字項目將向下移動到 maxwid-2 位數,然後是「>」數字,其中數字是缺少的位數,很像指數符號。item 以下說明的一個字母代碼。
以下說明狀態列中可能出現的項目。每個「項目」的第二個字元表示類型:N 代表數字,S 代表字串,F 代表以下描述的旗標。
不適用
項目意義
f S 緩衝區中檔案的路徑,可以是使用者輸入的路徑或是相對於目前目錄的路徑。F S 緩衝區中檔案的完整路徑。t S 緩衝區中檔案的檔案名稱(尾部)。m F 修改旗標,文字為「[+]」;如果'modifiable'選項關閉,則為「[-]」。M F 修改旗標,文字為「,+」或「,-」。r F 唯讀旗標,文字為「[RO]」。R F 唯讀旗標,文字為「,RO」。h F 說明緩衝區旗標,文字為「[help]」。H F 說明緩衝區旗標,文字為「,HLP」。w F 預覽視窗旗標,文字為「[Preview]」。W F 預覽視窗旗標,文字為「,PRV」。y F 緩衝區中檔案的類型,例如「[vim]」。請參閱'filetype'。Y F 緩衝區中檔案的類型,例如「,VIM」。請參閱'filetype'。q S 「[快速修復列表]」、「[位置列表]」或空白。k S 當使用:lmap對應時,「b:keymap_name」的值或'keymap'的值:「<keymap>」。n N 緩衝區編號。b N 游標下字元的值。B N 如上,以十六進位表示。o N 游標下位元組在檔案中的位元組編號,第一個位元組為 1。助記:從檔案開頭的偏移量(加一)。O N 如上,以十六進位表示。l N 行號。L N 緩衝區中的行數。c N 欄號(位元組索引)。v N 虛擬欄號(螢幕欄)。V N 虛擬欄號,表示為 -{num}。如果與 'c' 相等則不顯示。p N 檔案中已處理的行百分比,如同CTRL-G。P S 顯示視窗中已處理的檔案百分比。這與'ruler'所描述的百分比類似。長度固定為 3,除非經過翻譯。S S 'showcmd'的內容,請參閱'showcmdloc'。a S 參數列表狀態,如同預設標題。({current} / {max}) 如果參數檔案計數為零或一,則為空白。 { NF 評估「%{」和「}」之間的表達式並替換結果。請注意,在結尾「}」之前沒有「%」。表達式不能包含「}」字元,呼叫函式可以解決這個問題。請參閱下方stl-%{{% - 這幾乎與「{」相同,只是表達式的結果會重新評估為狀態列格式字串。因此,如果表達式的返回值包含「%」項目,它們將被展開。表達式可以包含「}」字元,表達式的結尾用「%}」表示。例如
func! Stl_filename() abort
    return "%t"
endfunc
stl=%{Stl_filename()} 的結果為 "%t" stl=%{%Stl_filename()%} 的結果為 "目前檔案的名稱" %} - 「{%」表達式的結尾 ( - 項目群組的開始。可用於設定區段的寬度和對齊方式。必須在某處接著%) 。) - 項目群組的結尾。不允許使用寬度欄位。T N 用於'tabline':標籤頁 N 標籤的開始。使用 %T 或 %X 結束標籤。使用滑鼠左鍵點擊此標籤會切換到指定的標籤頁,而使用滑鼠中鍵點擊則會關閉指定的標籤頁。X N 用於'tabline':關閉標籤頁 N 標籤的開始。使用 %X 或 %T 結束標籤,例如:%3Xclose%X。使用 %999X 表示「關閉目前標籤頁」標籤。使用滑鼠左鍵點擊此標籤會關閉指定的標籤頁。@ N 執行函式標籤的開始。使用 %X 或 %T 結束標籤,例如:%10@[email protected]%X。使用滑鼠點擊此標籤將執行指定的函式:在範例中,當使用滑鼠左鍵在「foo.c」上點擊一次時,將執行 SwitchBuffer(10, 1, 'l', ' ') 表達式。指定的函式會依序接收以下參數:1. minwid 欄位值,如果未指定 N 則為零 2. 偵測多次點擊的滑鼠點擊次數 3. 使用的滑鼠按鈕:「l」、「r」或「m」分別代表左鍵、右鍵或中鍵;不應依賴第三個參數僅為「l」、「r」或「m」:其他包含僅 ASCII 小寫字母的非空字串值也可能適用於其他滑鼠按鈕 4. 按下的修飾鍵:如果按下 shift 修飾鍵,則字串包含「s」,按下 control 則包含「c」,按下 alt 則包含「a」,按下 meta 則包含「m」;目前如果未按下修飾鍵,字串則包含空格,但不應依賴空格的存在或修飾鍵的特定順序:使用 stridx() 來測試是否存在某個修飾鍵;字串保證只包含 ASCII 字母和空格,每個修飾鍵一個字母;可能也會出現「?」修飾鍵,但它的出現是一個錯誤,表示新增了新的滑鼠按鈕識別,但沒有修改對此標籤滑鼠點擊做出反應的程式碼。使用 getmousepos().winid 在指定的函式中取得點擊項目的對應視窗 ID。< - 如果行太長,從何處截斷。預設為從開頭截斷。不允許使用寬度欄位。= - 對齊區段之間的分隔點。每個區段將以相等數量的空格分隔。使用一個 %=,其後面的內容將靠右對齊。使用兩個 %=,則有一個中間部分,其左右兩邊都有空白。不允許使用寬度欄位。# - 設定醒目提示群組。名稱必須跟在後面,然後再次出現 #。因此,針對醒目提示群組 HLname 使用 %#HLname#。也會對非目前視窗的狀態列使用相同的醒目提示。* - 將醒目提示群組設定為 User{N},其中 {N} 取自 minwid 欄位,例如 %1*。使用 %* 或 %0* 還原正常醒目提示。User{N} 和 StatusLine 之間的差異將應用於非目前視窗的狀態列 StatusLineNC。數字 N 必須介於 1 和 9 之間。請參閱 hl-User1..9
當顯示旗標時,如果該旗標緊接著純文字,Vim 會移除開頭的逗號(如果有)。當旗標像以下範例中那樣使用時,這會產生良好的顯示效果。
當群組中的所有項目都變成空字串(即未設定的旗標)且未針對該群組設定 minwid 時,整個群組將變成空的。當未設定任何旗標時,這會使像以下這樣的群組完全從狀態列中消失。
set statusline=...%(\ [%M%R%H]%)...
請注意,每次顯示狀態列時都會評估表達式。stl-%{ g:actual_curbuf g:actual_curwin 評估 %{} 時,目前的緩衝區和目前視窗將暫時設定為目前正在繪製其狀態列的視窗(和緩衝區)的緩衝區和視窗。表達式將在此環境中評估。變數「g:actual_curbuf」會設定為實際目前緩衝區的 bufnr() 編號,而「g:actual_curwin」會設定為實際目前視窗的視窗 ID。這些值為字串。
如果從模型行設定,'statusline'選項將在沙箱中評估,請參閱沙箱選項。當'modelineexpr'關閉時,無法在模型行中設定此選項。
在評估'statusline'時,不允許變更文字或跳到另一個視窗textlock
如果您想要狀態列更新時未更新(例如,在設定表達式中使用的變數之後),可以使用 :redrawstatus 強制更新。
所有數字的結果都被視為顯示用的數字。否則,結果會被視為旗標文字,並套用上述規則。
請留意表達式中的錯誤。它們可能會使 Vim 無法使用!如果您遇到困難,請按住「:」或「Q」以取得提示,然後退出並使用「vim --clean」編輯您的 vimrc 或其他任何檔案以使其正常運作。
範例:模擬設定了'ruler'的標準狀態列
set statusline=%<%f\ %h%w%m%r%=%-14.(%l,%c%V%)\ %P
類似,但加入游標下字元的 ASCII 值(如「ga」)
set statusline=%<%f%h%m%r%=%b\ 0x%B\ \ %l,%c%V\ %P
顯示位元組計數和位元組值,修改旗標為紅色。
set statusline=%<%f%=\ [%1*%M%*%n%R%H]\ %-19(%3l,%02c%03V%)%O'%02b'
hi User1 term=inverse,bold cterm=inverse,bold ctermfg=red
如果載入壓縮檔案,則顯示 ,GZ 旗標
set statusline=...%r%{VarExists('b:gzflag','\ [GZ]')}%h...
:autocmd
let b:gzflag = 1
以及
unlet b:gzflag
並定義此函式
function VarExists(var, val)
    if exists(a:var) | return a:val | else | return '' | endif
endfunction
'suffixes' 'su' 'suffixes' 'su' 字串(預設為「.bak,~,.o,.h,.info,.swp,.obj」)全域。當多個檔案符合萬用字元時,具有這些後綴的檔案會獲得較低的優先順序。請參閱後綴。逗號可以用於分隔後綴。逗號後的空格會被忽略。點號也被視為後綴的開頭。為了避免點號或逗號被識別為分隔符號,請在其前面加上反斜線(請參閱選項反斜線,了解如何包含空格和反斜線)。請參閱'wildignore'以完全忽略檔案。當從清單中新增或移除後綴時,最好使用 :set+=:set-=。這可以避免未來版本使用其他預設值時出現問題。
'suffixesadd' 'sua' 'suffixesadd' 'sua' 字串(預設為「」)本機緩衝區。以逗號分隔的後綴清單,當使用「gf」、「[I」等命令搜尋檔案時會使用。範例
set suffixesadd=.java
'swapfile' 'swf' 'noswapfile' 'noswf' 'swapfile' 'swf' 布林值(預設為開啟)本機緩衝區。為緩衝區使用交換檔。當特定緩衝區不需要交換檔時,可以重設此選項。例如,對於即使 root 也不能存取的機密資訊。小心:所有文字都會在記憶體中。
請勿對大檔案使用此選項。
復原將不可能!只有當 'updatecount' 非零且設定了 'swapfile' 時,才會存在交換檔。當 'swapfile' 被重設時,目前緩衝區的交換檔會立即被刪除。當設定了 'swapfile''updatecount' 非零時,會立即建立一個交換檔。另請參閱 swap-file。如果您想開啟一個新的緩衝區而不為其建立交換檔,請使用 :noswapfile 修飾符。請參閱 'directory' 以了解交換檔的建立位置。
此選項與 'bufhidden''buftype' 一起使用,以指定特殊類型的緩衝區。請參閱 special-buffers
'switchbuf' 'swb' 'switchbuf' 'swb' 字串(預設值 "uselast")全域。此選項控制在緩衝區之間切換時的行為。當以下情況發生時會檢查此選項:
使用 quickfix 命令(:cc:cn:cp 等)跳轉至錯誤時。
使用 :stag 命令跳轉至標籤時。
使用 CTRL-W_fCTRL-W_F 命令開啟檔案時。
使用緩衝區分割命令(例如 :sbuffer:sbnext:sbrewind)跳轉至緩衝區時。可能的值(逗號分隔列表): useopen 如果包含此值,則跳轉到目前標籤頁中包含指定緩衝區的第一個開啟視窗(如果有的話)。否則:不檢查其他視窗。 usetab 類似於 "useopen",但也會考慮其他標籤頁中的視窗。 split 如果包含此值,則在為顯示錯誤的 quickfix 命令載入緩衝區之前分割目前的視窗。否則:不分割,使用目前視窗(在 quickfix 視窗中使用時:先前使用的視窗或分割,如果沒有其他視窗)。 vsplit 就像 "split" 但垂直分割。 newtab 就像 "split",但開啟一個新的標籤頁。當兩者都存在時,會覆蓋 "split"。 uselast 如果包含此值,則在使用 quickfix 命令跳轉至錯誤時,跳轉到先前使用的視窗。如果視窗啟用了 'winfixbuf',則目前不會將 'switchbuf' 應用於分割視窗。
'synmaxcol' 'smc' 'synmaxcol' 'smc' 數字(預設值 3000)緩衝區局部。搜尋語法項目的最大欄位。在長行中,此欄位之後的文字不會被突出顯示,並且後續的行可能無法正確突出顯示,因為語法狀態已清除。這有助於避免 XML 檔案中一行很長時繪製速度非常慢的問題。設定為零以移除限制。
'syntax' 'syn' 'syntax' 'syn' 字串(預設值 "")緩衝區局部 local-noglobal。設定此選項後,會載入具有此名稱的語法,除非已使用 ":syntax off" 關閉語法突出顯示。否則,此選項並不總是反映目前的語法(變數 b:current_syntax 會反映)。此選項在 modeline 中最有用,適用於未自動識別語法的檔案。範例,在 IDL 檔案中
/* vim: set syntax=idl : */
當值中出現點時,這會分隔兩個檔案類型名稱。範例
/* vim: set syntax=c.doxygen : */
這會先使用 "c" 語法,然後使用 "doxygen" 語法。請注意,第二個語法必須準備好作為附加元件載入,否則會被跳過。可能會出現多個點。若要關閉目前檔案的語法突出顯示,請使用
set syntax=OFF
若要根據 'filetype' 選項的目前值開啟語法突出顯示
set syntax=ON
實際設定 'syntax' 選項時,會觸發語法自動命令事件,並將該值作為引數。此選項不會複製到另一個緩衝區,與 'cpoptions' 中的 's' 或 'S' 旗標無關。只能使用字母數字字元、'.'、'-' 和 '_'。
'tabclose' 'tcl' 'tabclose' 'tcl' 字串(預設值 "")全域。此選項控制關閉標籤頁時的行為(例如,使用 :tabclose)。當為空時,Vim 會移至下一個(右側)標籤頁。
可能的值(逗號分隔列表): left 如果包含此值,則移至上一個標籤頁而不是下一個標籤頁。 uselast 如果包含此值,則盡可能移至先前使用的標籤頁。此選項的優先順序高於其他選項。
'tabline' 'tal' 'tabline' 'tal' 字串(預設值 "")全域。當為非空時,此選項會決定 Vim 視窗頂部的標籤頁行的內容。當為空時,Vim 會使用預設的標籤頁行。有關更多資訊,請參閱 setting-tabline
標籤頁行僅在指定了 'showtabline' 選項且沒有 GUI 標籤行時才會出現。當 'guioptions' 中有 'e' 且 GUI 支援標籤行時,會改為使用 'guitablabel'。請注意,這兩條標籤頁行非常不同。
該值的計算方式與 'statusline' 相同。您可以使用 tabpagenr()tabpagewinnr()tabpagebuflist() 來找出要顯示的文字。第一個標籤使用 "%1T",第二個標籤使用 "%2T",依此類推。關閉標籤使用 "%X" 項目。
當變更 'tabline' 中使用的某些內容而沒有觸發其更新時,請使用 :redrawtabline。當 'modelineexpr' 關閉時,無法在 modeline 中設定此選項。
請記住,只有一個標籤頁是目前的標籤頁,其他標籤頁是不可見的,而且您無法跳轉至其視窗。
'tabpagemax' 'tpm' 'tabpagemax' 'tpm' 數字(預設值 50)全域。可由 -p 命令列引數或 ":tab all" 命令開啟的最大標籤頁數量。 tabpage
'tabstop' 'ts' 'tabstop' 'ts' 數字(預設值 8)緩衝區局部。檔案中 <Tab> 算作的空格數。另請參閱 :retab 命令和 'softtabstop' 選項。
注意:'tabstop' 設定為 8 以外的任何值可能會導致您的檔案在許多地方顯示不正確。該值必須大於 0 且小於 10000。
在 Vim 中使用 Tab 鍵主要有五種方式: 1. 始終將 'tabstop' 保留為 8,將 'softtabstop''shiftwidth' 設定為 4(或 3 或您喜歡的任何值)並使用 'noexpandtab'。然後 Vim 將使用 Tab 鍵和空格的組合,但輸入 <Tab><BS> 的行為就像 Tab 鍵每隔 4(或 3)個字元出現一次。這是建議的方式,檔案在使用其他工具和在終端中列出時看起來會相同。 2. 將 'softtabstop''shiftwidth' 設定為您喜歡的任何值,並使用 'expandtab'。這樣您將始終插入空格。當 'tabstop' 變更時,格式永遠不會被弄亂(為以防萬一,請將其保留為 8)。檔案會稍微大一些。您確實需要檢查檔案中是否不存在 Tab 鍵。您可以先設定 'expandtab' 並使用 %retab! 來移除它們,確保 'tabstop' 的值設定正確。 3. 將 'tabstop''shiftwidth' 設定為您喜歡的任何值,並使用 'expandtab'。這樣您將始終插入空格。當 'tabstop' 變更時,格式永遠不會被弄亂。您確實需要檢查檔案中是否不存在 Tab 鍵,就像在上面的項目中一樣。 4. 將 'tabstop''shiftwidth' 設定為您喜歡的任何值,並使用 modeline 在再次編輯檔案時設定這些值。僅在使用 Vim 編輯檔案時才有效,其他工具會假設一個 tabstop 相當於 8 個空格。 5. 始終將 'tabstop''shiftwidth' 設定為相同的值,並使用 'noexpandtab'。這應該適用於人們使用的任何 tabstop 設定(僅適用於初始縮排)。如果您這樣做,最好在第一個非空白字元之後將 Tab 鍵插入為空格。否則,當 'tabstop' 變更時,對齊的註解將會不正確。
如果將 'vartabstop' 設定為空字串以外的任何值,則會忽略 'tabstop' 的值。
'tagbsearch' 'tbs' 'notagbsearch' 'notbs' 'tagbsearch' 'tbs' 布林值(預設值為開啟)全域。當搜尋標籤時(例如,對於 :ta 命令),Vim 可以使用二元搜尋或在標籤檔案中使用線性搜尋。二元搜尋使搜尋標籤的速度快很多,但如果標籤檔案沒有正確排序,線性搜尋會找到更多標籤。Vim 通常會假設您的標籤檔案已排序,或指出它們未排序。只有在這種情況下,才需要關閉 'tagbsearch' 選項。
'tagbsearch' 開啟時,會首先在標籤檔案中使用二元搜尋。在某些情況下,Vim 會對某些檔案執行線性搜尋,或重試所有檔案的線性搜尋。當 'tagbsearch' 關閉時,只會執行線性搜尋。
當 Vim 在檔案開頭找到一行指示該檔案未排序時,無論如何都會對一個檔案執行線性搜尋
!_TAG_FILE_SORTED        0        /some comment/
[「0」前後的空白必須是單個 <Tab>]
當二元搜尋在 「tags」 中列出的任何檔案中都找不到相符項目,且忽略大小寫或使用模式而非一般的標籤名稱時,會使用線性搜尋重新嘗試。未排序標籤檔案中的標籤,以及大小寫不同的比對,只會在重新嘗試時找到。
如果標籤檔案指出它是以忽略大小寫排序的,則在忽略大小寫時,可以避免第二次的線性搜尋。請在「!_TAG_FILE_SORTED」行中使用值「2」來表示此情況。大多數的 Unix 系統中,可以使用「sort」的 -f 開關,以忽略大小寫的方式排序標籤檔案,例如指令:「sort -f -o tags tags」。對於 Universal ctags 和 Exuberant ctags 5.x 或更高版本 (至少 5.5),也可以使用 --sort=foldcase 開關。請注意,大小寫必須摺疊為大寫才能正常運作。
預設情況下,標籤搜尋是區分大小寫的。當設定 「ignorecase」「tagcase」 為「followic」,或當 「tagcase」 為「ignore」時,會忽略大小寫。此外,當 「tagcase」 為「followscs」且設定了 「smartcase」,或 「tagcase」 為「smart」,且模式只包含小寫字母時,也會忽略大小寫。
「tagbsearch」 關閉時,當存在完全符合的標籤時,標籤搜尋速度較慢,但當不存在完全符合的標籤時,搜尋速度會更快。未排序標籤檔案中的標籤可能只會在 「tagbsearch」 關閉時找到。當標籤檔案未排序,或以錯誤的方式排序 (不是根據 ASCII 位元組值排序) 時,「tagbsearch」 應關閉,或必須將上面給出的行包含在標籤檔案中。此選項不會影響尋找所有符合標籤的命令 (例如,命令列完成和「:help」)。
「tagcase」 「tc」 「tagcase」 「tc」 字串 (預設為「followic」) 全域或本機緩衝區 global-local。此選項指定搜尋標籤檔案時如何處理大小寫:followic 遵循 「ignorecase」 選項。followscs 遵循 「smartcase」「ignorecase」 選項。ignore 忽略大小寫。match 比對大小寫。smart 忽略大小寫,除非使用大寫字母。
「tagfunc」 「tfu」 「tagfunc」 「tfu」 字串 (預設為「」) 本機緩衝區。此選項指定用於執行標籤搜尋的函式。該函式會取得標籤模式,並應傳回一個符合標籤的清單。有關如何撰寫函式的說明和範例,請參閱 tag-function。該值可以是函式的名稱、lambdaFuncref。有關更多資訊,請參閱 option-value-function。出於安全考量,無法從 modeline 或在 sandbox 中設定此選項。
「taglength」 「tl」 「taglength」 「tl」 數字 (預設為 0) 全域。如果非零,則標籤在此字元數內有意義。
「tagrelative」 「tr」 「notagrelative」 「notr」 「tagrelative」 「tr」 布林值 (預設為開啟) 全域。如果開啟且使用另一個目錄中的標籤檔案,則該標籤檔案中的檔案名稱會相對於標籤檔案所在的目錄。
「tags」 「tag」 E433 「tags」 「tag」 字串 (預設為「./tags;,tags」) 全域或本機緩衝區 global-local。標籤命令的檔案名稱,以空格或逗號分隔。若要在檔案名稱中包含空格或逗號,請在其前面加上反斜線 (有關包含空格/逗號和反斜線,請參閱 option-backslash)。當檔案名稱以「./」開頭時,會將「.」替換為目前檔案的路徑。但僅限於「d」旗標未包含在 「cpoptions」 中時。會展開環境變數 :set_env。另請參閱 tags-option。「*」、「**」和其他萬用字元可用於在目錄樹中搜尋標籤檔案。請參閱 file-searching。例如,「/lib/**/tags」將會找到「/lib」下所有名為「tags」的檔案。檔案名稱本身不能包含萬用字元,會按原樣使用。例如,「/lib/**/tags?」會找到名為「tags?」的檔案。可以使用 tagfiles() 函式來取得實際使用的檔案名稱清單。當從清單中新增或移除檔案名稱時,建議使用 :set+=:set-=。這樣可以避免在未來版本使用其他預設值時發生問題。
「tagstack」 「tgst」 「notagstack」 「notgst」 「tagstack」 「tgst」 布林值 (預設為開啟) 全域。當開啟時,會正常使用 tagstack。當關閉時,帶有參數的「:tag」或「:tselect」命令不會將標籤推送到 tagstack。後續沒有參數的「:tag」命令、「:pop」命令或任何其他使用 tagstack 的命令,將會使用未修改的 tagstack,但會變更指向活動項目的指標。當在不應變更 tagstack 的對應中使用「:tag」命令時,重設此選項會很有用。
「termbidi」 「tbidi」 「notermbidi」 「notbidi」 「termbidi」 「tbidi」 布林值 (預設為關閉) 全域。終端負責文字的雙向性 (由 Unicode 指定)。終端也應執行某些語言 (例如阿拉伯語) 所需的塑形。設定此選項表示當設定 「arabic」 時,不會設定 「rightleft」,且會忽略 「arabicshape」 的值。請注意,設定 「termbidi」 會立即產生忽略 「arabicshape」 的效果,但不會自動變更 「rightleft」。有關更多詳細資訊,請參閱 arabic.txt
「termguicolors」 「tgc」 「notermguicolors」 「notgc」 「termguicolors」 「tgc」 布林值 (預設為關閉) 全域。啟用 TUI 中的 24 位元 RGB 顏色。使用「gui」:highlight 屬性,而非「cterm」屬性。guifg 需要符合 ISO-8613-3 標準的終端。
Nvim 會自動嘗試判斷主機終端是否支援 24 位元色彩,如果支援,則會啟用此選項 (除非使用者明確停用)。
「termpastefilter」 「tpf」 「termpastefilter」 「tpf」 字串 (預設為「BS,HT,ESC,DEL」) 全域。以逗號分隔的選項清單,用於指定要從貼到終端視窗中的文字中移除的控制字元。支援的值為
BS 退格鍵
HT TAB
FF 表單饋送
ESC 逸出鍵
DEL 刪除鍵
C0 其他控制字元,不包括換行和歸位 < ' '
C1 控制字元 0x80...0x9F
「termsync」 「notermsync」 「termsync」 布林值 (預設為開啟) 全域。如果主機終端支援,則會在重繪週期期間緩衝所有螢幕更新,以便在終端中一次顯示每個螢幕。當終端更新速度快於 Nvim 重繪速度時,這可以防止撕裂或閃爍。
「textwidth」 「tw」 「textwidth」 「tw」 數字 (預設為 0) 本機緩衝區。正在插入的文字的最大寬度。較長的行會在空格後斷開以達到此寬度。值為零會停用此功能。當 「textwidth」 為零時,可以使用 「wrapmargin」。另請參閱 「formatoptions」ins-textwidth。當設定 「formatexpr」 時,將會使用它來斷行。
「thesaurus」 「tsr」 「thesaurus」 「tsr」 字串 (預設為「」) 全域或本機緩衝區 global-local。以逗號分隔的檔案名稱清單,用於查閱詞庫完成命令 i_CTRL-X_CTRL-T 的單字。請參閱 compl-thesaurus
如果設定了 「thesaurusfunc」 (無論是針對緩衝區還是全域設定),則不使用此選項。
若要在檔案名稱中包含逗號,請在其前面加上反斜線。逗號後的空格會被忽略,否則空格會包含在檔案名稱中。有關使用反斜線,請參閱 option-backslash。當從清單中新增或移除目錄時,建議使用 :set+=:set-=。這樣可以避免在未來版本使用其他預設值時發生問題。出於安全考量,此選項中不能使用反引號。
「thesaurusfunc」 「tsrfu」 「thesaurusfunc」 「tsrfu」 字串 (預設為「」) 全域或本機緩衝區 global-local。此選項指定要與 CTRL-X CTRL-T 一起用於詞庫完成的函式。i_CTRL-X_CTRL-T 請參閱 compl-thesaurusfunc。該值可以是函式的名稱、lambdaFuncref。有關更多資訊,請參閱 option-value-function
出於安全原因,無法從 modeline沙箱中設定此選項。
「tildeop」 「top」 「notildeop」 「notop」 「tildeop」 「top」 布林值 (預設為關閉) 全域。當開啟時:波浪符號命令「~」的行為類似於運算子。
'timeout' 'to' 'notimeout' 'noto' 'timeout' 'to' 布林值 (預設為開啟) 全域 此選項和 'timeoutlen' 決定了當收到映射的按鍵序列部分時的行為。例如,如果按下 <c-f>'timeout' 設定為開啟,Nvim 會等待 'timeoutlen' 毫秒,以接收任何可以接在映射中的 <c-f> 後面的按鍵。
'timeoutlen' 'tm' 'timeoutlen' 'tm' 數值 (預設為 1000) 全域 等待映射序列完成的毫秒數。
'title' 'notitle' 'title' 布林值 (預設為關閉) 全域 當開啟時,視窗標題將會設定為 'titlestring' 的值 (如果不是空的),或設定為:檔名 [+=-] (路徑) - Nvim 其中:檔名 為正在編輯的檔案名稱 - 表示該檔案無法修改,'ma' 關閉 + 表示該檔案已修改 = 表示該檔案為唯讀 =+ 表示該檔案為唯讀且已修改 (路徑) 為正在編輯檔案的路徑
Nvim 伺服器名稱 v:servername 或 "Nvim"
'titlelen'
'titlelen' 數值 (預設為 85) 全域 指定視窗標題長度所使用的 'columns' 百分比。當標題較長時,只會顯示路徑名稱的結尾。路徑名稱之前會使用 '<' 字元來表示這一點。使用百分比使其能適應視窗的寬度。但它並非完美,因為可用的實際字元數還取決於所使用的字型和標題列中的其他內容。當 'titlelen' 為零時,會使用完整路徑。否則,可以使用 1 到 30000 的百分比值。'titlelen' 也會用於 'titlestring' 選項。
'titleold'
'titleold' 字串 (預設為 "") 全域 如果不為空,此選項將在退出時設定視窗標題。僅當 'title' 啟用時。基於安全考量,此選項無法從 modelinesandbox 中設定。
'titlestring'
'titlestring' 字串 (預設為 "") 全域 當此選項不為空時,將會用於視窗的標題。這只會在 'title' 選項開啟時發生。
當此選項包含 printf 樣式的 '%' 項目時,它們會根據 'statusline' 所使用的規則展開。如果它包含無效的 '%' 格式,該值會按原樣使用,且在設定該值時不會給出錯誤或警告。當 'modelineexpr' 關閉時,此選項無法在 modeline 中設定。
範例
auto BufEnter * let &titlestring = hostname() .. "/" .. expand("%:p")
set title titlestring=%<%F%=%l/%L-%P titlelen=70
'titlelen' 的值用於在可用空間的中間或右側對齊項目。有些人喜歡將檔名放在最前面
set titlestring=%t%(\ %M%)%(\ (%{expand(\"%:~:.:h\")})%)%(\ %a%)
請注意 "%{ }" 和一個表示式的使用,以取得不包含檔名的檔案路徑。 "%( %)" 結構用於僅在需要時加入分隔空格。 注意:'titlestring' 中使用特殊字元可能會導致顯示亂碼 (例如,當它包含 CR 或 NL 字元時)。
'ttimeout' 'nottimeout' 'ttimeout' 布林值 (預設為開啟) 全域 此選項和 'ttimeoutlen' 決定了當 TUI 收到按鍵碼序列的一部分時的行為。
例如,如果收到 <Esc> ( \x1b 位元組) 且 'ttimeout' 設定為開啟,Nvim 會等待 'ttimeoutlen' 毫秒,讓終端機完成按鍵碼序列。如果在逾時之前沒有收到輸入,則會假定只有單個 <Esc>。許多 TUI 游標按鍵碼都以 <Esc> 開頭。
在非常慢的系統上,這可能會失敗,導致游標按鍵有時無法運作。如果您發現此問題,您可以執行 ":set ttimeoutlen=9999"。Nvim 會等待 <Esc> 之後的下一個字元到達。
'ttimeoutlen' 'ttm' 'ttimeoutlen' 'ttm' 數值 (預設為 50) 全域 等待按鍵碼序列完成的毫秒數。也用於當命令的一部分已經輸入時的 CTRL-\ CTRL-NCTRL-\ CTRL-G
'undodir' 'udir' E5003 'undodir' 'udir' 字串 (預設為 "$XDG_STATE_HOME/nvim/undo//") 全域 以逗號分隔的 undo 檔案目錄名稱清單。有關格式的詳細資訊,請參閱 'backupdir'。"." 表示使用該檔案的目錄。"file.txt" 的 undo 檔案名稱為 ".file.txt.un~"。對於其他目錄,檔案名稱是編輯檔案的完整路徑,其中路徑分隔符號會被 "%" 取代。寫入時:會使用第一個存在的目錄。"." 永遠有效,"." 後面的目錄將不會用於寫入。如果沒有任何目錄存在,Nvim 將嘗試建立清單中的最後一個目錄。讀取時,會嘗試所有項目以尋找 undo 檔案。使用第一個存在的 undo 檔案。當無法讀取時,會給出錯誤訊息,且不會使用其他項目。請參閱 undo-persistence。基於安全考量,此選項無法從 modelinesandbox 中設定。
請注意,與 'directory''backupdir' 不同,'undodir' 始終表現得好像存在尾隨斜線一樣 (有關此含義,請參閱 'backupdir')。
'undofile' 'udf' 'noundofile' 'noudf' 'undofile' 'udf' 布林值 (預設為關閉) 緩衝區本地 當開啟時,Vim 會在將緩衝區寫入檔案時自動將 undo 歷史記錄儲存到 undo 檔案,並在讀取緩衝區時從同一檔案還原 undo 歷史記錄。儲存 undo 檔案的目錄由 'undodir' 指定。有關此功能的更多資訊,請參閱 undo-persistence。當 'undoreload' 導致從重新載入之前儲存的緩衝區以進行 undo 時,不會讀取 undo 檔案。當 'undofile' 關閉時,不會刪除 undo 檔案。
'undolevels' 'ul' 'undolevels' 'ul' 數值 (預設為 1000) 全域或緩衝區本地 global-local 可以還原的最大變更次數。由於 undo 資訊會保留在記憶體中,因此較高的數字會導致使用更多記憶體。儘管如此,單個變更可能已經會使用大量記憶體。設定為 0 可實現 Vi 相容性:一個 undo 等級,且 "u" 會還原本身。
set ul=0
但是,您也可以透過在 'cpoptions' 中包含 'u' 旗標來實現 Vi 相容性,且仍然能夠使用 CTRL-R 來重複 undo。另請參閱 undo-two-ways。設定為 -1 表示完全沒有 undo。您可能只希望對當前緩衝區執行此操作
setlocal ul=-1
這有助於在單個變更用盡記憶體時。
當要使用全域值時,本地值會設定為 -123456。
另請參閱 clear-undo
'undoreload' 'ur' 'undoreload' 'ur' 數值 (預設為 10000) 全域 當重新載入時,儲存整個緩衝區以進行 undo。這適用於 ":e!" 命令以及在 Vim 外部變更緩衝區時重新載入。FileChangedShell 只有當此選項為負數,或當行數小於此選項的值時才會發生儲存。將此選項設定為零以停用重新載入的 undo。
當儲存 undo 以進行重新載入時,不會讀取任何 undo 檔案。
請注意,這會導致整個緩衝區儲存在記憶體中。如果您的記憶體不足,請將此選項設定為較低的值。
'updatecount' 'uc' 'updatecount' 'uc' 數值 (預設為 200) 全域 在鍵入這麼多字元後,交換檔案會寫入磁碟。當為零時,根本不會建立交換檔案 (請參閱關於復原的章節 crash-recovery)。'updatecount' 是透過使用 "-n" 選項啟動 Vim 來設定為零,請參閱 startup。在唯讀模式下編輯時,此選項會初始化為 10000。可以使用 'swapfile' 為每個緩衝區停用交換檔案。當 'updatecount' 從零設定為非零時,會為所有設定了 'swapfile' 的緩衝區建立交換檔案。當 'updatecount' 設定為零時,不會刪除現有的交換檔案。此選項在 'buftype' 為 "nofile" 或 "nowrite" 的緩衝區中沒有意義。
'updatetime' 'ut' 'updatetime' 'ut' 數值 (預設為 4000) 全域 如果這麼多毫秒內沒有輸入任何內容,交換檔案將會寫入磁碟 (請參閱 crash-recovery)。也用於 CursorHold 自動命令事件。
'varsofttabstop' 'vsts' 'varsofttabstop' 'vsts' 字串 (預設為 "") 緩衝區本地 編輯時 <Tab> 計算為的空格數清單,例如插入 <Tab> 或使用 <BS>。感覺好像正在插入可變寬度的 <Tab>,但實際上是使用空格和 <Tab> 的混合。Tab 寬度以逗號分隔,最後一個值適用於所有後續的 Tab。
例如,在編輯組語檔案時,其中語句從第 9 欄開始,註解從第 41 欄開始,使用以下方法可能會很有用
set varsofttabstop=8,32,8
這會將軟 Tab 停止點設定為 8 和 8 + 32 個空格,以及之後每欄額外 8 個空格。
請注意,當設定了 'varsofttabstop' 時,'softtabstop' 的值將會被忽略。
'vartabstop' 'vts' 'vartabstop' 'vts' 字串 (預設為 "") 緩衝區本地 檔案中 <Tab> 計算為的空格數清單,以逗號分隔。每個值對應一個 tab,最後一個值適用於所有後續的 tab。例如
set vartabstop=4,20,10,8
這會使第一個 tab 寬度為 4 個空格,第二個為 20 個空格,第三個為 10 個空格,之後所有的 tab 皆為 8 個空格寬。
請注意,當設定 'vartabstop' 時,'tabstop' 的值將會被忽略。
'verbose' 'vbs' 'verbose' 'vbs' 數字 (預設為 0) 全域 設定詳細程度等級。也可以由 -V:verbose 設定。
在等級 1 時,會啟用 Lua 腳本中選項、映射等的追蹤;為了效能考量,當 'verbose' 為 0 時,Lua 腳本不會被追蹤。
如果大於或等於指定的等級,Nvim 會產生以下訊息
等級 訊息
---------------------------------------------------------------------- 1 啟用 Lua 追蹤 (見上文)。不產生訊息。 2 當一個檔案被 ":source" 時,或 shada 檔案被讀取或寫入時。 3 UI 資訊,終端機功能。 4 Shell 命令。 5 每個搜尋過的 tags 檔案和 include 檔案。 8 執行自動命令群組的檔案。 9 執行的自動命令。 11 在路徑中尋找項目。 12 Vimscript 函數呼叫。 13 當拋出、捕獲、完成或丟棄異常時。 14 在 ":finally" 子句中任何待處理的事項。 15 來自腳本的 Ex 命令 (截斷至 200 個字元)。 16 Ex 命令。
如果設定 'verbosefile',則不會顯示詳細訊息。
'verbosefile' 'vfile' 'verbosefile' 'vfile' 字串 (預設為 "") 全域 當不為空時,所有訊息都會寫入具有此名稱的檔案中。當檔案存在時,訊息會附加在後面。當 Vim 結束或 'verbosefile' 變為空時,寫入檔案的操作會結束。寫入會被緩衝,因此可能不會立即顯示。將 'verbosefile' 設定為新值,就像先將其設為空一樣。與 :redir 的不同之處在於,當設定 'verbosefile' 時,不會顯示詳細訊息。基於安全原因,此選項無法從 modeline 或在 sandbox 中設定。
'viewdir' 'vdir' 'viewdir' 'vdir' 字串 (預設為 "$XDG_STATE_HOME/nvim/view//") 全域 儲存 :mkview 檔案的目錄名稱。基於安全原因,此選項無法從 modeline 或在 sandbox 中設定。
'viewoptions' 'vop' 'viewoptions' 'vop' 字串 (預設為 "folds,cursor,curdir") 全域 變更 :mkview 命令的效果。它是一個以逗號分隔的單字列表。每個單字都會啟用儲存和還原某些內容
單字 儲存和還原
cursor 檔案和視窗中的游標位置 curdir 如果使用 :lcd 設定的本機目前目錄 folds 手動建立的折疊、開啟/關閉的折疊和本機折疊選項 options 視窗或緩衝區的本機選項和映射 (非本機選項的全域值) localoptions 與 "options" 相同 slash 已過時 永遠啟用。在檔名中使用 "/"。 unix 已過時 永遠啟用。使用 "\n" 行尾符號。
'virtualedit' 've' 'virtualedit' 've' 字串 (預設為 "") 全域或本機於視窗 global-local 以逗號分隔的單字列表: block 允許在可視區塊模式下進行虛擬編輯。 insert 允許在插入模式下進行虛擬編輯。 all 允許在所有模式下進行虛擬編輯。 onemore 允許游標移動到剛好超過行尾的位置 none 當作為本機值使用時,即使設定了全域值,也不允許虛擬編輯。當作為全域值使用時,"none" 與 "" 相同。 NONE "none" 的替代拼寫。
虛擬編輯表示游標可以定位在沒有實際字元的位置。這可能是在 tab 的中間或在行尾之外。這對於在可視模式下選取矩形和編輯表格很有用。"onemore" 並非相同,它只允許游標移動到剛好在該行的最後一個字元之後。這使某些命令更一致。先前,如果該行為空,則游標始終位於行尾之後。但它遠非與 Vi 相容。它也可能會破壞某些外掛程式或 Vim 腳本。例如,因為 l 可以將游標移動到最後一個字元之後。請謹慎使用!使用 $ 命令會移動到該行的最後一個字元,而不是其後。這實際上可能會將游標向左移動!g$ 命令會移動到螢幕行的末尾。將 "all" 與 "onemore" 結合使用沒有意義,但您不會收到警告。當與其他單字結合使用時,"none" 會被忽略。
'visualbell' 'vb' 'novisualbell' 'novb' 'visualbell' 'vb' 布林值 (預設為關閉) 全域 使用視覺鈴聲而不是發出嗶嗶聲。另請參閱 'errorbells'
'warn' 'nowarn' 'warn' 布林值 (預設為開啟) 全域 當緩衝區已變更時,使用 shell 命令會發出警告訊息。
'whichwrap' 'ww' 'whichwrap' 'ww' 字串 (預設為 "b,s") 全域 允許指定的左右移動游標的按鍵,當游標位於該行的第一個/最後一個字元時,移動到上一/下一行。串連字元以允許這些按鍵執行此操作
字元 按鍵 模式
b <BS> 一般和可視 s <Space> 一般和可視 h "h" 一般和可視 (不建議使用) l "l" 一般和可視 (不建議使用) < <Left> 一般和可視 > <Right> 一般和可視 ~ "~" 一般 [ <Left> 插入和取代 ] <Right> 插入和取代 例如
set ww=<,>,[,]
僅在使用游標鍵時才允許換行。當移動鍵與刪除或變更運算子結合使用時,<EOL> 也計為一個字元。當游標跨越行尾時,這會使 "3h" 與 "3dh" 不同。這也適用於 "x" 和 "X",因為它們的作用與 "dl" 和 "dh" 相同。如果您使用此功能,您可能還需要使用映射 ":map <BS> X" 來使退格鍵刪除游標前面的字元。當包含 'l' 並且它在行尾 (非空行) 的運算子之後使用時,它不會移動到下一行。這使得 "dl"、"cl"、"yl" 等可以正常工作。
'wildchar' 'wc' 'wildchar' 'wc' 數字 (預設為 <Tab>) 全域 您必須輸入以在命令列中開始萬用字元擴展的字元,如 'wildmode' 所指定。更多資訊請見此處: cmdline-completion。當在巨集中使用時,該字元將無法識別。請參閱 'wildcharm'。某些按鍵將無法運作,例如 CTRL-C<CR> 和 Enter。可以使用 <Esc>,但連續按下兩次仍會因為安全措施而退出命令列。儘管 'wc' 是一個數字選項,但它可以指定為數字、單個字元、按鍵標記法 (例如 <Up><C-F>) 或以插入符號開頭的字母 (例如 ^FCTRL-F)
:set wc=27
:set wc=X
:set wc=^I
set wc=<Tab>
'wildcharm' 'wcm' 'wildcharm' 'wcm' 數字 (預設為 0) 全域 'wildcharm' 的工作方式與 'wildchar' 完全相同,只是當在巨集中使用時,它會被識別。您可以查看 ex-edit-index 來找到適合此選項的「備用」命令列按鍵。通常,您實際上永遠不會輸入 'wildcharm',只需在自動叫用完成模式的映射中使用它,例如
set wcm=<C-Z>
cnoremap ss so $vim/sessions/*.vim<C-Z>
然後在輸入 :ss 之後,您可以使用 CTRL-P & CTRL-N
'wildignore' 'wig' 'wildignore' 'wig' 字串 (預設為 "") 全域 檔案模式列表。當擴展 萬用字元、完成檔案或目錄名稱時,會忽略與這些模式之一匹配的檔案,並影響 expand()glob()globpath() 的結果,除非傳遞了停用此功能的旗標。該模式的使用方式與 :autocmd 相同,請參閱 autocmd-pattern。另請參閱 'suffixes'。範例
set wildignore=*.o,*.obj
當從列表中新增或移除模式時,建議使用 :set+=:set-=。這可以避免在未來版本使用其他預設值時發生問題。
'wildignorecase' 'wic' 'nowildignorecase' 'nowic' 'wildignorecase' 'wic' 布林值 (預設為關閉) 全域 當設定時,完成檔名和目錄時會忽略大小寫。當設定 'fileignorecase' 時無效。當使用 shell 擴展萬用字元時不適用,如果存在特殊字元則會發生這種情況。
'wildmenu' 'wmnu' 'nowildmenu' 'nowmnu' 'wildmenu' 'wmnu' 布林值 (預設為開啟) 全域 當 'wildmenu' 開啟時,命令列完成會以增強模式運作。按下 'wildchar' (通常是 <Tab>) 來叫用完成時,會顯示可能的匹配項。當 'wildoptions' 包含 "pum" 時,完成匹配項會顯示在彈出式選單中。否則,它們會顯示在命令列正上方,並且會以高亮度顯示第一個匹配項 (如果有的話,會覆蓋狀態列)。顯示上一個/下一個匹配項的按鍵 (例如 <Tab>CTRL-P/CTRL-N) 會導致高亮度移動到適當的匹配項。'wildmode' 必須指定 "full": "longest" 和 "list" 不會啟動 'wildmenu' 模式。您可以使用 wildmenumode() 來檢查目前的模式。當按下不選取完成項的按鍵時,會取消選單。
當選單啟用時,這些按鍵有特殊含義:CTRL-P - 前往上一個條目 CTRL-N - 前往下一個條目 <Left> <Right> - 選擇上一個/下一個匹配項(類似於 CTRL-P/CTRL-N) <PageUp> - 選擇幾個條目之前的匹配項 <PageDown> - 選擇幾個條目之後的匹配項 <Up> - 在檔案名稱/選單名稱補全中:向上移動到父目錄或父選單。 <Down> - 在檔案名稱/選單名稱補全中:向下移動到子目錄或子選單。 <CR> - 在選單補全中,當游標正好在點號之後時:移動到子選單。 CTRL-E - 結束補全,回到選擇匹配項之前的狀態。 CTRL-Y - 接受目前選取的匹配項並停止補全。
如果您希望 <Left><Right> 移動游標而不是選擇不同的匹配項,請使用此設定
cnoremap <Left> <Space><BS><Left>
cnoremap <Right> <Space><BS><Right>
hl-WildMenu 會反白顯示目前的匹配項。
'wildmode' 'wim' 'wildmode' 'wim' 字串(預設為 "full")全域設定,用於指定以 'wildchar' 指定的字元的補全模式。它是一個以逗號分隔的列表,最多包含四個部分。每個部分指定每次連續使用 'wildchar' 時要執行的操作。第一部分指定第一次使用 'wildchar' 時的行為,第二部分指定第二次使用時的行為,依此類推。
每個部分都包含一個以冒號分隔的列表,其中包含以下可能的值: "" 只補全第一個匹配項。 "full" 補全下一個完整匹配項。在最後一個匹配項之後,將使用原始字串,然後再次使用第一個匹配項。如果啟用了 'wildmenu',也會啟動它。"longest" 補全到最長的共同字串。如果這沒有產生更長的字串,則使用下一部分。 "list" 當有多個匹配項時,列出所有匹配項。"lastused" 當補全緩衝區名稱且有多個緩衝區匹配時,按上次使用時間(而非目前緩衝區)對緩衝區進行排序。當只有單個匹配項時,在所有情況下都會完全補全。
有用的冒號分隔值範例:"longest:full" 類似於 "longest",但如果啟用了 'wildmenu',也會啟動它。不會補全到下一個完整匹配項。"list:full" 當有多個匹配項時,列出所有匹配項並補全第一個匹配項。"list:longest" 當有多個匹配項時,列出所有匹配項並補全到最長的共同字串。"list:lastused" 當有多個緩衝區匹配時,列出所有匹配項並按上次使用時間(而非目前緩衝區)對緩衝區進行排序。
範例
set wildmode=full
補全第一個完整匹配項、下一個匹配項等等(預設)。
set wildmode=longest,full
補全最長的共同字串,然後補全每個完整匹配項
set wildmode=list:full
列出所有匹配項並補全每個完整匹配項
set wildmode=list,full
列出所有匹配項而不補全,然後補全每個完整匹配項
set wildmode=longest,list
補全最長的共同字串,然後列出替代方案。更多資訊請見:cmdline-completion
'wildoptions' 'wop' 'wildoptions' 'wop' 字串(預設為 "pum,tagfile")全域設定,用於變更如何執行 cmdline-completion 的單字列表。支援以下值:fuzzy 使用 模糊匹配 尋找補全匹配項。當指定此值時,將不會使用萬用字元展開進行補全。匹配項將按「最佳匹配」排序,而不是按字母順序排序。這將比萬用字元展開找到更多匹配項。目前,檔案和目錄名稱不支援基於模糊匹配的補全,而是使用萬用字元展開。pum 使用彈出式選單以與 ins-completion-menu 相同的樣式顯示補全匹配項。tagfile 當使用 CTRL-D 列出匹配標籤時,會列出標籤種類和標籤檔案。每行只顯示一個匹配項。常用的標籤種類有:d #define f function
'winaltkeys' 'wak' 'winaltkeys' 'wak' 字串(預設為 "menu")僅在 Win32 中使用。某些 GUI 版本允許使用 ALT 鍵與選單中帶有底線的字元組合來存取選單項目。這與 ALT 鍵用於對應和輸入特殊字元衝突。此選項指定要執行的操作:no 不要將 ALT 鍵用於選單。可以對應 ALT 鍵組合,但沒有自動處理。yes ALT 鍵處理由視窗系統完成。無法對應 ALT 鍵組合。menu 在組合字元為選單快捷鍵的情況下使用 ALT 鍵,將由視窗系統處理。可以對應其他按鍵。如果透過從 'guioptions' 中排除 'm' 來停用選單,則永遠不會將 ALT 鍵用於選單。此選項不適用於 Win32 上的 <F10>
'winbar' 'wbr' 'winbar' 'wbr' 字串(預設為 "")全域或視窗本機 global-local。當為非空白時,此選項會啟用視窗列並決定其內容。視窗列是顯示在每個啟用視窗頂部的列。'winbar' 的值會像 'statusline' 一樣進行評估。
當變更 'winbar' 中使用的某些內容時,如果不會觸發更新,請使用 :redrawstatus
浮動視窗不使用 'winbar' 的全域值。必須為浮動視窗設定 'winbar' 的視窗本機值,才能讓浮動視窗具有視窗列。
'modelineexpr' 關閉時,無法在模式行中設定此選項。
'winblend' 'winbl' 'winblend' 'winbl' 數字(預設為 0)視窗本機設定,用於啟用浮動視窗的虛擬透明度。有效值範圍為 0(表示完全不透明的視窗(停用))到 100(表示完全透明的背景)。0-30 之間的值通常最有用。
與 UI 相關。搭配 RGB 色彩效果最佳。'termguicolors'
'window' 'wi' 'window' 'wi' 數字(預設為螢幕高度 - 1)全域設定,用於當只有一個視窗且該值小於 'lines' 減 1 時,CTRL-FCTRL-B 使用的視窗高度。螢幕將捲動 'window' 減 2 行,最少為 1 行。當 'window' 等於 'lines' 減 1 時,CTRL-FCTRL-B 會以更智慧的方式捲動,並會處理換行。當調整 Vim 視窗大小時,如果該值小於 1 或大於或等於 'lines',則會將其設定為 'lines' 減 1。 注意: 請勿將此與 Vim 視窗的高度混淆,請使用 'lines'
'winfixbuf' 'wfb' 'nowinfixbuf' 'nowfb' 'winfixbuf' 'wfb' 布林值(預設為關閉)視窗本機設定。如果啟用,則視窗及其顯示的緩衝區會配對。例如,嘗試使用 :edit 變更緩衝區將會失敗。其他變更視窗緩衝區的命令(例如 :cnext)也會略過任何啟用 'winfixbuf' 的視窗。但是,如果 Ex 命令有 "!" 修飾符,則它可以強制切換緩衝區。
'winfixheight' 'wfh' 'nowinfixheight' 'nowfh' 'winfixheight' 'wfh' 布林值(預設為關閉)視窗本機設定 local-noglobal。當開啟或關閉視窗且設定了 'equalalways' 時,保持視窗高度。也適用於 CTRL-W_=。預設為 preview-windowquickfix-window 設定。如果空間不足,仍然可能會變更高度。
'winfixwidth' 'wfw' 'nowinfixwidth' 'nowfw' 'winfixwidth' 'wfw' 布林值(預設為關閉)視窗本機設定 local-noglobal。當開啟或關閉視窗且設定了 'equalalways' 時,保持視窗寬度。也適用於 CTRL-W_=。如果空間不足,仍然可能會變更寬度。
'winheight' 'wh' E591 'winheight' 'wh' 數字(預設為 1)全域設定,用於目前視窗的最小行數。這不是硬性最小值,如果空間不足,Vim 將會使用較少的行數。如果焦點移至較小的視窗,其大小將會增加,並以犧牲其他視窗的高度為代價。將 'winheight' 設定為較小的數字以進行正常編輯。將其設定為 999,使目前視窗填滿螢幕的大部分。其他視窗的高度將只會是 'winminheight'。這有一個缺點,就是 ":all" 只會建立兩個視窗。為避免 "vim -o 1 2 3 4" 只建立兩個視窗,請在使用 VimEnter 事件完成啟動後設定此選項。
au VimEnter * set winheight=999
最小值為 1。在執行變更目前視窗高度的命令之後,不會調整高度。'winheight' 適用於目前視窗。使用 'winminheight' 設定其他視窗的最小高度。
'winhighlight' 'winhl' 'winhighlight' 'winhl' 字串(預設為 "")視窗本機設定。視窗本機反白顯示。以逗號分隔的反白顯示 群組名稱 配對 "{hl-from}:{hl-to},..." 列表,其中每個 {hl-from} 都是要被視窗中 {hl-to} 群組覆寫的 反白顯示群組 項目。
注意: 反白顯示命名空間優先於 'winhighlight'。請參閱 nvim_win_set_hl_ns()nvim_set_hl()
垂直分隔符號的反白顯示由分隔符號左側的視窗決定。索引標籤頁的 'tabline' 反白顯示由索引標籤頁的最後一個焦點視窗決定。彈出式選單的反白顯示由目前視窗決定。無法覆寫訊息區域的反白顯示。
範例:為非目前的視窗顯示不同的顏色
set winhighlight=Normal:MyNormal,NormalNC:MyNormalNC
'winminheight' 'wmh' 'winminheight' 'wmh' 數字(預設為 1)全域設定,用於當視窗不是目前視窗時的最小高度。這是硬性最小值,視窗永遠不會變得更小。當設定為零時,如果必要,視窗可能會被「擠壓」為零行(也就是只有狀態列)。當它們變為使用中時,它們至少會恢復為一行(因為游標必須有地方可去)。使用 'winheight' 設定目前視窗的最小高度。僅當視窗變小時才會檢查此選項。請勿使用較大的數字,否則在開啟多個視窗時會導致錯誤。0 到 3 的值是合理的。
'winminwidth' 'wmw' 'winminwidth' 'wmw' 數字 (預設值為 1) 全域。當視窗不是目前視窗時,其最小寬度。這是一個硬性最小值,視窗永遠不會變得更小。當設定為零時,視窗可能會在必要時被「壓縮」至零欄 (即只有一個垂直分隔線)。當它們變為活動狀態時,它們將恢復到至少一行 (因為游標必須有地方可去)。使用 'winwidth' 來設定目前視窗的最小寬度。此選項僅在縮小視窗時檢查。不要使用過大的數字,當開啟多個視窗時,會導致錯誤。0 到 12 的值是合理的。
'winwidth' 'wiw' E592 'winwidth' 'wiw' 數字 (預設值為 20) 全域。目前視窗的最小欄數。這不是一個硬性最小值,如果空間不足,Vim 將使用較少的欄數。如果目前視窗較小,其大小會增加,代價是其他視窗的寬度。將其設定為 999 可使目前視窗始終填滿螢幕。將其設定為一個較小的數字以進行正常編輯。在執行任何變更目前視窗寬度的指令後,寬度不會調整。'winwidth' 適用於目前視窗。使用 'winminwidth' 來設定其他視窗的最小寬度。
'wrap' 'nowrap' 'wrap' 布林值 (預設為開啟) 視窗本地選項。此選項會變更文字的顯示方式。它不會變更緩衝區中的文字,請參閱 'textwidth'。當開啟時,長度超過視窗寬度的行將會換行,並在下一行繼續顯示。當關閉時,行將不會換行,並且只會顯示長行的部分內容。當游標移動到未顯示的部分時,螢幕將會水平捲動。如有必要,該行將在單字中間斷開。請參閱 'linebreak' 以在單字邊界處斷開。為了使水平捲動更有用,請嘗試以下操作
set sidescroll=5
set listchars+=precedes:<,extends:>
請參閱 'sidescroll''listchars'wrap-off。當 'diff' 選項開啟時,無法從 modeline 設定此選項。
'wrapmargin' 'wm' 'wrapmargin' 'wm' 數字 (預設值為 0) 緩衝區本地選項。從視窗右邊界開始換行的字元數。當輸入的文字超出此限制時,將會插入 <EOL>,並在下一行繼續插入。新增邊距的選項 (例如 'number''foldcolumn') 會進一步縮減文字寬度。當 'textwidth' 非零時,不使用此選項。另請參閱 'formatoptions'ins-textwidth
'wrapscan' 'ws' 'nowrapscan' 'nows' E384 E385 'wrapscan' 'ws' 布林值 (預設為開啟) 全域。搜尋會環繞檔案結尾。也適用於 ]s[s,搜尋拼寫錯誤。
'write' 'nowrite' 'write' 布林值 (預設為開啟) 全域。允許寫入檔案。當未設定時,不允許寫入檔案。可用於唯讀模式,其中仍允許修改文字。可以使用 -m-M 命令列引數重設。即使這需要寫入臨時檔案,仍然可以過濾文字。
'writeany' 'wa' 'nowriteany' 'nowa' 'writeany' 'wa' 布林值 (預設為關閉) 全域。允許寫入任何檔案,而無需 "!" 覆寫。
'writebackup' 'wb' 'nowritebackup' 'nowb' 'writebackup' 'wb' 布林值 (預設為開啟) 全域。在覆寫檔案之前建立備份。除非 'backup' 選項也開啟,否則在檔案成功寫入後,備份會被移除。警告:關閉此選項表示當 Vim 無法正確寫入您的緩衝區,然後由於任何原因 Vim 退出時,您會同時失去原始檔案和您正在寫入的內容。只有在您的檔案系統幾乎已滿且導致寫入失敗時才重設此選項 (並確保在寫入成功之前不要退出 Vim)。請參閱 backup-table 以獲取另一個說明。當 'backupskip' 模式符合時,無論如何都不會建立備份。根據 'backupcopy' 的設定,備份是一個新檔案或原始檔案已重新命名 (並寫入一個新檔案)。
'writedelay' 'wd' 'writedelay' 'wd' 數字 (預設值為 0) 全域。僅在與 'redrawdebug' 一起使用時才生效。每一行或每一次刷寫後要等待的毫秒數
主要
指令索引
快速參考