LV02-vimscript-05-语句.md
本文主要是vimscript一些基础知识和操作的相关笔记,若笔记中有错误或者不合适的地方,欢迎批评指正😃。
点击查看使用工具及版本
Windows | windows11 |
Ubuntu | Ubuntu16.04的64位版本 |
VMware® Workstation 16 Pro | 16.2.3 build-19376536 |
点击查看本文参考资料
参考方向 | 参考原文 |
Learn vimscript the Hard Way | https://learnvimscriptthehardway.stevelosh.com/ |
vim在线文档 | http://vimcdoc.sourceforge.net/ |
VIM 中文帮助 | https://vimcdoc.sourceforge.net/doc/help.html |
vim教程 | https://www.w3cschool.cn/vim/ |
一、vim
语句
一般来说,作为一门编程语言,都要有语句吧。不过vimscript
的语句都是一条命令,这与Shell
很类似。接下来就来了解一下vim
中的语句。这里有一份官方参考文档待查收:VIM: eval
二、基本语法
1. 条件语句
1.1 一般形式
在vimscript
中,条件语句的一般格式如下:
if...
1 | if expression |
if...else...
1 | if expression |
if...elseif...
1 | if expression |
【注意】if
后边的表达式不像C
或者Shell
那样需要用()
或者[]
之类的括起来,vimscript
中if
后边表达式直接写,只要表达式可以判断真伪即可。
1.2 if...
expression
为数字
在text.vim
文件中添加以下内容:
1 | if 1 |
在命令模式中执行:source test.vim
可以看到输出结果如下:
1 | true |
可以发现,只有if 1
进行了输出,if 0
为假,并未输出而是直接结束。
expression
为字符串
在text.vim
文件中添加以下内容:
1 | if "string1" |
在命令模式中执行:source test.vim
可以看到输出结果如下:
1 | 12345 |
可以发现,只有if "12345"
进行了输出,其他的都未进行输出。这是为什么呢?接下来我们来验证一下,对于vim
来说,它对含有数字的字符串会怎样处理。
在text.vim
文件中添加以下内容,为什么要做这几个实验呢?一来是网上就这么说的,而来,自己猜测一下,if
语句判断的是真或者假,对于计算机而言,只有1
或者0
,可以想象,最后字符串应该是被转化成了整数,可是具体转化成了多少,我们却不得而知,接下来就按照网上的测试进行一个验证:
1 | echo "string" + 1 |
在命令模式中执行:source test.vim
可以看到输出结果如下:
1 | 1 |
可以发现,当字符串与整数相加减时,**以一个数字开头的字符串会被强制转换成数字,否则会转换成0
**,在所有的强制转换完成后,当if
的判断条件等于非零整数时,vim
才会执行if
语句。
1.3 if...else...
在text.vim
文件中添加以下内容:
1 | if 0 |
在命令模式中执行:source test.vim
可以看到输出结果如下:
1 | false |
1.4 if...elseif...
在text.vim
文件中添加以下内容:
1 | if 0 |
在命令模式中执行:source test.vim
可以看到输出结果如下:
1 | else finally |
2. 循环
作为一门脚本编程语言,无可厚非,循环是一定要有的,接下来就来看一看Vinscriupt
中的循环 。vimscript
中的循环似乎不像C
那样丰富多彩,似乎我就只见过以下几种,后续有在遇到,再将其一起写在这里。
2.1 for
循环
2.1.1 一般格式
1 | for {var} in {object} |
【注意】
(1){var}
在之前可以没有定义,这里可以直接使用。
(2){object}
可以是 list
或 blob
。变量 {var}
设为每个项目的值。如果循环里某个命令出错,从 endfor
之后继续执行。
2.1.2 使用实例
在text.vim
文件中添加以下内容:
1 | let sum = 0 |
在命令模式中执行:source test.vim
可以看到输出结果如下:
1 | var= 1 |
2.2 while
循环
2.1.1 一般格式
1 | while expression |
2.1.2 使用实例
在text.vim
文件中添加以下内容:
1 | let num = 1 |
在命令模式中执行:source test.vim
可以看到输出结果如下:
1 | sum= 55 |
3. 循环中的命令
在vimscript
中,还有一些命令经常在循环中使用,这里罗列几个,由于其他的我还没有遇到过,所以暂时也不是很理解什么意思,后边遇到了再总结到一起。
3.1 con[tinue]
在 while
或 for
循环的内部,跳回循环开始的地方。简单来说就是直接进行下一次的循环,其后的语句不再执行。详情可查看:VIM: eval - continue
例如:在text.vim
文件中添加以下内容:
1 | let num = 1 |
在命令模式中执行:source test.vim
可以看到输出结果如下:
1 | num= 1 |
3.2 brea[k]
在 while
或 for
循环的内部,跳到相匹配的endwhile
或 endfor
之后的命令。简单来说就是直接结束本层循环,其后的语句不再执行。详情可查看:VIM: eval - break
例如:在text.vim
文件中添加以下内容:
1 | let num = 1 |
在命令模式中执行:source test.vim
可以看到输出结果如下:
1 | num= 1 |