let, set以及vim中的变量

vim中经常用let和set给变量赋值,主要操作的变量分为几种类型

  • variables。用户自己定义的变量
  • options。系统定义的变量
  • register。其实这个不是变量,是register的名字,也可以使用let赋值,本文放一起讨论

variables:自定义变量

自定义变量一般出现在脚本中,如果你不想写个vim插件,基本上不会去碰自定义变量。我们碰到自定义变量的场景,大多数是在使用vim插件的时候,需要配一下相关变量。

variable使用let赋值,语法:

:help variables

//设置
let foo=123

//查看
echo foo

options:系统变量

options是用户经常碰到的变量,比如说我们想设置下工作路径,tab等于多少个字符,显示行号等,都是设置option。

options使用set赋值,但是也可以用let &option的方式进行赋值,语法:

:help options

//查看
echo &path

设置方法1
let &path=&path+/user/include

设置方法2
set path+=/usr/lib


//查看当前值
set option?

//恢复默认值
set option&

register变量

register可以用let直接赋值,语法:

//设置
let @a = "hello!"

//查看
echo @a

local vs global作用域

无论是options,还是variables,都分为local和global作用域。比如打开了两个文件,在文件1中设置了local属性,只对文件1有效,文件2无效

  • global针对当前的vim实例。
  • local是仅对当前的buffer

使用的命令有set, setl, setg:

:help set
:help setg
:help setl

具体区别如下:

  • set会同时设置local和global
  • setl只设置local
  • setg只设置global
        Command          global value       local value
      :set option=value      set                set
 :setlocal option=value       -                 set
:setglobal option=value      set                 -
      :set option?            -                display
 :setlocal option?            -                display
:setglobal option?          display              -

当设置global的时候,并不会覆盖local的值。除非使用<符号,比如:

:setg path<

同理, 除了使用set,也可以使用let设置

//系统变量
let &[g|l]:optionname=xxx

//自定义变量
let [g|l]:optionname=xxx

let还可以指定更复杂的范围:

To set a local variable, use w, b, t, s, or l instead of g in g:var.
w is for the current window, b is for the current buffer, t is the current tab, s is the current script, and l is the current function.

If you don’t use a prefix, it defaults to global (but l if inside a function)

let vs set

set只用于设置系统变量

let可以用于设置所有变量,包括自定义变量



《 “let, set以及vim中的变量” 》 有 3 条评论

  1. Patients were treated with three dimensional conformal radiotherapy 3D CRT using a tangential photon irradiation technique buy priligy pakistan

  2. I applied massaged in 3 sprays every night on each breast for 5 minutes buy priligy in usa An important concern in patients who receive high dose alkylating therapy is DNA damage of nontumour cells, which may in itself lead to second tumours

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

About Me

一位程序员,会弹吉他,喜欢读诗。
有一颗感恩的心,一位美丽的妻子,两个可爱的女儿
mail: geraldlee0825@gmail.com
github: https://github.com/lisuxiaoqi
medium: https://medium.com/@geraldlee0825