Vim 腳本語法筆記


建立時間: 2024年6月4日 08:37
更新時間: 2024年6月25日 08:48

說明

本篇文章將分享一些實用的編程語法。在閱讀本文之前,建議您具備基本的 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("$")
緩衝區的最後一行

觀看次數: 301
scriptsyntaxvim指令腳本語法
按讚追蹤 Enjoy 軟體 Facebook 粉絲專頁
每週分享資訊技術

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

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