VIMSCRIPT学习

1.vimscript

vim是一个功能相当强大的编辑器。vimscript是一门用于定制Vim的脚本语言。vimscript其实就是
vim命令。例如在vim中,保存一个文件使用命令:write(或者缩写
:w)并回车确认。在这里其实用:符号进入vim命令行模式,然后使用vimscript的write命令来保存文件。

因此,vimscript中的命令可以在vim的命令行模式中执行,也可以编写到文件(例如vimrc)中形成vim脚本文件,然后由vim去执行。其中vim的插件编写就采用的是第二种。

2.vimscript的注释

在vimscript脚本文件中,使用左双引号"来表示注释。

3.vimscript常用的命令

set number  "设置行号
set nonumer  "取消行号

3.vimscript中的键盘映射命令map族

vim中已经有了很多的默认的键盘快捷键。例如*、#以及dd等等这些。然后我们可以使用map类的命令去设置一些自定义的键盘快捷键。map类的命令有好几个,如下(比如map命令可以设置Normal/Visual/Operator
Pending三种模式下的键盘快捷键,而imap可以设置Insert模式的键盘快捷键):

(1)设置键盘映射

使用:map<要映射的键> <被映射的键>的语法来设置一个键盘映射。

例A):map <F5> i{<Esc>ea}<Esc> #使用F5可以将光标所在的单词word加上花括号,其中i是进入insert模式,然后插入{,然后回到Normal,e表示光标移到单词word末尾,a进入Insert模式,然后插入},然后回到Normal模式。

例B):map <F10><Esc>:tabnew<CR> #使用F10在vim中打开一个新的标签页。

例C):imap <c-d> <Esc>ddi 
#在Insert模式下,按下Ctrl+d会删除一行,删除一行后仍旧处在Insert模式下。

备注:其中<Esc>代表Esc退出键,<CR>代表回车键,<Space>代表空格键等等

(2)查看vim设置了哪些键盘快捷键

使用:map命令(不带任何参数)可以列出vim所有工作模式下的快捷键,输出结果中第一列表示的哪一个工作模式下的快捷键,如下表格:

同时使用:nmap/:vmap/:omap/:map!/:imap/:cmap命令(不带任何参数)可以查看对应vim工作模式下的快捷键。

(3)取消键盘快捷键

如果想要取消一个映射,可以使用命令:unmap
<键盘快捷键>,例如取消绑定到F10的快捷键:unmap<F10>。值得注意的是,必须为:unmap命令指定一个参数。如果未指定任何参数,那么系统将会报错,而不会取消所有的键盘映射。

同时,针对不同模式下的键盘映射,需要使用与其相对应的unmap命令。例如:使用:iunmap命令,取消插入模式下的键盘映射;而取消常规模式下的键盘映射,则需要使用:nunmap命令。

如果想要取消所有映射,可以使用:mapclear命令。请注意,这个命令将会移除所有用户定义和系统默认的键盘映射。

(4)关于键盘映射中leader介绍

我们是map来自定义一个键盘快捷键时,我们按下快捷键,就可以使用我们想要的功能。但是如果这个快捷键比如<Space>,如果我们确实要使用空格键输入一个空格怎么办。这个问题其实就是快捷键和按键的本来用途之间有冲突嘛。其实我们可以对我们的所有的快捷键设置一个前缀,比如-或,。例如:map-<F10><Esc>:tabnew<CR>这样设置,那么我们就可以使用F10干它自己该干的事。这种自己在配置键盘映射时,认为加入前缀比较麻烦。vimscript中支持用leader来为快捷键设置一个前缀。配置方法如下:

:letmapleader = "-"   ''用let命令来是设置一个前缀
:nnoremap<leader>d dd ''当我们在vim中输入-d时就会删除一行了。

其他闲杂知识:

(1)在vim中执行:help可以打开vim的帮助文档。执行:helpcommand可以查看任意的command的帮助文档,例如可以执行:help
write看看write命令的帮助文档。

(2)在vim中执行:echo$MYVIMRC可以获取vimrc文件的路径和位置。

学习资料参考于:

http://learnvimscriptthehardway.onefloweroneworld.com/

http://feihu.me/blog/2014/intro-to-vim/

http://learnvimscriptthehardway.onefloweroneworld.com/chapters/06.html

http://yyq123.blogspot.com/2010/12/vim-map.html

时间: 2024-10-02 21:15:19

VIMSCRIPT学习的相关文章

Write with Vim (2)

Write with vim(1) Vim的下一步 对我自己而言,也是在这一步. 现在你对Vim已经有所了解,hjkl肯定会,f也能熟用,,可能被你映射成了<leader>,或者等等.但是我还是想要写这个blog,来指引新手(诚然,也是指引自己).误导了也别骂我,请说出自己的观点. 这个时候,我建议你将Esc映射成ii,然后禁用Esc " 强迫自己不使用ESC inoremap <Esc> <nop> inoremap ii <ESC> 在Writ

vim学习、各类插件配置与安装

vim学习.各类插件配置与安装 vim 插件 配置 1. vim学习 vim基础学习:根据网上流行基础文章<简明Vim练级攻略>,进阶书籍<vim实用技巧>.注:进阶书籍可以在vimtutor之后再进行观看 查看vim自带的简易版本学习教程vimtutor,ubuntu可以直接通过shell命令行下输入: vimtutor //vimtutor is a application and is started by calling its name vimtutor有在线版本(chr

《Learn Vimscript the Hard Way》

1 学习Vimscript能干啥? a) 能帮助我们更加快捷的使用vim编写程序. b) 能够帮助我们理解~/.vimrc中的一些配置的含义,为什么需要这样配置. c) 学习之后,可以自己写一些vim插件,提高自己阅读和编写代码速度和效率. 2 Vimscript是什么? vimscript是一种脚本编程语言.主要用于vim中.它有自己定义变量的方式,有分支和循环结构,以及函数的结构等. 3 如何学习Vimscript? 可以点击下载以下书籍参考学习:<Learn Vimscript the H

Vue.js学习笔记:属性绑定 v-bind

v-bind  主要用于属性绑定,Vue官方提供了一个简写方式 :bind,例如: <!-- 完整语法 --> <a v-bind:href="url"></a> <!-- 缩写 --> <a :href="url"></a> 绑定HTML Class 一.对象语法: 我们可以给v-bind:class 一个对象,以动态地切换class.注意:v-bind:class指令可以与普通的class特

Java多线程学习(吐血超详细总结)

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 目录(?)[-] 一扩展javalangThread类 二实现javalangRunnable接口 三Thread和Runnable的区别 四线程状态转换 五线程调度 六常用函数说明 使用方式 为什么要用join方法 七常见线程名词解释 八线程同步 九线程数据传递 本文主要讲了java中多线程的使用方法.线程同步.线程数据传递.线程状态及相应的一些线程函数用法.概述等. 首先讲一下进程和线程

微信小程序学习总结(2)------- 之for循环,绑定点击事件

最近公司有小程序的项目,本人有幸参与其中,一个项目做下来感觉受益匪浅,与大家做下分享,欢迎沟通交流互相学习. 先说一下此次项目本人体会较深的几个关键点:微信地图.用户静默授权.用户弹窗授权.微信充值等等. 言归正传,今天分享我遇到的关于wx:for循环绑定数据的一个tips:  1. 想必大家的都知道wx:for,如下就不用我啰嗦了: <view class="myNew" wx:for="{{list}}">{{item.title}}<view

【安全牛学习笔记】

弱点扫描 ╋━━━━━━━━━━━━━━━━━━━━╋ ┃发现弱点                                ┃ ┃发现漏洞                                ┃ ┃  基于端口五福扫描结果版本信息(速度慢)┃ ┃  搜索已公开的漏洞数据库(数量大)      ┃ ┃  使用弱点扫描器实现漏洞管理            ┃ ╋━━━━━━━━━━━━━━━━━━━━╋ [email protected]:~# searchsploit Usage:

winform学习日志(二十三)---------------socket(TCP)发送文件

一:由于在上一个随笔的基础之上拓展的所以直接上代码,客户端: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Net.Sockets; using Sys

零基础的人该怎么学习JAVA

对于JAVA有所兴趣但又是零基础的人,该如何学习JAVA呢?对于想要学习开发技术的学子来说找到一个合适自己的培训机构是非常难的事情,在选择的过程中总是 因为这样或那样的问题让你犹豫不决,阻碍你前进的步伐,今天就让小编为您推荐培训机构新起之秀--乐橙谷Java培训机构,助力你成就好未来. 选择java培训就到乐橙谷 北京有什么好的Java培训机构?来乐橙谷北京学Java,零基础走起,乐橙谷Java基础班授课老师经验非常丰富,课程内容安排合理,适合于有一点点Java基础甚至一点都不会Java的同学学