辛星深入分析vim的自己主动补全功能以及vim的映射
曾经对于vim的自己主动补全功能,都是须要的时候从网上下载点配置项,然后复制到自己的vimrc上去,自己也不知道是什么意思。结果发现搜索到的非常多自己主动补全的方式都非常另类,有的喜欢在补全大括号的时候自己主动换行,还有的喜欢在补全大括号的时候自己主动缩进一下,那么,我们花几分钟时间了解一下,自己写出来这些配置,何乐而不为呢?
********************************按键映射******************************
1.首先分清一个概念,那就是nnoremap和inoremap,第一个是在普通模式下生效的映射。第二个是在插入模式下生效的映射。咱们一般都须要在插入模式下使用的,因此咱们通常使用inoremap。那么提到了映射,什么是映射呢?
2.所谓映射,就是当我们按下某个键的时候。它会运行还有一部分内容,比方说咱们使用map T:q!,那么当我们在命令模式下按T而且回车。就会退出vim。除了map之外。还有nmap表示在normal模式下生效,imap在insert模式下生效。vmap在visual模式下生效。map在全部模式下生效。
3.那么设置一个映射使用:map <要映射的键> <被映射的按键序列>,假设我们要解除映射,使用unmap命令,清除全部映射使用mapclear命令。
4.咱们通常把这些映射写入配置文件vimrc中去,这样一次写入,永久生效。
**************************键位说明**********************************
1.不论什么能够直接显示的字符都能够直接输入。可是有两个例外,即反斜线和<。由于我们用反斜线表示转义,而<有特殊作用。
2.反斜线用两个反斜线表示,或者使用<Bslash>
3.而<须要用\<或者<lt>来表示。
4.<key>的意思是特殊键,咱们介绍一些经常使用的特殊键:
<Esc> 表示Escape键,
<C-G>表示Ctrl-G键
<Up>表示光标上移
<C-LeftMOuse>表示Ctrl而且鼠标左键点击
<Space>表示空格
<Tab>表示Table键
<CR>就是回车键
**********************開始写我们自己的自己主动补全***********************
1.首先给出我的自己主动补全的格式把,首先值得说明的是,这段代码是写在_vimrc里面的,以下为大家细致分析一下:
"自己主动补全
:inoremap ( ()<ESC>i
:inoremap ) <c-r>=ClosePair(')')<CR>
:inoremap { {<CR><CR>}<ESC>0ki<Tab>
:inoremap } <c-r>=ClosePair('}')<CR>
function ClosePair(char)
if getline('.')[col('.') - 1] == a:char
return "\<Right>"
else
return a:char
endif
endf
2.这里的:inoremap表示是在插入模式下的映射。首先第二行的( 即先写(),然后使用esc回到命令模式下,然后运行i来进入到插入模式下。
3.而当我输入{ 的时候,看它的命令。首先输入一个{,然后是<CR>表示回车换行,然后又是一个换行。然后输入},然后使用esc回到命令模式下。然后我们利用0命令回到行首。然后咱们使用k命令把鼠标移动到上一行,然后运行i命令进入到插入模式,然后咱们使用<Tab>表示插入一个制表符。
4.当然我仅仅定义了小括号和大括号的自己主动补全,对于中括号我并没有使用自己主动补全,大家能够自行去改动。
5.vim在这点上使用还是蛮舒服的。毕竟感觉非常自由。
6.传播编程知识,振兴中华软件。辛星,期待您的关注。
辛星深入分析vim的自己主动补全功能以及vim的映射的更多相关文章
- 你知道为什么Xcode6中Swift没有智能提示和自己主动补全功能吗 ?
你知道为什么Xcode6中Swift没有智能提示和自己主动补全功能吗 ? 长沙戴维营教育将为你解开这个巨大的谜团大BUG! http://www.ubuntucollege.cn/course/29/ ...
- linux-python在vim下的自动补全功能
linux-python在vim下的自动补全功能 安装配置: wget https://github.com/rkulla/pydiction/archive/master.zipunzip -q m ...
- 学会了vim中的自动补全功能
好开心,再也不用再多个工具之间切换了,哈哈 擦,功能太弱
- linux下让irb实现代码自己主动补全的功能
我不知道其它系统上irb是否有此功能,可是在ubuntu上ruby2.1.2自带的irb默认是没有代码自己主动补全功能的,这多少让人认为有所不便.事实上加上也非常easy,就是在irb里载入一个模块: ...
- jquery autocomplete文本自己主动补全
文本自己主动补全功能确实非常有用. 先看下简单的效果:(样式不咋会写) 以下介绍几种: 1:jqery-actocomplete.js 这个网上有个写好的实例,上面挺具体的,能够下来执行下就清楚了就不 ...
- Archlinux YouCompleteMe+syntastic vim自己主动补全插件,显示缩进和状态栏美化,爽心悦目的vim
Archlinux 安装和配置vim补全插件YouCompleteMe的过程. 參考: https://github.com/Valloric/YouCompleteMe https://github ...
- Linux下新手怎样将VIM配置成C++编程环境(能够STL自己主动补全)
~ 弄拉老半天,最终弄的几乎相同啦,果然程序猿还是须要有点折腾精神啊. 首先你要安装vim,命令:sudo apt-get install vim vim它仅仅是一个编辑器,它不是IDE(比方code ...
- Python tab 命令补全,以及 vim 补全
在python 命令行中,使用补全 python 查看 packages 的目录 可用 sys.path 查看. /usr/lib/python2.7/site-packages vim tab.py ...
- [转] vim配置python自动补全
vim python自动补全插件:pydiction 可以实现下面python代码的自动补全: 1.简单python关键词补全 2.python 函数补全带括号 3.python 模块补全 4.pyt ...
随机推荐
- deque 类
题外: 'A' +1='B' 1.deque被称为双端队列,它也是一种顺序容器.可通过迭代器存取元素 ,也可以通过下标顺序 存取元素 for(i=0;i<d1.size();i++) { cou ...
- 集合篇 —— Collection(1):JDK 中的重复实现问题
1. 问题的提出 在 Java 的集合体系当中,无论是 List(列表)还是 Set(集),在设计的时候都存在一个很奇怪的现象:这两种集合的接口,Java 都为其设计了抽象类 Abstrac ...
- IB_DESIGNABLE 和 IBInspectable 的用法
我们经常会在用一些自定义 UIView 来完成一些特殊的UI效果,但是怎么让我自定义的 UIView 在 Storyboard 中预览和修改一些自定义参数呢.这就需要用到两个吊吊的东西. IB_DES ...
- iOS-通信录
1.概述: * 对于每一个移动设备而言,都有一个内置的数据库-----通讯录. * 在IOS上,通讯录放在SQLite3数据库中. * 由于不同应用之间不能直接访问,我们想要实现对数据库的访问,必须使 ...
- dubbo面试题之dubbo-client 和dubbo-server同时配置超时时间,是以哪个为准;
根据官网表示: 以 timeout 为例,下图显示了配置的查找顺序,其它 retries, loadbalance, actives 等类似: 方法级优先,接口级次之,全局配置再次之. 如果级别一样, ...
- Java面试题之ArrayList和LinkedList的区别
先看下类图: 相同点: 都实现了List接口和Collection: 不同点: 1.ArrayList是基于数组实现的:LinkedList是基于链表实现的: 2.ArrayList随机查询速度快:L ...
- C++基类与派生类的转换
具体表现在以下几个方面: 派生类对象可以向基类对象赋值. 可以用子类(即公用派生类)对象对其基类对象赋值.如 A a1; //定义基类A对象a1 B b1; //定义类A的公用派生类B的对 ...
- 事务的传播行为和隔离级别[transaction behavior and isolated level]
Spring中事务的定义:一.Propagation : key属性确定代理应该给哪个方法增加事务行为.这样的属性最重要的部份是传播行为.有以下选项可供使用: PROPAGATION_REQUIRED ...
- [NOIP2009] 提高组 洛谷P1074 靶形数独
题目描述 小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他 们想用数独来一比高低.但普通的数独对他们来说都过于简单了,于是他们向 Z 博士请教, Z 博士拿出了他最近发明的 ...
- Sort colors系列
75. Sort Colors 问题描述: 给一个包含n个数字的数组,其中有0,1,2:排序使得所有相同的数字相邻,且按照0,1,2的顺序. 思路: (1)计数排序: 需要扫两遍数组,一遍统计个数,第 ...