VimScript: 变量声明和基础类型操作
# 变量
# 声明方式
|
|
# 作用域
标识 | 作用域 | 变量前缀 |
---|---|---|
buffer-variable | 在当前缓冲文件内可见 | b: |
window-variable | 在当前窗口内可见 | w: |
tabpage-variable | 在当前标签页内可见 | t: |
global-variable | 全局可见 | g: |
local-variable | 在当前函数内可见 | l: |
script-variable | 在当前脚本内可见 | s: |
function-argument | 函数参数 | a: |
vim-variable | 全局可见(Vim 预定义的变量) | v: |
详见:
:help variable-scope
# 基础数据类型
类型 | 例子 | 说明 |
---|---|---|
数值型(Number) | 123 ,-123 ,0x10 | |
浮点型(Float) | 123.456 ,3.14e-6 | 编译时,需要 +float 特性 |
字符串(String) | 'nextchen' , "Hello\"You" |
# 数值(Number) 的常规操作
语法 | 功能 | 用例 |
---|---|---|
a+b | 加 | 1+1 " 结果是 2 |
a-b | 减 | 2-2 " 结果是 0 |
a*b | 乘 | 2*2 " 结果是 4 |
a/b | 除 | 3/2 " 结果是 1,自动类型转换 3/2.0 " 结果是 1.5 |
a%b | 求余 | 3/2 " 结果是 1 |
abs(x) | 绝对值 | |
round(x) | 四舍五入 | |
ceil(x) | 向上取整 | |
floor(x) | 向下取整 | |
exp(x) | 自然对数 | $e^x$ |
log(x) /log10(x) | 自然(或10)的对数 | |
pow(x, y) | N次方 | $x^y$ |
sqrt(x) | 平方根 | |
isinf(x) | 是否无穷大 | |
isnan(x) | 是否是个数值 |
详见文档:
:help float-functions
和:help expr-number
# 字符串(String) 的常规操作
详见文档:
:help string-functions
和:help expr-string
语法 | 功能 |
---|---|
len(x) | 计算字符长度 |
split(x[, sep='\W\+']) | 字符拆封 拆封逻辑默认是空白 |
join(list[, sep=" "]) | 字符列表合并 |
tolower(x) /toupper(x) | 转成大小写 |
trim(x) | 去除前后空格 |
slice(str[, start, count]) | 字符串截取 |
match(str, pat, [start, count]) | 匹配函数,根据 pat 匹配模式在 str 中检索;如果匹配,返回的是匹配字符串的开始位置; 如果不匹配,返回 -1; |
matchend(str, pat, [start, count]) | 参数用法和 match() 一样;如果匹配,返回的是匹配字符串的结束位置; 如果不匹配,返回 -1; |
matchstr(str, pat, [start, count]) | 参数用法和 match() 一样;如果匹配,返回的是匹配字符串; 如果不匹配,返回 -1; |
matchlist(str, pat, [start, count]) | 参数用法和 match() 一样;如果匹配,返回 1 个全匹配和 9 个子匹配; 如果不匹配,返回空列表; |
matchfuzzy(strlist, str [, dict]) | 模糊匹配,返回匹配的 str 列表; |
substitute(str, pat, sub, flags) | 模式替换,将识别到 pat 替换成 sub ; |
==
[, a=1, ...]
代表可选参数 ==
# 代码 Demo
|
|
match()
系函数:
|
|
0 是初始索引
|
|
substidute()
模式替换
|
|
# 常见命令
代码 | 说明 |
---|---|
" 这是注释 | 注释 |
:echo 'Hi!' | 输出到 Vim 终端 |
:echom[sg] 'Hi!' | 输出到信息日志,你可以通过 :message 查看 |
:eval 'echo "Hi!"' | 将字符串当作表达式来执行,抛弃结果 |
:execute 'echo "Hi!"' | 将字符串当作表达式来执行,返回结果 |