曾经对于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的映射的更多相关文章

  1. 你知道为什么Xcode6中Swift没有智能提示和自己主动补全功能吗 ?

    你知道为什么Xcode6中Swift没有智能提示和自己主动补全功能吗 ? 长沙戴维营教育将为你解开这个巨大的谜团大BUG! http://www.ubuntucollege.cn/course/29/ ...

  2. linux-python在vim下的自动补全功能

    linux-python在vim下的自动补全功能 安装配置: wget https://github.com/rkulla/pydiction/archive/master.zipunzip -q m ...

  3. 学会了vim中的自动补全功能

    好开心,再也不用再多个工具之间切换了,哈哈 擦,功能太弱

  4. linux下让irb实现代码自己主动补全的功能

    我不知道其它系统上irb是否有此功能,可是在ubuntu上ruby2.1.2自带的irb默认是没有代码自己主动补全功能的,这多少让人认为有所不便.事实上加上也非常easy,就是在irb里载入一个模块: ...

  5. jquery autocomplete文本自己主动补全

    文本自己主动补全功能确实非常有用. 先看下简单的效果:(样式不咋会写) 以下介绍几种: 1:jqery-actocomplete.js 这个网上有个写好的实例,上面挺具体的,能够下来执行下就清楚了就不 ...

  6. Archlinux YouCompleteMe+syntastic vim自己主动补全插件,显示缩进和状态栏美化,爽心悦目的vim

    Archlinux 安装和配置vim补全插件YouCompleteMe的过程. 參考: https://github.com/Valloric/YouCompleteMe https://github ...

  7. Linux下新手怎样将VIM配置成C++编程环境(能够STL自己主动补全)

    ~ 弄拉老半天,最终弄的几乎相同啦,果然程序猿还是须要有点折腾精神啊. 首先你要安装vim,命令:sudo apt-get install vim vim它仅仅是一个编辑器,它不是IDE(比方code ...

  8. Python tab 命令补全,以及 vim 补全

    在python 命令行中,使用补全 python 查看 packages 的目录 可用 sys.path 查看. /usr/lib/python2.7/site-packages vim tab.py ...

  9. [转] vim配置python自动补全

    vim python自动补全插件:pydiction 可以实现下面python代码的自动补全: 1.简单python关键词补全 2.python 函数补全带括号 3.python 模块补全 4.pyt ...

随机推荐

  1. 【mysql 优化 5】左连接和右连接优化

    原文地址:8.2.1.8 Left Join and Right Join Optimization mysql以下列方式实现一个A left join B 连接条件: 1,表B设置为依赖于表A和A所 ...

  2. 如何杀死linux-zombie僵尸进程

    百科: ZOMBIE:僵尸状态,表示进程结束但尚未消亡的一种状态,此时进程已经结束运行并释放大部分资源,但尚未释放进程控制块. 与ZOMBIE对应的进程状态还有RUNNING(正在运行或等待运行状态) ...

  3. HDU2098 分拆素数和

    Problem Description 把一个偶数拆成两个不同素数的和,有几种拆法呢?   Input 输入包含一些正的偶数,其值不会超过10000,个数不会超过500,若遇0,则结束.   Outp ...

  4. 使用ssh建立隧道和web代理

    动态端口转发(socket4/5代理): 通过ssh监听本地端口并把数据转发至远程动态端口 转发local port 至 ssh Server ssh -D ssh -qfTnN -D 本地目标端口 ...

  5. Codeforces834D - The Bakery

    Portal Description 给出一个\(n(n\leq35000)\)个数的数列\(\{a_i\}\)和\(m(m\leq50)\).将原数列划分成\(m\)个连续的部分,每个部分的权值等于 ...

  6. cf671B Robin Hood

    We all know the impressive story of Robin Hood. Robin Hood uses his archery skills and his wits to s ...

  7. uva 11732 (trie树)

    题意:求N个字符串两两比较,共比较了多少次? #include<iostream> #include<cstring> #include<cstdio> using ...

  8. 如何从sql server导出到csv文件

    如何从sql server导出到csv文件,具体代码如下: private static void WriteHeader(SqlDataReader reader, TextWriter outpu ...

  9. javaweb学习总结(十一)——使用Cookie进行会话管理(转)

    一.会话的概念 会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. 有状态会话:一个同学来过教室,下次再来教室,我们会知道这个同学曾 ...

  10. 【BZOJ1018】堵塞的交通traffic(线段树,网格图,连通性)

    题意:一个2行C列的矩形网格图,网格上的每个点代表一个城市,相邻的城市之间有一条道路 一开始每条道路都是堵塞的,堵塞即为不可经过.经过一些操作后,可能某些道路通畅了,也可能某些道路堵塞了 多次询问,询 ...