文章

vim 设置变量

let 和 set 区别

在Vim中,let命令用于赋值操作,它可以用于设置变量、选项、寄存器和环境变量的值。与set命令相比,let的主要区别在于它不仅可以用于设置选项,还可以用于设置变量、寄存器和环境变量。此外,let命令的右侧是一个表达式,这意味着你可以在赋值操作中使用表达式的结果。这使得let命令在Vim脚本中非常灵活,可以用于更复杂的操作,如数学运算、字符串操作和函数调用。

在 Vimscript 和 Lua 中,letset 的语法有一些规则,尤其是关于等号两边是否需要空格。

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 关键字,对于常量使用 constfinal 关键字修饰,具体参考 :help var

本文由作者按照 CC BY 4.0 进行授权

© TheDarkStarJack. 保留部分权利。

[本站总访问量次] [本站访客数人次] [本文总阅读量次]

本站采用 Jekyll 主题 Chirpy