辛星深入分析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 ...
随机推荐
- Learning Deconvolution Network for Semantic Segme小结
题目:Learning Deconvolution Network for Semantic Segmentation 作者:Hyeonwoo Noh, Seunghoon Hong, Bohyung ...
- Spider爬虫-get、post请求
1:概念: 爬虫就是通过编写程序,模拟浏览器上网,然后让其去互联网上抓取数据的过程. 2:python爬虫与其他语言的比较: (1)php爬虫弊端:多进程多线程支持的不好 (2)java:代码臃肿,重 ...
- Wannafly挑战赛9
链接:https://www.nowcoder.com/acm/contest/71/A来源:牛客网 找一找 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5 ...
- PHPSTORM杂技
PHPSTORM技巧 去掉右上角弹出浏览器条 settings->web browsers->show browser popup in the editor前的钩去掉 让class fu ...
- Python 数据库到处到Excel
import MySQLdb import xlwt def outMySQL(file_name): wb = xlwt.Workbook() sh = wb.add_sheet('sheet 1' ...
- 天气预报接口:SmartWeather API中key的计算方法
这个代码大家都蛮感兴趣,我在git开源了一个用于收集天气信息的系统,基于python语言的,请大家参考: https://github.com/BerlinSun/WeatherForecast -- ...
- C++ Programming with TDD之二:CppUTest单元测试
在之前一篇C++ Programming with TDD博客中,我带给大家gmock框架的简介(地址戳着里),今天我们继续本系列,带个大家C++中的单元测试框架CppUTest的介绍. CppUTe ...
- HDU——2087剪花布条
剪花布条 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- [USACO08DEC] 秘密消息Secret Message (Trie树)
题目链接 Solution Trie 树水题. 直接将前面所有字符串压入Trie 中. 在查询统计路上所有有单词的地方和最后一个地方以下的单词数即可. Code #include<bits/st ...
- linux监控平台搭建-cpu
linux监控平台搭建-cpu 目前服务器的主流CPU是intel或者AMD.到底主频是什么.多核.多线程.并发.并行.超频.一级缓存.二级缓存.三级缓存.i386.x86 cpu:含有算术逻辑.控制 ...