vim实用笔记
vim实用笔记
真是不知不觉过了一年,前段时间忙着考试什么的,没再写笔记写博客,考完又懒懒地玩了几天。这几天其实都在读别人的博客,感受一下大神的工作和生活感悟,感受一下过来人的经历和经验,对自己总是很有帮助的。
今天想写下一下vim的笔记。
Vim,程序员必备的高效编辑器,不用多介绍的了,代码补全、编译和跳转等方便的编辑都是非常丰富完整的。
其实现在不少公司指定员工后台开发要用这个编辑器,ubuntu+vim的开发形式其实挺常见的。Vim确实是非常强大的编辑器,很多IDE可以做的vim都可以做到,想自行增加一些编辑增强或者编译功能的话装对应插件即可。
本篇笔记涉及到的软件有vim7.3版本,python3.0 , clang3.0。
目录:
一、常识:
1、按Tab键可以补全命令;
2、下面提到的凡是“:set XXXX”之类的设置命令均可直接在vim配置文件vimrc中加入,这样的话不用每次都重新配置;
3、vim的配置文件路径一般是:/etc/vim/vimrc,如果你想针对某个特定用户配置一个特定的配置文件,那么在该用户文件夹下创建~/.vimrc文件,并输入配置内容即可;
4、帮助文档的使用,比如说我想知道怎么开启语法高亮(一般默认是已经开启的),那么在vim中键入命令:”:help syntax”,即可查看相关帮助信息:
如果要进一步查看相关文档,比如文档usr_06.txt,那么继续键入”:help usr_06.txt”即可跳转,查看完毕之后,按ZZ或者键入”:q!”(不保存的退出方式)即可退出帮助文档。
二、vim基础笔记:
2.1 基本文本输入:
1、键入文本:按i(其实a,s等没有其他功能的普通按键亦可)
2、退出输入状态:<Esc>键。
3、复制:在非输入状态下(按Esc退出输入状态),按yy(复制整行),yw(复制当前单词),y$(复制到行尾),鼠标选中按y(复制选中部分)。
4、粘贴:<Esc> 。按p。
5、移动:按逐个词向后:<Esc>,w;逐个词往回:<Esc>,b。移动到指定行,比如移动到33行:<Esc> , 33G。(注意是大写)。
6、删除:<Esc> 。单个字符,按x;一行,dd;删除一个换行符,J(大写)。
7、撤销:<Esc> , u。
8、保存和退出:应用更改,命令”:write”;。不保存即退出,命令”:q!”。保存并退出,ZZ。
关闭当前编辑窗口,命令”:close”。对全部文件应用更改,”:wall”。全部文件退出,命令”:qall”,使用该命令前需先进行全部文件写入”:wall”。
9、命令补全:Tab键可补全命令。Ctrl+D可查看可以补全的命令表,比如:
10、挂起编辑和继续:和大部分Unix程序一样,ctrl+Z可将vim挂起,回到terminal或console中,不管你做了什么工作,在terminal或者console中输入fg即可回到编辑状态。
2.2 vim实用基础配置:
配置出了可以通过命令实现外,也可以将set内容添加到vim配置文件/etc/vim/vimrc中,当然,添加到vimrc就不需要在set前面加”:”了。
1、设置显示行号可以使用命令 ”:set number”
2、文件自动保存,”:set autowrite”
3、使鼠标可用,”:set mouse=a”。这个命令键入后在可视化界面是生效的,但是我在tty1控制台键入该命令却没有任何变化,通过”:help mouse”查找相关帮助内容后看到:
看到其中一个使用条件是:”Linux console with gpm”,那我想应该是缺少了这个东西,所以尝试安装一下:
sudo apt-get install gpm
安装完成后发现没问题了,”:set mouse=a”设置成功。
4、实用配置列表:
因为这些配置实在太多,就不一一列举了,总结和摘录了一个常用的配置表,可以直接复制粘贴到vimrc配置文件中(“符号后面的都会被识别为注释):
syntax on " 自动语法高亮,其实vim7.3版本语法默认是高亮的
colorscheme evening" 一种好看的配色方案
set shiftwidth=4 " 设定 << 和 >> 命令移动时的宽度为 4个字符
set tabstop=4 " 设定 tab 长度为 4个字符
filetype plugin indent on " 开启插件
set ignorecase " 搜索时忽略大小写
set incsearch " 即刻显示当前输入的搜索结果
set hlsearch " 高亮搜索结果
set noerrorbells " 关闭错误信息响铃
set autochdir " 自动切换当前目录为当前文件所在目录
filetype indent on “自动缩进
set autoindent shiftwidth=n “修正缩进,ctrl+T或ctrl+D或者>>、<<均对应n个字符缩进
三、vim实用功能:
3.1、查找功能:
1、最基础的查找:
<Esc>状态,直接按 / 键。然后输入要查找的内容。下一个查找结果按n。如果查找的内容带有符号‘.*[]^%/n?~$ ,则添加转义字符方式“ \ ”再进行查找即可。
2、精确查找:
比如说我要确切地找到一个单词“top”。则按 / 键,然后输入如下内容:
/\<top\>
其实它的意思是,搜索以top开头,并以top结尾的单词。所以如果我们希望查找以top开头的所有单词:
/\<top
以top结尾的单词:
/top\>
3、跨文件查找字符:
比如,在进行某个文件的编辑时,我希望找到当前工作目录中所有含有”include”字符串的cpp文件:
“:grep include *.cpp”
编辑器会暂时弹出terminal或console中,显示查找结果:
3.2 分割窗口编辑多个文件:
打开的时候直接打开多个文件进行编辑:
vim -o file1 file2 file3
比如,同时打开名为game.cpp和test.cpp的文件进行编辑:
vim -o test.cpp game.cpp
在不同的文件之后进行切换:
<Esc>状态下,ctrl+ww。
如果启用了鼠标可用模式的话(:set mouse=a),直接用鼠标点击即可切换。
当然,如果先编辑game.cpp,想同时编辑test.cpp,则键入如下命令:
:split test.cpp
当然如果想垂直分割编辑器框的话,可以用vsplit命令:
:vsplit test.cpp
如果记不清我们到底要打开哪个文件进行编辑,可以使用如下命令:
:browse split
将光标移至需要编辑的文件按<Enter>键即可打开进行编辑:
3.3 代码折叠:
所有折叠命令都以z开头。
zf "F-old creation (创建折叠)
zo "O-pen a fold (打开当前折叠)
zc "C-lose a fold (关闭当前折叠)
zR "打开所有折叠
zM "关闭所有折叠
要记住这些实在是略显蛋疼,如果可以用鼠标点击折叠和关闭岂不是很好?
可以通过下列命令实现。
首先,鼠标可用配置为”:set mouse=a”,可以自行指定鼠标模式:”:behave mswin”或者”:behave xterm”(默认)。
然后,结合使用”:set foldcolumn=4”和”:set foldmethod=indent”,即可按照缩进折叠并且显示折叠标志(在此设置空位为4个字符),可用鼠标点击。
3.4 代码间跳转:
代码间跳转也算是比较常用的功能——使用一个函数的时候想跳到函数声明或者定义的位置,尤其是它们处于不同文件中时。使用IDE当然很方便,而vim也是自带这个功能的,不过需要配合ctags命令工具的使用:
ctags官网http://ctags.sourceforge.net/
1、安装ctags:sudo apt-get install exuberant-ctags
2、使用ctags生成链接文件:
ctags -f [输出目录] -R [需链接的文件所在目录的列表]
比如(只是举个java例子,c,c++,obj-c等类似):
ctags -f ~/.tags -R $JAVA_HOME/src ~/workspace/
3、然后在/etc/vim/vimrc中加入
set tags=~/.tags
即可自动加载生成的tag。
4、跳转:
Ctrl+]前进,ctrl+T后退。
注意,也可以不按上述4步指定输出目录,直接转到指定工作目录输入命令:
ctags *
这样所有文件都会被注上标签,并且当前工作目录中会自动生成tags文件,示例如下:
3.5 vim代码自动补全插件clang_complete的安装:
Vim中的c和c++补全插件不少,比较有名的有OmniComplete,不过它们都要通过ctags命令创建的标签来对字符串进行匹配,比较蛋疼。
在此选了clang_complete,也很有名,比前者更实用高效,不多介绍了。
折腾了一会儿才把clang_complete插件的安装搞定。为了避免其他一些不必要的问题,在这里我给出一个保险的安装方案——虽然看起来比较冗长:
首先,你的vim不能安装过诸如:OmniComplete之类的插件,如果安装过不妨先删除这个插件。
接着,先确保安装了python3:
sudo apt-get install python3
下面确保安装了clang:
sudo apt-get install clang
当然,还要确保自己的vim版本在7.3或以上。
下面安装clang_complete插件:可以点击如下链接进行下载:
http://www.vim.org/scripts/download_script.php?src_id=19588
然后将工作目录转到插件所在目录输入如下安装命令:
vim clang_complete.vmb -c 'so %' -c 'q'
或者直接从github获取安装:
git clone https://github.com/Rip-Rip/clang_complete.git
make
vim clang_complete.vmb -c 'so %' -c 'q'
安装完成后可以在插件文件夹~/.vim/plugin/中找到该插件。不需要了可以删除这些文件。
如果在上述文件无法找到插件文件夹,你可以在vim打开的状态下输入如下命令:
:set runtimeepath?
即可获得所有可能的插件保存位置。
接下来应该即可正常使用。
示例:
vim实用笔记的更多相关文章
- ###《VIM实用技巧》
###<VIM实用技巧> #@author: gr #@date: 2015-11-20 #@email: forgerui@gmail.com <VIM实用技巧>阅读笔记. ...
- Vim新手入门资料和一些Vim实用小技巧
一些网络上质量较高的Vim资料 从我07年接触Vim以来,已经过去了8个年头,期间看过很多的Vim文章,我自己觉得非常不错,而且创作时间也比较近的文章有如下这些. Vim入门 目前为阿里巴巴高级技术专 ...
- vim 使用笔记
vim命令笔记 a 插入 insert 插入 :%!xxd 以16进制方式进行编辑 :%!xxd -r 从16进制还原
- Vim实用小技巧
Vim实用小技巧 一些网络上质量较高的Vim资料 从我07年接触Vim以来,已经过去了8个年头,期间看过很多的Vim文章,我自己觉得非常不错,而且创作时间也比较近的文章有如下这些. Vim入门 目前为 ...
- vim实用技巧总结
1. 单个文件内实用mark来帮助跳转以及一些宏操作.(注意:mark不能用于多文件之间的跳转)mch 设置宏,保存到ch标记(不是ch寄存器)'ch 跳转到标记的行首`ch 跳转到标记的字符处另:为 ...
- MySql 安装及实用笔记
安装 更新 rpm 包 rpm -Uvh http://repo.mysql.com//mysql57-community-release-el7-7.noarch.rpm 安装MySql yum - ...
- Vim 系列笔记一
Vim 系列笔记一 Vim 简介 什么是VIM ? Vim 是从 Vi 发展出来的一个编辑器,是 Vi 的升级版.而 vi 则是 Unix .类Unix(Linux)系统中自带的编辑器. Vim/Vi ...
- vim实用插件
转载:Vim 实用插件推荐(2017) - 知乎 (zhihu.com) 1.插件管理器 ----------------------------------------- Vundle.vim - ...
- 《vim实用技巧》读书笔记
1. . 命令 2. * 命令 3. cw 命令: (c:修改)会删除从光标位置到单词结尾间的字符,并进入插入模式. eg: cw.copy1 即: 删除从光标位置到单词结尾间的字符,并插入 ...
随机推荐
- 标签(Tag)的各种设计方案
标签(Tag)的各种设计方案 首先,标签(Tag)是什么? 我的理解:用来具体区分某一类内容的标识,和标签类似的一个概念是分类(Category),有一个示例可以很好的区分它们两个,比如人类分为:白种 ...
- 照片总结---选择适当的NoSQL
版权声明:本文博客原创文章,博客,未经同意,不得转载.
- windows已安装solr
下载地址:http://archive.apache.org/dist/lucene/solr/ 操作环境: Win7,Tomcat6, Solr4.3, Jdk6 下载solr4.3的包,解压到本 ...
- IOS的UITextField,UIButton,UIWebView它描述的一些属性和IOS提示图像资源
有时UI要开发的资源与实际frame不符.这一次,我们要绘制图片 UIImage* image = [[UIImage imageNamed:@"text_field_bg.png" ...
- C#关于HttpClient的应用(一):获取IP所在的地理位置信息
public class IpHttpClient:BaseHttpClient { private String appKey; private const string HOST_PATH = & ...
- 【百度地图API】建立全国银行位置查询系统(四)——如何利用百度地图的数据生成自己的标注
原文:[百度地图API]建立全国银行位置查询系统(四)--如何利用百度地图的数据生成自己的标注 摘要: 上一章留个悬念,"如果自己没有地理坐标的数据库,应该怎样制作银行的分布地图呢?&quo ...
- Oracle 11g password过期被锁定报道 ORA-28000 the account is locked
一.触发这个错误的原因及相关因素 是因为oracle11g中默认在default概要文件里设置了"PASSWORD_LIFE_TIME=180天"所导致.在Oracle 11g中是 ...
- my97 日期控件
官网:http://www.my97.net/ 好多广告啊! 文档地址: http://www.mysuc.com/test/My97DatePicker/
- 6、Cocos2dx 3.0游戏开发的基本概念找个小三场比赛
重开发人员的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27689713 郝萌主友情提示: 人是习惯的产物,当你 ...
- android网络操作使用汇总(http)
Android是作为智能手机的操作系统,我们开发的应用,大多数也都须要连接网络,通过网络发送数据.获取数据,因此作为一个应用开发人员必须熟悉怎么进行网络訪问与连接. 通常android中进行网络连接通 ...