set
一些变量,let
其他变量。有什么区别,什么时候需要另一个?此外,日晒过的vim颜色方案对
let g:blabla...
表示g:
在这种情况下有何意义?#1 楼
let
为变量分配值,而set
为Vim的内部选项之一分配值。例如,您将使用:let mystring='Hello!'
声明一个新变量,但是您可以使用
:set tabstop=4
或
:set expandtab
设置其中一个Vim的选项。另请参见:
:help let
,:help set
。g:
只是表示全局变量。这些“变量名称空间”中有几种-从:help internal-variables
开始: (nothing) In a function: local to a function; otherwise: global
|buffer-variable| b: Local to the current buffer.
|window-variable| w: Local to the current window.
|tabpage-variable| t: Local to the current tab page.
|global-variable| g: Global.
|local-variable| l: Local to a function.
|script-variable| s: Local to a |:source|'ed Vim script.
|function-argument| a: Function argument (only inside a function).
|vim-variable| v: Global, predefined by Vim.
评论
请注意,您可以通过let&{option name} = value来使用let设置vim的内部选项。
–EvergreenTree
15年4月30日在16:51
#2 楼
:set
用于内部选项,并处理选项的类型。它允许诸如反转布尔选项(例如:set invpaste
)之类的操作,以便从列表中(例如:set dictionary-=/tmp/myfile
)添加和删除设置。另一方面,:let
允许在vim中访问大量可变的东西,包括正则变量,选项,寄存器等,并且设置的值是对表达式求值的结果,而不是像:set
这样的简单值,这意味着:let
使您可以访问数学,字符串操作和函数。 > 例如,您可以
:let &dictionary=/tmp/myfile
将选项'dictionary'
设置为/tmp/myfile
(从而修改了上面在:set
示例中显示的相同选项)。您可以使用
:let g:myvar=42
设置全局变量。您询问的前缀提供了范围。 Doorknob的答案很好地覆盖了范围。 :let @a="Some text"
可以将自己的bin目录附加到Some text
环境变量,该目录传递给Vim执行的任何外部命令(适用于任何环境变量)。尽管
"ap
具有一些相当强大的功能(例如:let $PATH = $PATH . ":/home/me/bin"
将环境变量设置为当前缓冲区的文件名),它不知道设置是布尔值,因此它不像PATH
那样提供很好的访问或错误检查。最后,它是关于使用最佳工具完成工作的。如果您只想修改选项,请使用
let
。如果要在寄存器,选项,变量之间移动信息,或者要根据表达式的结果来确定值,则:let $MYFILE = @%
是您的工具。尽管您明确询问了Vim,但要注意的另一件事是
:set
在vi / Vim系列中更为常见,而:set
则较不常见(例如,nvi没有:let
命令,而viemu不提供对Vim的访问权限)通过:set
进行注册)。
评论
stackoverflow.com/questions/9990219/…