Vim技能修炼教程(14) - 写个ex命令吧

简介: 我们第二节开始就写了语法高亮的插件。这一节,我们学习第二种插件的写法,就是写个我们自己的ex命令。

写个ex命令吧

我们第二节开始就写了语法高亮的插件。这一节,我们学习第二种插件的写法,就是写个我们自己的ex命令。

自定义ex命令的命令是:command,我们在~/.vim/下建立一个plugin目录,然后创建一个test.vim之类的文件:

:function Hello()
:echom "Hello,World!"
:endfunction

:command Hello call Hello()

首先,我们定义一个函数。函数名的首字母必须大写。函数中调用:echom去显示一个字符串。
然后我们通过:command来定义一个ex命令,命令的作用是去调用Hello()函数。

有了写新的ex命令的出口,我们现在终于可以使用Vimscript欢快地编程啦。

if语句

作为最基础的分支语句,if将面临学习Vimscript中的第一个坑,就是字符串的真假性的问题。

我们看下下面的例子:

:function Hello()
:if "Hello"
:echom "Hello is true"
:else
:echom "Hello is false"
:endif
:endfunction

我们可以通过:call Hello()来调用它,或者干脆封装成一个ex命令。

:command Hello call Hello()

不管如何,输出结果为:Hello is false。也就是说,Vimscript将"Hello"字符串转换成了数字0,于是,它是v:false.

字符串比较

另外在比较时需要注意的是字符串比较。在Vim中,"=="比较字符是否大小写敏感是跟用户的设置相关的。如果不想受这个影响,建议使用确定的大小写不敏感比较符"==?"和大小写敏感比较符"==#"

不光是"==", "!=", ">", "<", ">=", "<=", "is", "isnot"都有对就应大小写敏感和不敏感的版本。
正则匹配也是一样,"=~"和"!~"也有"=~#"和"=~?"的版本。

函数

  • 定义函数 :function, :endfunction
  • 返回值 :return
  • 调用函数 :call

在函数中使用参数时,请注意使用a:这个作用域描述符。

另外,与大部分vim命令一样,函数调用:call命令支持使用范围来调用。我们看个例子:

:function HelloArgs(arg)
:echom "Hello!" . a:arg
:endfunction

我们输入:

1,3call HelloArgs(getline("."))

结果为:

Hello!:function HelloArgs(arg)
Hello!:echom "Hello!" . a:arg
Hello!:endfunction

除了通过范围调用外,函数参数也可以支持不定个数。其实就是以列表方式传递参数。

循环结构

上节讲列表的时候,我们已经学习了for循环。

while循环

Vimscript还支持:while循环,例:

:function PrintStar(arg)
:let l:c = 0
:while l:c<a:arg
:echo "*"
:let l:c += 1
:endwhile
:endfunction

arg将是打印的行数,我们这么调用:

:call PrintStar(10)

break和continue

Vimscript中也支持:break退出循环和:continue继续下一次循环。

异常处理

Vimscript支持,:try ... :catch ... :finally :endtry的结构。
当然也支持:throw抛出一个异常。

try...finally结构,还可以用来处理资源释放。

目录
相关文章
|
3月前
|
Unix Linux 开发工具
在Linux中,有哪些基本的 Vim 命令?
在Linux中,有哪些基本的 Vim 命令?
|
1月前
|
Unix Linux 开发工具
Linux Vim的 命令大全
Linux Vim的 命令大全
20 0
|
2月前
|
存储 Linux Shell
常用vim命令和vim基本使用及Linux用户的管理,用户和组相关文件
这篇文章介绍了Vim编辑器的基本使用、常用命令和模式,以及Linux系统中用户和组的管理方法,包括用户和组相关文件如/etc/passwd、/etc/shadow和/etc/group的说明。
常用vim命令和vim基本使用及Linux用户的管理,用户和组相关文件
|
2月前
|
存储 Linux 编译器
linux中vim介绍以及常用命令大全
linux中vim介绍以及常用命令大全
77 8
|
3月前
|
开发工具
vim编辑器常用命令
vim编辑器常用命令
87 1
|
4月前
|
JSON Java Linux
linux 命令使用总结:vim,nohup,find,df,du,sudo,netstat,ll,curl,lastlog
linux 命令使用总结:vim,nohup,find,df,du,sudo,netstat,ll,curl,lastlog
67 5
|
3月前
|
开发工具
基本 Vim 命令 - 入门指南
【8月更文挑战第18天】
50 0
|
4月前
|
Ubuntu Unix Linux
Linux Vim最全面的教程
Linux Vim最全面的教程
|
5月前
|
程序员 开发工具
Vim命令大全:掌握编辑利器
Vim命令大全:掌握编辑利器
|
4月前
|
Ubuntu Linux 开发工具
Linux Vim最全面的教程
Linux Vim最全面的教程
189 0