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 |