码迷,mamicode.com
首页 > 系统相关 > 详细

【VIM001】编写第一个vim脚本

时间:2015-03-14 22:56:47      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:

  学习vim总是看到各路高手都在实现自己的插件,看得我直流口水,也想自己编写vim插件,于是乎我也开干。那就从第一个脚本开始吧,开始掌控自己的vim。

  我们首先要问的是从哪里开始学起,我第一步就搜索各种资料,但是搜索归搜索,最终还是要去看文档的。在google的过程中,我发现了下面的帮助命令,就开始了我的学习之路,所谓取人鱼不如取人渔。

:help vim-script-intro
:h vim-script-intro

  到这个帮助文档的顶部,你会看到这个标题:Write a Vim script,这不正是我想找的东西嘛。下面就来看vim提供的第一个脚本,在写脚本之前,要先新建一个脚本。

~$ touch first.vim 
~$ vim first.vim

  说明:以:开始的是在vim中输入的命令,以~$开始的是linux下的命令,如果你还没有用linux,那还要去补充一下linux知识哦,本文是基于linux写的哦,当然在windows下使用linux,就显得不够专业了,开玩笑了~~

  好了,下面开始写脚本吧,vim提供的第一个示例:

:let i = 1
:while i < 5
:  echo "count is" i
:  let i += 1
:endwhile

  “:”可以省略,只有当你执行一个命令的时候才是必须的。脚本写好了,可是怎么执行呢?在vim里面执行下面命令

:source ~/first.vim

  ~/就是只当前用户的目录了。输出如下:

count is  1
count is  2
count is  3
count is  4

  我觉得比较可惜的是教程的编写者居然没有用helloworld!

  如果文章到这里就结束了,我也觉得没必要写了,直接看vim的教程就好了,这也是我第一次开始深入学习vim,以前都是知道怎么用就好了。我觉得这里可以更加深入的学习,留着这篇博文将来也好总结了嘛。

  我们先来解释一下这段代码。let是将一个值赋给一个变量,即将1赋值给i,一般的语法如下:

:let {variable} = {expression}

  我们输入下面命令,来查看let的详细说明:

:h let

  还是奉行以文档为主的宗旨,如果哪天你出现一个问题或者需求,google了半天没找到,你就得老老实实的去翻文档了,因为文档是最好的学习资料,胜过了任何教程。

:let {var-name} = {expr1}	

  将一个表达式的值赋给一个内部变量,{var-name}的类型由{expr1}决定,如果{var-name}不存在,就会新建一个变量。

:let {var-name}[{idx}] = {expr1}

  如果{var-name}是一个序列,可以对序列中的某个变量进行赋值,我们新建一个vim脚本:let.vim

let list = [0,1,2,3]  "整个序列赋值
echo list
let list[0] = 1 + 2  "表达式
let list[1] = 2
let list[2] = 3 * 4
let list[3] = 5/2
echo list 
echo list[2]

  接下来我们看let是如何操作二维序列的

:let {var-name}[{idx1}:{idx2}] = {expr1}

  这时候{expr1}可以是一个序列,我们可以给一个序列一个序列的赋值,也可以几个序列同时赋值,可以对其中的一个值进行赋值。

let list1 = [[0,1,2],[3,4,5],[6,7,8]]
echo list1
echo list1[0:1]
echo list1[0]
let list1[0] = [9,10,11]
echo list1
let list1[0][0] = 0
echo list1
let list1[0] = [‘ww‘,‘q‘,‘e‘]
echo list1

  更多let相关的信息,查看vim的帮助文档。

  代码托管:https://github.com/solomon5926/vim-script  

【VIM001】编写第一个vim脚本

标签:

原文地址:http://www.cnblogs.com/zhaoxinxing/p/4337288.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!