转载自:辛星和您一起学vim脚本第一节

如本文侵犯了您的版权,请联系windeal12@qq.com

这几天在网上看了辛星的一些vim教程博文,觉得很有收获,也很实用,适合入门,所以转载其中一篇留个网址。

辛星的vim教程已经有整理成pdf,在其博文中点击打开链接有下载链接。相信其他教程也写得不错,特此推荐。

最近把所有的编程工作交给了vim,但是vim实在是博大精深,以前写vim的配置文件只能靠百度谷歌去搜索,但是越来越发现搜索到的那点东西不仅非常零散,还跟我的需求不一样,因此,也就感觉有必要自己学习一下vim的脚本。

其实vim脚本并不复杂,我们常见的vimrc、syntax等文件都是vim脚本文件,这里咱们先写一个简单的vim脚本文件,代码如下:

  1. :let i =1
  2. :while i < 5
  3. :   echo "count is" i
  4. :   echo "辛星加油"
  5. :   let i +=1
  6. :endwhile

然后保存为xinxing.vim,然后咱们在同一个目录下编辑文件的时候,进入命令模式下,然后输入:source xinxing.vim,然后发现效果如下:

当然如果咱们按下回车键之后,发现上面的文本就会消失了,其实我们写的xinxing.vim就是vim脚本。这里涉及到一个let命令,该命令用于变量的赋值,通常的形式为:

let 变量名 = 值   ,它和咱们的编程语言是有点区别的,但是很像,这里面的echo命令用于打印其参数,这一点对于php程序员再好理解不过了,然后while命令和endwhile命令配对使用。

***************************************变量***********************************************************

1.vim脚本中的变量是有作用域的,如果不写的话就默认是一个全局变量,如let xin = 1  和let g:xin = 1都表示让xin这个变量取值为1。

2.当然咱们也可以指定s变量,让其只能在某个脚本中起作用,比如let  s:var = 1就只能在某个脚本中用。

3.如果在某个buffer中用,则指定前缀为b,如果只能在某个window中用,则指定前缀为w。

4.咱们要删除某个变量,就可以使用unlet 这样的形式删除,但是如果变量不存在会报错,咱们可以使用unlet!的形式来删除不存在变量的时候不会报错。

*****************************语句*****************************

1.vim条件控制和其他语言很相似,比如:

  1. if  条件1
  2. 语句1
  3. elseif  条件2
  4. 语句2
  5. else
  6. 语句3
  7. endif

2.当然这里的elseif和else可以没有,需要注意的是,这里if和else是命令,因此不需要括号什么的。

3.vim还支持比如==,<=,>=等比较运算符和加减乘除模等运算符。

4.对于字符串,还有两个运算符也很重要,那就是=~表示匹配,而!~表示不匹配。

5.在操作符后面添加#表示不忽略大小写,在后面添加?表示忽略大小写。

6.另外,vim还可以使用break和continue,但是vim的语法中不需要任何的分号和大小括号,这一点对于类C的程序员来说需要注意下,虽然不习惯,但是必须服从。

7.execute命令可以用于执行一个表达式,eval用于获取一个表达式的值。

**************函数和命令**********************************

1.vim定义了很多函数,比如有一个xin函数,咱们调用它的时候只需要使用call  xin()即可,当然括号中要写相应的参数。

2.我们也可以编写自定义函数:

  1. function   函数名(用逗号分开的参数列表)
  2. 函数体
  3. endfunction

3.我们规定函数名必须以大写字母开头,而且函数也是变量,因此可以指定作用域。

4.值得说明的是,这里的call和function都是命令,它们在执行的时候是不需要加括号的,但是函数是需要加括号的。

5.我们编写一个获取两个数的较小的那个的函数把:

  1. function! s:Min(n1,n2)
  2. if a:n1 < a:n2
  3. let small = a:n1
  4. else
  5. let small = a:n2
  6. endif
  7. return small
  8. endfunction

6.这里的Min是函数名,其中的a:n1和a:n2表示是函数中的变量,而small是函数内部的变量,在外部是不能访问的。

7.function后面的感叹号则是避免当两次引用该文件的时候产生错误。

传播编程知识,振兴中华软件,从我做起。

辛星笔记——VIM学习篇(推荐阅读)的更多相关文章

  1. 辛星深入分析vim的自己主动补全功能以及vim的映射

    曾经对于vim的自己主动补全功能,都是须要的时候从网上下载点配置项,然后复制到自己的vimrc上去,自己也不知道是什么意思.结果发现搜索到的非常多自己主动补全的方式都非常另类,有的喜欢在补全大括号的时 ...

  2. 辛星笔记之高质量JavaScript代码书写要点

    首先本文章是http://www.zhangxinxu.com/wordpress/?p=1173 的读书笔记,读者能够自己到鑫旭的空间去阅读原文.这里我对其进行了简化. 可维护的代码的一些要求: ( ...

  3. 辛星跟您玩转vim第一节之vim的下载与三种模式

    首先值得一提的是,我的vim教程pdf版本号已经写完了,大家能够去下载,这里是csdn的下载地址:点此下载 ,假设左边的下载地址挂掉了,也能够自行在浏览器以下输入例如以下地址进行下载:http://d ...

  4. 辛星跟您玩转vim第二节之用vim命令移动光标

    首先值得一提的是,我的vim教程pdf版本号已经写完了,大家能够去下载.这里是csdn的下载地址:csdn下载.假设左边的下载地址挂掉了,也能够自行在浏览器以下输入例如以下地址进行下载:http:// ...

  5. 辛星跟您玩转vim第四节之操作文本内容

    首先值得一提的是.我的vim教程pdf版本号已经写完了.大家能够去下载,这里是csdn的下载地址:csdn下载,假设左边的下载地址挂掉了,也能够自行在浏览器以下输入例如以下地址进行下载:http:// ...

  6. linux学习心得之vim/Cvim篇

    linux学习心得之vim/Cvim篇 在linux 下,vim 时一种最常见的编辑器,很多linux的发行版就自带了.我的是CentOS 6.3. 基本上Vim共分为3种模式,分别是一般模式,编辑模 ...

  7. (转)深度学习word2vec笔记之基础篇

    深度学习word2vec笔记之基础篇 声明: 1)该博文是多位博主以及多位文档资料的主人所无私奉献的论文资料整理的.具体引用的资料请看参考文献.具体的版本声明也参考原文献 2)本文仅供学术交流,非商用 ...

  8. 深度学习word2vec笔记之基础篇

    作者为falao_beiliu. 作者:杨超链接:http://www.zhihu.com/question/21661274/answer/19331979来源:知乎著作权归作者所有.商业转载请联系 ...

  9. 鸟哥Linux私房菜基础学习篇学习笔记2

    鸟哥Linux私房菜基础学习篇学习笔记2 第九章 文件与文件系统的压缩打包: Linux下的扩展名没有什么特殊的意义,仅为了方便记忆. 压缩文件的扩展名一般为: *.tar, *.tar.gz, *. ...

随机推荐

  1. [转]关于Navicat和MYSQL字符集不统一出现的中文乱码问题

    原文链接:关于Navicat和MYSQL字符集不统一出现的中文乱码问题 最近遇到一串关于MYSQL中文乱码的问题,问题背景是这样的: 在此之前,服务器上安装好MySQL之后就立马重新配置了字符集为ut ...

  2. 【DeepLearning学习笔记】Neurons神经元

    今天找到一个比较好的deep learning的教材:Neural Networks and Deep Learning 对神经网络有详细的讲解,鉴于自己青年痴呆,还是总结下笔记吧=.= Percep ...

  3. php下获取http状态的实现代码

    在项目开发中,有时我们需要知道远程的URL地址是否能访问正常,判断其正常与否后进行下一步的操作,那么在PHP中如何获取远程HTTP的状态呢? 文件preg.php header("HTTP/ ...

  4. SublimeText3 编辑器使用小结

    1. 快捷键: Command + shift + D : 复制当前行 Command + shift + K : 删除当前行 Command + J : 合并一行 Command + Enter : ...

  5. Caffe学习笔记(三):Caffe数据是如何输入和输出的?

    Caffe学习笔记(三):Caffe数据是如何输入和输出的? Caffe中的数据流以Blobs进行传输,在<Caffe学习笔记(一):Caffe架构及其模型解析>中已经对Blobs进行了简 ...

  6. Tensorflow平台快速搭建:Windows 7+TensorFlow 0.12.0

    Tensorflow平台快速搭建:Windows 7+TensorFlow 0.12.0 1.TensorFlow 0.12.0下载 2016年11月29日,距离TensorFlow 宣布开源刚刚过去 ...

  7. Matlab绘图基础——colormap在数字图像处理及三维图形展示上的应用(分层设色)

        色图(color map)是MATLAB系统引入的概念.在MATLAB中,每个图形窗口只能有一个色图.        色图是m×3 的数值矩阵,它的每一行是RGB三元组.色图矩阵可以人为地生成 ...

  8. Elasticsearch之分词器的作用

    前提 什么是倒排索引? Analyzer(分词器)的作用是把一段文本中的词按一定规则进行切分.对应的是Analyzer类,这是一个抽象类,切分词的具体规则是由子类实现的,所以对于不同的语言,要用不同的 ...

  9. Elasticsearch之停用词

    前提 什么是倒排索引? Elasticsearch之分词器的作用 Elasticsearch之分词器的工作流程 Elasticsearch的停用词 1.有些词在文本中出现的频率非常高,但是对文本所携带 ...

  10. Windows 下 ORA-12560: TNS: 协议适配器错误的问题

    Windows 下 ORA-12560: TNS: 协议适配器错误的问题原因有三个: 1.监听服务没有起起来.windows平台个一如下操作:开始---程序---管理工具---服务,打开服务面板,启动 ...