举报投诉联系我们 手机版 热门标签 编程学
您的位置:编程学 > vimscript 函数 Vimscript 变量

vimscript 函数 Vimscript 变量

2023-06-01 17:18 Vim教程

vimscript 函数 Vimscript 变量

vimscript 函数 Vimscript 变量

vimscript 函数

到目前为止我们已经讲完了单行命令。在本书后面的三分之一个章节中将会把Vim脚本当作一个脚本语言。这部分东西不会像前面的你学到的东西一样马上可以学以致用,不过这是为本书的最后一部分打基础,最后一部分会讲解创建一个插件所需要的各个方面的东西。

我们开始吧。我们首先要了解的是变量。执行下面的命令。

:let foo = "bar"
:echo foo

Vim会显示barfoo现在是一个变量,我们将一个字符串"bar"赋值给它。现在执行这些命令:

:let foo = 42
:echo foo

Vim会显示42,因为我们将foo赋值为整型42

从这些小例子似乎可以看出Vim脚本是动态类型的。事实并非如此,我们之后会说明。

作为变量的选项

你可以通过一种特殊语法将_选项_作为变量来设置。执行下面的命令:

:set textwidth=80
:echo &textwidth

Vim会显示80。在名称的前面加一个&符号是告诉Vim你正在引用这个选项,而不是在使用一个名称刚好相同的变量。

我们来看下Vim是怎么处理布尔选项的。执行下面的命令:

:set nowrap
:echo &wrap

Vim显示0。然后再试试这些选项:

:set wrap
:echo &wrap

这次Vim会显示1。这些输出很明确提示Vim会将整型0当作"false",整型1当作"true"。我们可以更进一步假设Vim会将所有的非0值整型当作"truthy",而事实确实如此。

我们也可以使用let命令来_设置_作为变量的选项。执行下面的命令:

:let &textwidth = 100
:set textwidth?

Vim会显示textwidth=100

既然set可以搞定选项的设置,那我们为什么还要用let呢?执行下面的命令:

:let &textwidth = &textwidth + 10
:set textwidth?

这一次Vim显示textwidth=110。当你用set来设置某个选项,你只能给它设置一个常量值。当你使用let并将它作为一个变量来设置,你可以使用Vim脚本的所有强大之处来决定它的值。

本地选项

如果你想将某个选项作为变量来设置它的_本地_值,而不是_全局_值,你需要在变量名前面加前缀。

在两个分隔的窗口中分别打开两个文件。执行下面的命令:

:let &l:number = 1

然后切换到另一文件,然后再执行下面的命令:

:let &l:number = 0

注意第一个窗口会出现行号,而第二个没有。

作为变量的寄存器(Register)

你也可以将_寄存器_当作变量来读取和设置。执行下面的命令:

:let @a = "hello!"

现在把光标放到文本中的某个地方然后敲击"ap。这个命令会告诉Vim“在这里粘贴寄存器a中的内容”。我们设置了这个寄存器的内容,所以Vim会将hello!粘贴到你的文本中。

还可以读寄存器的内容。执行下面的命令:

:echo @a

Vim会输出hello!

在你的文件中选择一个单词然后用y复制,再执行下面的命令:

:echo @"

Vim会输出你刚才复制的单词。"寄存器是“未命名(unnamed)”寄存器,在复制的时候没有指定寄存器的文本都会放到这里。

在你的文件中执行搜索/someword,然后执行下面的命令:

:echo @/

Vim会输出你刚刚使用的搜索模式。这样你就可以通过编程来读_和修改_当前的搜索模式,有些时候这会很有用。

练习

检查你的~/.vimrc文件,然后将其中的一些setsetlocal命令替换为它们的let形式。记住布尔选项仍然需要被设置为某个值。

尝试将某个布尔选项设置为0和1之外的值,例如wrap。当你将它设置为一个不同的数字时会怎么样?如果设置为字符串又会是什么情况?

回到你的~/.vimrc文件,然后恢复所有的修改。在set可以搞定的时候,永远都不要用let,这是因为let更难于阅读。

阅读:help registers,然后看看你可以进行读和写的寄存器列表。

阅读全文
以上是编程学为你收集整理的vimscript 函数 Vimscript 变量全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
  • svg曲线 SVG 曲线

    svg曲线 SVG 曲线

    2023-06-16 SVG教程

    SVG polyline polyline 元素表示曲线,即一组连接在一起的直线,它可以有很多的点,所有点的位置都放在同一个 points 属性中: S...

  •  XML Schema import 元素

    XML Schema import 元素

    2023-04-22 XMLSchema教程

    XML Schema import 元素 完整 XML Schema 参考手册定义和用法 import 元素用于向一个文档添加带有不同目标命名空间的多个 schema...

  •  XSLT <xsl:sort> 元素

    XSLT <xsl:sort> 元素

    2023-05-06 XSLT教程

    XSLT xsl:sort 元素XSLTxsl:sort元素被用来对输出排序。 XSLT 元素参考手册定义和用法 xsl:sort 元素用于对输出结果进行排序。 ...

  •  XSLT node-set() 函数

    XSLT node-set() 函数

    2023-04-14 XSLT教程

    XSLT 函数参考手册本节是对 XSLT 中的 node-set()函数的简单介绍。定义和用法使您可以将树转换为节点集。产生的节点集总是包含单...

  • xml教程 XML教程
© 2024 编程学 bianchengxue.com 版权所有 联系我们
桂ICP备19012293号-7 返回底部