vim 设置变量
let 和 set 区别
在Vim中,let
命令用于赋值操作,它可以用于设置变量、选项、寄存器和环境变量的值。与set
命令相比,let
的主要区别在于它不仅可以用于设置选项,还可以用于设置变量、寄存器和环境变量。此外,let
命令的右侧是一个表达式,这意味着你可以在赋值操作中使用表达式的结果。这使得let
命令在Vim脚本中非常灵活,可以用于更复杂的操作,如数学运算、字符串操作和函数调用。
在 Vimscript 和 Lua 中,let
和 set
的语法有一些规则,尤其是关于等号两边是否需要空格。
let
语法
在 Vimscript 中,使用 let
语句设置变量时,等号两边可以有空格,但也可以没有空格。下面是几种合法的写法:
1
2
3
4
let myvar = 10 " 等号两边有空格
let myvar=10 " 等号两边没有空格
let myvar =10 " 等号左边有空格,右边没有空格
let myvar= 10 " 等号左边没有空格,右边有空格
set
语法
在 Vimscript 中,使用 set
命令设置选项时,等号两边不能有空格。下面是合法和非法的写法示例:
1
2
3
4
5
set number " 合法,不使用等号
set number=1 " 合法,等号两边没有空格
set number = 1 " 非法,等号两边有空格
set number =1 " 非法,等号左边有空格
set number= 1 " 非法,等号右边有空格
总结
- 使用
let
语句时,等号两边可以有空格或没有空格,都合法。 - 使用
set
命令时,等号两边不能有空格,否则会导致语法错误。 - 使用
let
主要用来设置非内部变量(也可以用来设置内部变量,不过还是建议和 set 区分一下),set
用来设置系统变量值
let
可以使用let
命令将一个变量的值赋给另一个变量,或者将一个选项的值赋给一个变量,反之亦然。这种灵活性使得let
命令在Vim脚本中非常强大,可以用于实现各种复杂的逻辑和功能。
在 Vim 脚本中,let
命令用于赋值操作,即用于定义或修改变量的值。通过使用 let
,你可以创建新变量、修改现有变量的值,或者为 Vim 的一些内置选项和寄存器赋值。let
的使用增加了 Vim 脚本的灵活性和动态性,允许用户和插件开发者存储和操作数据。
作用域
let w:is_cat = 1
- g 为全局作用域(若未指定作用域,则默认为全局作用域)。
- v 为 Vim 所定义的全局作用域。
- l 为局部作用域(在函数内部,若未指定作用域,则默认为这个作用域)。
- b 表示当前缓冲区。
- w 表示当前窗口。
- t 表示当前标签页。
- s 表示使用:source’d 执行的 Vim 脚本文件中的局部文件作用域。
- a 表示函数的参数。
set
set
就没有什么太多作用域了,要么全局(setglobal),或者本地(setlocal)只在当前缓冲区或窗口生效
- 使用
set
设置变量的时候默认全局生效,包括当前窗口。 - 使用
setglobal
设置的时候对全局生效,但是不包括当前会话。 - 使用
setlocal
设置的时候仅对当前会话窗口生效。
vim9scipt
在 vim9scipt 中设置变量的方法已经变为 var
关键字,对于常量使用 const
和 final
关键字修饰,具体参考 :help var
本文由作者按照
CC BY 4.0
进行授权