Vvars

Nvim 的 :help 頁面,由 產生,源自 原始碼,並使用 tree-sitter-vimdoc 解析器。


預定義變數
有些變數可以由使用者設定,但類型無法變更。
v:argv argv-variable v:argv Vim 啟動時所帶的命令列參數。這是一個字串列表。第一項是 Vim 命令。請參閱 v:progpath 取得包含完整路徑的命令。
v:char char-variable v:char 用於評估 'formatexpr' 的參數,並在縮寫中使用 <expr> 時,用於輸入的字元 :map-<expr>。它也被 InsertCharPreInsertEnter 事件使用。
v:charconvert_from charconvert_from-variable v:charconvert_from 要轉換的檔案字元編碼名稱。僅在評估 'charconvert' 選項時有效。
v:charconvert_to charconvert_to-variable v:charconvert_to 轉換後檔案的字元編碼名稱。僅在評估 'charconvert' 選項時有效。
v:cmdarg cmdarg-variable v:cmdarg 檔案讀取/寫入命令的額外參數("++p"、"++enc="、"++ff=")。在觸發檔案讀取/寫入命令的自動指令事件之前設定。有一個前導空格,使其能夠直接附加到讀取/寫入命令之後。注意:此處不包含 "+cmd",因為它無論如何都會執行。
v:cmdbang cmdbang-variable v:cmdbang 像 v:cmdarg 一樣為檔案讀取/寫入命令設定。當使用 "!" 時,值為 1,否則為 0。請注意,這只能在自動指令中使用。對於使用者命令,可以使用 <bang>
v:collate collate-variable v:collate 運行環境目前用於排序的 locale 設定。這讓 Vim 腳本可以感知目前的 locale 編碼。技術上來說:它是 LC_COLLATE 的值。當未使用 locale 時,值為 "C"。此變數無法直接設定,請使用 :language 命令。請參閱 multi-lang
v:completed_item completed_item-variable v:completed_item 包含在 CompleteDone 後,最近完成單字的 complete-items 的字典。如果完成失敗,或在離開並重新進入插入模式後,則為空。注意:外掛程式可以修改該值來模擬內建的 CompleteDone 事件行為。
v:count count-variable v:count 上一個普通模式命令所給的計數。可用於取得映射之前的計數。唯讀。範例
:map _x :<C-U>echo "the count is " .. v:count<CR>
注意:需要 <C-U> 來移除在輸入 ':' 之後取得的行範圍。當有兩個計數時,例如 "3d2w",它們會相乘,就像在命令中發生的那樣,例如 "d6w"。也用於評估 'formatexpr' 選項。
v:count1 count1-variable v:count1 與 "v:count" 相同,但當未使用計數時,預設為 1。
v:ctype ctype-variable v:ctype 運行環境目前用於字元的 locale 設定。這讓 Vim 腳本可以感知目前的 locale 編碼。技術上來說:它是 LC_CTYPE 的值。當未使用 locale 時,值為 "C"。此變數無法直接設定,請使用 :language 命令。請參閱 multi-lang
v:dying dying-variable v:dying 通常為零。當捕獲到致命訊號時,會設定為 1。當捕獲到多個訊號時,數字會增加。可用於在自動指令中檢查 Vim 是否未正常終止。範例
:au VimLeave * if v:dying | echo "\nAAAAaaaarrrggghhhh!!!\n" | endif
注意:如果在 v:dying 為 1 時捕獲到另一個致命訊號,則不會執行 VimLeave 自動指令。
v:echospace echospace-variable v:echospace 在最後一螢幕行中,在導致 hit-enter-prompt 之前,可用於 :echo 訊息的螢幕格數。取決於 'showcmd''ruler''columns'。您需要檢查 'cmdheight' 來判斷在最後一行上方是否有可用的全寬行。
v:errmsg errmsg-variable v:errmsg 最後給定的錯誤訊息。可修改(可設定)。範例
let v:errmsg = ""
silent! next
if v:errmsg != ""
  " ... handle error
v:errors errors-variable assert-return v:errors 由斷言函數(例如 assert_true())找到的錯誤。這是一個字串列表。當斷言失敗時,斷言函數會附加一個項目。回傳值會指出這一點:如果向 v:errors 新增了一個項目,則回傳 1,否則回傳 0。若要移除舊的結果,請將其設為空
let v:errors = []
如果 v:errors 設定為除了列表以外的任何值,斷言函數會將其設為空列表。
v:event event-variable v:event 目前 自動指令 的事件資料字典。僅在事件生命週期內有效;儲存或傳遞 v:event 無效!請改為複製它
au TextYankPost * let g:foo = deepcopy(v:event)
鍵會因事件而異;請參閱特定事件的文件,例如 DirChangedTextYankPost
鍵 說明
abort 事件是否在中止條件期間觸發(例如,c_Escc_CTRL-C 對於 CmdlineLeave)。chan channel-id cmdlevel 命令列層級。cmdtype 命令列類型,cmdline-char。cwd 目前的工作目錄。inclusive 移動是 inclusive,否則為 exclusive。scope 事件特定的範圍名稱。operator 目前的 operator。也會為 Ex 命令設定(與 v:operator 不同)。例如,如果 TextYankPost:yank Ex 命令觸發,則 v:event.operator 為 "y"。regcontents 以 readfile() 樣式的行列表形式儲存在暫存器中的文字。regname 要求的暫存器(例如 "xyy" 的 "x"),或未命名操作的空字串。regtype 由 getregtype() 回傳的暫存器類型。visual 選取是可視的(與例如透過移動選取不同)。completed_item CompleteChanged 上目前選取的完成項目,如果沒有選取完成項目,則為 {}。height CompleteChanged 上快顯功能表的高度。width CompleteChanged 上快顯功能表的寬度。row CompleteChanged 上快顯功能表的行數計數,相對於螢幕。col CompleteChanged 上快顯功能表的欄數計數,相對於螢幕。size CompleteChanged 上完成項目的總數。scrollbar 如果快顯功能表有捲軸,則為 v:true,如果沒有則為 v:false。changed_window 如果事件在變更視窗(或標籤)時觸發,則 DirChanged 上為 v:true。status 工作狀態或結束代碼,-1 表示「未知」。TermClose reason 完成的原因。CompleteDone
v:exception exception-variable v:exception 最近捕獲且未完成的例外的值。另請參閱 v:throwpointthrow-variables。範例
try
  throw "oops"
catch /.*/
  echo "caught " .. v:exception
endtry
輸出:"caught oops"。
v:exiting exiting-variable v:exiting 結束代碼,或在呼叫 VimLeavePreVimLeave 自動指令之前的 v:null。請參閱 :q:x:cquit。範例
:au VimLeave * echo "Exit value is " .. v:exiting
v:false false-variable v:false 用於在 JSON 和 msgpack 中放入「false」的特殊值。請參閱 json_encode()。當用作字串時(例如在具有字串串連運算子的 expr5 中),此值會轉換為 "v:false",當用作數字時(例如在與數值運算子一起使用的 expr5expr7 中),會轉換為零。唯讀。
v:fcs_choice fcs_choice-variable v:fcs_choice 在 FileChangedShell 事件觸發後應該發生的動作。可用於自動指令,告知 Vim 如何處理受影響的緩衝區: reload 重新載入緩衝區(如果檔案已被刪除則無效)。 edit 重新載入緩衝區並偵測選項的值,例如 'fileformat''fileencoding''binary' (如果檔案已被刪除則無效)。 ask 詢問使用者該怎麼做,如同沒有自動指令一樣。但當只有時間戳記變更時,不會發生任何事。 <empty> 無動作,自動指令應執行所有需要完成的事情。預設為空。如果使用另一個(無效)的值,則 Vim 的行為如同為空,不會出現警告訊息。
v:fcs_reason fcs_reason-variable v:fcs_reason 觸發 FileChangedShell 事件的原因。可用於自動指令中,以決定要執行什麼操作和/或要將 v:fcs_choice 設定為哪個值。可能的值: deleted 檔案不再存在 conflict 檔案內容、模式或時間戳記已變更,且緩衝區已修改 changed 檔案內容已變更 mode 檔案模式已變更 time only 僅檔案時間戳記已變更
v:fname fname-variable v:fname 在評估 'includeexpr' 時:偵測到的檔案名稱。否則為空。
v:fname_diff fname_diff-variable v:fname_diff 差異(修補)檔案的名稱。僅在評估 'patchexpr' 時有效。
v:fname_in fname_in-variable v:fname_in 輸入檔案的名稱。在評估時有效
選項用於
'charconvert' 要轉換的檔案 'diffexpr' 原始檔案 'patchexpr' 原始檔案 並設定為 SwapExists 的交換檔案名稱。
v:fname_new fname_new-variable v:fname_new 檔案新版本的名稱。僅在評估 'diffexpr' 時有效。
v:fname_out fname_out-variable v:fname_out 輸出檔案的名稱。僅在評估時有效
選項用於
'charconvert' 產生的轉換檔案 [1] 'diffexpr' 差異的輸出 'patchexpr' 產生的修補檔案 [1] 當為寫入命令(例如:「:w file」)進行轉換時,它將等於 v:fname_in。當為讀取命令(例如:「:e file」)進行轉換時,它將是一個臨時檔案,且與 v:fname_in 不同。
v:folddashes folddashes-variable v:folddashes 用於 'foldtext':表示關閉摺疊之摺疊層級的破折號。在 沙箱中為唯讀。fold-foldtext
v:foldend foldend-variable v:foldend 用於 'foldtext':關閉摺疊的最後一行。在 沙箱中為唯讀。fold-foldtext
v:foldlevel foldlevel-variable v:foldlevel 用於 'foldtext':關閉摺疊的摺疊層級。在 沙箱中為唯讀。fold-foldtext
v:foldstart foldstart-variable v:foldstart 用於 'foldtext':關閉摺疊的第一行。在 沙箱中為唯讀。fold-foldtext
v:hlsearch hlsearch-variable v:hlsearch 指示搜尋醒目提示是否開啟的變數。僅當 'hlsearch' 啟用時,設定它才有意義。將此變數設定為零的作用類似於 :nohlsearch 命令,將其設定為一的作用類似於
let &hlsearch = &hlsearch
請注意,從函數返回時會還原該值。function-search-undo
v:insertmode insertmode-variable v:insertmode 用於 InsertEnterInsertChange 自動指令事件。值: i 插入模式 r 取代模式 v 虛擬取代模式
v:key key-variable v:key 字典目前項目的鍵。僅在評估與 map()filter() 一起使用的表達式時有效。唯讀。
v:lang lang-variable v:lang 執行環境訊息的目前地區設定。這允許 Vim 腳本了解目前的語言。技術上:它是 LC_MESSAGES 的值。該值與系統相關。此變數無法直接設定,請使用 :language 命令。當訊息的語言與用於字元編碼的語言不同時,它可以與 v:ctype 不同。請參閱 multi-lang
v:lc_time lc_time-variable v:lc_time 執行環境時間訊息的目前地區設定。這允許 Vim 腳本了解目前的語言。技術上:它是 LC_TIME 的值。此變數無法直接設定,請使用 :language 命令。請參閱 multi-lang
v:lnum lnum-variable v:lnum 用於 'foldexpr' fold-expr'formatexpr''indentexpr''statuscolumn' 表達式的行號,用於 'guitablabel''guitabtooltip' 的索引標籤頁碼。僅當正在評估這些表達式之一時有效。在 沙箱中為唯讀。
v:lua lua-variable v:lua 從表達式呼叫 Lua 函數的前綴。有關詳細資訊,請參閱 v:lua-call
v:maxcol maxcol-variable v:maxcol 最大行長度。根據其使用位置,可以是螢幕欄位、字元或位元組。目前所有系統上的值為 2147483647。
v:mouse_col mouse_col-variable v:mouse_col 使用 getchar() 獲得的滑鼠點擊欄位號碼。這是螢幕欄位號碼,與 virtcol() 類似。當沒有滑鼠按鈕點擊時,該值為零。
v:mouse_lnum mouse_lnum-variable v:mouse_lnum 使用 getchar() 獲得的滑鼠點擊行號。這是文字行號,而不是螢幕行號。當沒有滑鼠按鈕點擊時,該值為零。
v:mouse_win mouse_win-variable v:mouse_win 使用 getchar() 獲得的滑鼠點擊視窗號碼。第一個視窗的號碼為 1,與 winnr() 類似。當沒有滑鼠按鈕點擊時,該值為零。
v:mouse_winid mouse_winid-variable v:mouse_winid 使用 getchar() 獲得的滑鼠點擊的 window-ID。當沒有滑鼠按鈕點擊時,該值為零。
v:msgpack_types msgpack_types-variable v:msgpack_types 包含 msgpackparse()msgpackdump() 使用的 msgpack 類型的字典。字典內的所有類型都是固定的(不可編輯)空列表。要檢查某個列表是否是 msgpack 類型之一,請使用 is 運算符。
v:null null-variable v:null 用於在 JSON 中放置「null」和在 msgpack 中放置 NIL 的特殊值。請參閱 json_encode()。當用作字串時(例如,在 expr5 中使用字串串連運算符),此值會轉換為「v:null」;當用作數字時(例如,在 expr5expr7 中使用數字運算符),此值會轉換為零。唯讀。在某些情況下,v:null 可用於未設定的列表、字典等。這與空的列表、字典等略有不同。
v:numbermax numbermax-variable v:numbermax 數字的最大值。
v:numbermin numbermin-variable v:numbermin 數字的最小值(負數)。
v:numbersize numbersize-variable v:numbersize 數字中的位元數。這通常為 64,但在某些系統上可能是 32。
v:oldfiles oldfiles-variable v:oldfiles 從啟動時的 shada 檔案載入的檔案名稱清單。這些是 Vim 記住標記的檔案。清單的長度受 'shada' 選項的 ' 參數限制(預設為 100)。當未使用 shada 檔案時,清單為空。另請參閱 :oldfilesc_#<。可以修改清單,但這不會影響稍後儲存在 shada 檔案中的內容。如果使用字串以外的值,將會導致問題。
v:operator operator-variable v:operator 在普通模式中給定的最後一個運算符。這是一個單一字元,但以 <g><z> 開頭的命令除外,在這種情況下它是兩個字元。最好與 v:prevcountv:register 一起使用。如果您想取消運算符待定模式,然後使用運算符,則很有用,例如:
:omap O <Esc>:call MyMotion(v:operator)<CR>
該值會保持設定,直到輸入另一個運算符,因此不要期望它為空。對於 :delete:yank 或其他 Ex 命令,不會設定 v:operator。唯讀。
v:option_command option_command-variable v:option_command 用於設定選項的命令。在執行 OptionSet 自動指令時有效。
值選項的設定方式
"setlocal" :setlocal:let l:xxx "setglobal" :setglobal:let g:xxx "set" :set:let "modeline" modeline
v:option_new option_new-variable v:option_new 選項的新值。在執行 OptionSet 自動指令時有效。
v:option_old option_old-variable v:option_old 選項的舊值。在執行 OptionSet 自動指令時有效。根據用於設定的指令以及選項的類型,這可能是本地舊值或全域舊值。
v:option_oldglobal option_oldglobal-variable v:option_oldglobal 選項的舊全域值。在執行 OptionSet 自動指令時有效。
v:option_oldlocal option_oldlocal-variable v:option_oldlocal 選項的舊本地值。在執行 OptionSet 自動指令時有效。
v:option_type option_type-variable v:option_type 設定指令的作用域。在執行 OptionSet 自動指令時有效。可以是 "global" 或 "local"。
v:prevcount prevcount-variable v:prevcount 上一個 Normal 模式指令的計數。這是前一個指令的 v:count 值。如果您想取消 Visual 或 Operator-pending 模式,然後使用計數,這會很有用,例如:
:vmap % <Esc>:call MyFilter(v:prevcount)<CR>
唯讀。
v:profiling profiling-variable v:profiling 通常為零。在使用 ":profile start" 之後會設定為一。請參閱 profiling
v:progname progname-variable v:progname Nvim 被調用時的名稱(已移除路徑)。唯讀。
v:progpath progpath-variable v:progpath 目前正在執行的 Nvim 的絕對路徑。唯讀。
v:register register-variable v:register 目前 normal 模式指令所使用的暫存器名稱(無論該指令是否實際使用暫存器)。或者目前正在執行的 normal 模式對應(在需要暫存器的自定義指令中使用)。如果未提供任何暫存器,則為預設暫存器 '"',除非 'clipboard' 包含 "unnamed" 或 "unnamedplus",則為 "*" 或 '+'。另請參閱 getreg()setreg()
v:relnum relnum-variable v:relnum 'statuscolumn' 表達式的相對行號。唯讀。
v:scrollstart scrollstart-variable v:scrollstart 描述導致螢幕向上滾動的腳本或函數的字串。只有在它是空的時候才會設定,因此會記住第一個原因。對於手動輸入的指令,會設定為 "Unknown"。這可以用來找出為什麼您的腳本會導致出現「按下 Enter」提示。
v:searchforward searchforward-variable v:searchforward 搜尋方向:向前搜尋後為 1,向後搜尋後為 0。直接設定最後的搜尋模式時會重設為向前,請參閱 quote/。請注意,從函數返回時會還原該值。function-search-undo。可讀寫。
v:servername servername-variable v:servername Nvim 的主要監聽位址,serverlist() 返回的第一個項目。通常是 Nvim 在 啟動時建立的具名管道,或是由 --listen 提供(或是已棄用的 $NVIM_LISTEN_ADDRESS 環境變數)。
另請參閱 serverstart() serverstop()。唯讀。
$NVIM
$NVIM 由 terminaljobstart() 設定,因此暗示目前的環境是 Nvim 的子進程。範例:
if $NVIM
  echo nvim_get_chan_info(v:parent)
endif
請注意,$NVIM 的內容未來可能會變更。
v:shell_error shell_error-variable v:shell_error 上一個 shell 指令的結果。當值為非零時,表示上一個 shell 指令發生錯誤。當值為零時,表示沒有問題。這僅在 shell 將錯誤碼返回給 Vim 時才有效。當指令無法執行時,通常會使用值 -1。唯讀。範例:
!mv foo bar
if v:shell_error
  echo 'could not rename "foo" to "bar"!'
endif
v:statusmsg statusmsg-variable v:statusmsg 最後給定的狀態訊息。可修改(可以設定)。
v:stderr stderr-variable v:stderr 對應於 stderr 的 channel-id。該值始終為 2;使用此變數可使您的程式碼更具描述性。與 stdin 和 stdout(請參閱 stdioopen())不同,stderr 始終處於開啟以供寫入的狀態。範例:
:call chansend(v:stderr, "error: toaster empty\n")
v:swapchoice swapchoice-variable v:swapchoice SwapExists 自動指令可以將此設定為用於處理現有交換檔的選定選項: 'o' 以唯讀方式開啟 'e' 仍要編輯 'r' 復原 'd' 刪除交換檔 'q' 結束 'a' 中止。該值應該是單字元字串。空值會導致詢問使用者,就像沒有 SwapExists 自動指令時會發生的情況一樣。預設值為空。
v:swapcommand swapcommand-variable v:swapcommand 在檔案開啟後要執行的 Normal 模式指令。可以用於 SwapExists 自動指令,讓另一個 Vim 開啟檔案並跳到正確的位置。例如,當跳到標籤時,該值為 ":tag tagname\r"。對於 ":edit +cmd file",該值為 ":cmd\r"。
v:swapname swapname-variable v:swapname 找到的交換檔的名稱。僅在 SwapExists 事件期間有效。唯讀。
v:t_blob t_blob-variable v:t_TYPE v:t_blob Blob 類型的值。唯讀。請參閱:type()
v:t_bool t_bool-variable v:t_bool Boolean 類型的值。唯讀。請參閱:type()
v:t_dict t_dict-variable v:t_dict Dictionary 類型的值。唯讀。請參閱:type()
v:t_float t_float-variable v:t_float Float 類型的值。唯讀。請參閱:type()
v:t_func t_func-variable v:t_func Funcref 類型的值。唯讀。請參閱:type()
v:t_list t_list-variable v:t_list List 類型的值。唯讀。請參閱:type()
v:t_number t_number-variable v:t_number Number 類型的值。唯讀。請參閱:type()
v:t_string t_string-variable v:t_string String 類型的值。唯讀。請參閱:type()
v:termrequest termrequest-variable v:termrequest 從嵌入式 終端機中執行的進程發送的最新 OSC 或 DCS 控制序列的值。可以在 TermRequest 事件處理程式中讀取此值,以回應嵌入式應用程式的查詢。
v:termresponse termresponse-variable v:termresponse Nvim 從終端機接收到的最新 OSC 或 DCS 控制序列的值。在使用另一個逸出序列查詢終端機後,可以在 TermResponse 事件處理程式中讀取此值。
v:testing testing-variable v:testing 必須在使用 test_garbagecollect_now() 之前設定。
v:this_session this_session-variable v:this_session 最後載入或儲存的工作階段檔的完整檔案名稱。當未儲存任何工作階段檔時為空。請參閱 :mksession。可修改(可以設定)。
v:throwpoint throwpoint-variable v:throwpoint 最近捕獲且未完成的例外拋出的位置。在輸入指令時不會設定。另請參閱 v:exceptionthrow-variables。範例:
try
  throw "oops"
catch /.*/
  echo "Exception from" v:throwpoint
endtry
輸出:「Exception from test.vim, line 2」
v:true true-variable v:true 用於在 JSON 和 msgpack 中放入 "true" 的特殊值。請參閱 json_encode()。當作為 String 使用時(例如,在 expr5 中使用字串串接運算符時),此值會轉換為 "v:true",而當作為 Number 使用時(例如,在 expr5expr7 中使用數值運算符時),會轉換為一。唯讀。
v:val val-variable v:val ListDictionary 中目前項目的值。僅在評估與 map()filter() 一起使用的表達式時有效。唯讀。
v:version version-variable v:version Vim 版本號:主要版本乘以 100 加上次要版本。Vim 5.0 為 500,Vim 5.1 為 501。唯讀。使用 has() 來檢查 Nvim(不是 Vim)版本。
:if has("nvim-0.2.1")
v:vim_did_enter vim_did_enter-variable v:vim_did_enter 啟動期間為 0,在 VimEnter 之前為 1。唯讀。
v:virtnum virtnum-variable v:virtnum 'statuscolumn' 表達式的虛擬行號。當繪製虛擬行的狀態欄時為負數,當繪製實際緩衝區行時為零,當繪製緩衝區行的換行部分時為正數。唯讀。
v:warningmsg warningmsg-variable v:warningmsg 最後給出的警告訊息。可修改(可以設定)。
v:windowid windowid-variable v:windowid 應用程式特定的視窗「控制代碼」,可由任何附加的 UI 設定。預設值為零。 注意:對於 Nvim 視窗,請使用 winnr()win_getid(),請參閱 視窗 ID
主要
命令索引
快速參考