Vim 腳本語法筆記
分類
說明
本篇文章將分享一些實用的編程語法。在閱讀本文之前,建議您具備基本的 Vim 編程能力,這樣可以更容易理解內容。
變數的型別
查看文件 :help E712
以下介紹幾種較常用的型別
型別 | 描述 | 範例 |
---|---|---|
數值 | 32 位元或 64 位元帶符號整數。 | -123 |
浮點數 | 帶小數的數值。 | 123.456 |
字串 | NUL 結尾的 8 位元無符號字元 (即位元組) 的字串。 | “string” |
列表 | 項目的有序的序列,類似陣列。 | [1, 2, [‘a’, ‘b’]] |
字典 | 關聯的無序陣列: 每個項目包含一個鍵和一個值。 | {‘name’: “Nick”, ‘gender’: “Man”} |
函式參照 | 指向一個函數的引用 Funcref 。 |
function(“Callback”) |
變數範圍
變數有不同的命名空間,根據附加的前綴決定:
變數類型 | 前綴 | 說明 |
---|---|---|
(無) | 函數內: 區域於函數; | |
(無) | 老式腳本裡: 全域; | |
(無) | Vim9 腳本裡: 區域於腳本 | |
buffer-variable |
b: | 區域於當前緩衝區。 |
window-variable |
w: | 區域於當前視窗。 |
tabpage-variable |
t: | 區域於當前標籤頁。 |
global-variable |
g: | 全域。 |
local-variable |
l: | 區域於函數(只限於老式函數內使用)。 |
script-variable |
s: | 區域於 :source 的 Vim 腳本。 |
function-argument |
a: | 函數參數(只限於老式函數內使用)。 |
vim-variable |
v: | Vim 預定義的全域變數。 |
訪問和修改內建選項
大家常見的都是 set number
,在 Vim 腳本要訪問內建選項時要使用 &
。
" 設置行號顯示
set number
" 輸出: 1
echo &number
" 禁用行號顯示
let &number = 0
Vim 內建函式
Vim 提供的函數很多。請參考說明文件查看函式清單。
:help function-list
以它們的用途分類列出。
:help builtin-function-list
以字母順序排列的列表。
腳本實用命令
:exe[cute] {expr1} ..
計算 {expr1}
,傳回的字串作為 Ex 指令執行。
多個參數用空格連接。如果不想有額外的空格,請使用 ..
運算子來連接字串使其成為一個參數。
範例
let line_number = 10
execute line_number
execute line_number
會先將 line_number
解析為10,接著再執行 :10
命令,結果為跳轉到第10行,若直接調用 :line_number
,會發生「E492: 不是編輯器的命令: line_number」。
:redr[aw][!]
立即重畫螢幕。如果有 !
,先清螢幕。這對在執行腳本或函式的中間要刷新螢幕,或者在置位了 lazyredraw
而執行映射的過程中間都有用。
腳本實用函式
exists({expr})
回傳數值,如果 {expr}
被定義,回傳 TRUE
,不然回傳零。
範例
if exists("b:size") == v:false
b:size = 10
endif
查看文件 :help line()
line({expr} [, {winid}])
傳回數值,即 {expr}
給定的檔案位置行號。{expr}
參數是字串。
可接受的位置是:
字串 | 說明 |
---|---|
$ |
緩衝區的最後一行 |
完整位置內容請參考文件。
給予可選的 {winid}
參數時,從該視窗取值而不是目前視窗。
範例
line("$")
緩衝區的最後一行
相關文章:
一杯咖啡的力量,勝過千言萬語的感謝。
支持我一杯咖啡,讓我繼續創作優質內容,與您分享更多知識與樂趣!