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!"' | 将字符串当作表达式来执行,返回结果 |