ubuntu下vim的配置
写在前面,我写本文的目的不在于教大家怎么来配置VIM,因为我是新手,我也是参考了各位前辈的方法,在此只是记录一下过程,当然我个人觉得更重要的是心得体会。其实大家可能也发觉,国内的抄袭转载现象很严重,基本上百度搜出的结果有很多都是相同的内容,这样浪费了大家查找的时间。我觉得,在技术领域,首先最重要的当然是学习,学习前辈的经验和知识,其次也少不了个人的创新,当然也包括原创。好了,废话不多说,写完这个还要接着搞我的毕业设计呢!我的系统Ubuntu 12.04.5 LTS 。(怎么查看levo:~$ cat /etc/issue)
其实早就听说过vi在Linux里面各种各种的强大的传说,用一个比较流行的词语就是“不明觉厉”。是的,我虽然还没意识到, 但我觉得这么多人都这样说,肯定也有他的道理。使用ubuntu以来,基本很少用过vi,这两天算是头一次用vi,当然少不了关于vi操作的学习,此处不再赘述,这样的博文百度一大把。当然也有另外的方法:终端输入vimtutor,这是vim的一个教程。
一直没用过vi ,当然也就没关注过vi和vim的区别。大家可以简单的理解为vim是vi的增强版,进化版。所以首先是对vi编辑器的升级(其实也是我个人的理解,也有人说这不叫升级,只是说这是GUI界面的vim,安装gtk软件包):sudo apt-get install vim-gtk .安装完之后并没有特别大的变化如果你输入vim的话,所以更重要的是配置。由于我毕设需要进行C++的开发,所以此处的配置便是为了方便编程使用。话不多说,先上张图让大家看看最终的效果:
主要用到如下的插件:
vundle(用于插件管理)
taglist(显示代码结构)
NERD_Tree(树形目录)
在进行插件安装之前,我先对vim进行一个简单的配置,主要是对一些格式,缩进,状态等进行配置。配置文件一般都在/etc目录下,命令:cd /etc/vim后可以进入vim文件夹,再ls操作我们可以看到:
其中vimrc文件便是vim 的配置文件,所有的配置信息都在里面,可以自己根据自己的喜好进行配置,也包括各种插件的配置,配置信息也写到这个文件里面。此处的配置我引用了博文点我里面对vim的配置。
"********************************************************
" 一般性配置 *
"******************************************************** "关闭vim一致性原则
set nocompatible "显示行号
set number "设置在编辑过程中右下角显示光标的行列信息
set ruler "在状态栏显示正在输入的命令
set showcmd "设置历史记录条数
set history=1000 "设置取消备份 禁止临时文件的生成
set nobackup
set noswapfile "设置匹配模式
set showmatch "设置C/C++方式自动对齐
set autoindent
set cindent "开启语法高亮功能
syntax enable
syntax on "指定配色方案为256色
set t_Co=256 "设置搜索时忽略大小写
set ignorecase "配置backspace的工作方式
set backspace=indent,eol,start "设置在vim中可以使用鼠标
set mouse=a "设置tab宽度
set tabstop=4 "设置自动对齐空格数
set shiftwidth=4 "设置退格键时可以删除4个空格
set smarttab
set softtabstop=4 "将tab键自动转换为空格
set expandtab "设置编码方式
set encoding=utf-8 "自动判断编码时 依次尝试以下编码
set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1 "检测文件类型
filetype on "针对不同的文件采取不同的缩进方式
filetype indent on "允许插件
filetype plugin on "启动智能补全
filetype plugin indent on
此时,你再打开一个c++文件,就可以看到和之前的不同了。到这里只是进行了vim配置的最基本的一小步。
接下来便是各种插件的安装。首先是目录浏览器插件NERD Tree.安装次插件我参考了博文。安装此插件着实让我好生郁闷,这是我第一个安装的插件,对vim的配置也没有根本的认识。而且进去之后关键是找不到怎么下载,故此处直接贴出我的下载步骤。
下载地址:点我
进入链接后,点击左边的DOWNLOAD
点击Sources mirror1(zip)]
点击三个方框中最左边的一个:
保存文件。我就按照默认路径来了。
下载以后可以直接解压: unzip NERD_tree.zip 可以看到生成了两个目录doc和plugin.首先sudo mkdir /etc/vim/doc; sudo mkdir /etc/vim/plugin 在/etc/vim目录下生成连个子目录,然后cp doc/* /etc/vim/doc; cp plugin/* /etc/vim/plugin此后,我们打开vim的配置文件sudo vim /etc/vim/vimrc,在文件末尾我们加入NERDTree的配置信息。如下:(引用自:博文)
"********************************************************
" NERD_Tree 配置 *
"******************************************************** "显示增强
let NERDChristmasTree=1 "自动调整焦点
let NERDTreeAutoCenter=1 "鼠标模式:目录单击,文件双击
let NERDTreeMouseMode=2 "打开文件后自动关闭
let NERDTreeQuitOnOpen=1 "显示文件
let NERDTreeShowFiles=1 "显示隐藏文件
let NERDTreeShowHidden=1 "高亮显示当前文件或目录
let NERDTreeHightCursorline=1 "显示行号
let NERDTreeShowLineNumbers=1 "窗口位置
let NERDTreeWinPos='left' "窗口宽度
let NERDTreeWinSize=31 "不显示'Bookmarks' label 'Press ? for help'
let NERDTreeMinimalUI=1 "快捷键
nnoremap <silent> <F4> :NERDTreeToggle<CR>
此时,再打开vim vimtest.c后,输入":NERD Tree"回车,就可以看到目录浏览结构了。当然记不得插件名字可以输入N后按Tab键,再回车。
vundle(用于插件管理)安装:参考了博文。
我直接引用算了:
Vim插件之插件管理器Vundle
1、介绍下载
相比Sublime、Text2等现代编辑器,Vim缺乏默认的插件管理器,所有插件的文件都散布在~/.vim下的几个文件夹中,配置Vim的过程, 就是在网上不停的搜插件,拷贝到~/.vim下,发现更新,要重新下载重新拷贝,想要删除某个不需要插件,更是要小心翼翼的不要删错。配置出顺手的Vim, 需要极大的耐心和运气。一般情况下的VIM插件管理方式。
Vundle(Vim bundle)是一个Vim的插件管理器。它是把git操作整合进去,用户需要做的只是去GitHub上找到自己想要的插件的名字,安装、更新和卸载都可有vundle来完成了。
GitHub:https://github.com/gmarik/Vundle.vim
2、安装使用
【下载】通过下面的命令可以从GitHub上面下载Vundle。git clone https://github.com/gmarik/vundle.git下载完毕后,进入"~/.vim/bundle/vundle"可以看到安装的地方。我觉得他的第一段话说的很好。配置VIm的过程,就是不停的在网上搜=插件,然后拷贝到/etc/vim下的过程。这点体会是我做完配置工作后的一个体会,当时看到这句话的时候并没有特别大的感触,所以很多时候还是要自己去体会自己去实践,第一手的感觉和经验总是刻骨铭心的。说远了,下面进行vundle的配置.在".vimrc"文件中修改并按照下面例子加入相应需要的语句:
"*********************************************************
" vundle 配置 *
"********************************************************* set rtp+=~/.vim/bundle/vundle/
call vundle#rc() " let Vundle manage Vundle
Bundle 'gmarik/vundle' " My Bundles here: Bundle 'tpope/vim-fugitive'
Bundle 'Lokaltog/vim-easymotion'
Bundle 'rstacruz/sparkup', {'rtp': 'vim/'}
Bundle 'tpope/vim-rails.git'
Bundle 'taglist.vim'
Bundle 'The-NERD-tree'
Bundle 'Syntastic'
Bundle 'L9'
Bundle 'FuzzyFinder'
Bundle 'Lokaltog/vim-powerline'
"由于我没有安装YouCompleteMe,所以我要把下面一句话注释掉
"Bundle 'Valloric/YouCompleteMe'
Vundle会自动给你下载和管理插件,所以,你只要填上你所需要的插件名称即可。对于不同类型的插件,有不同的地址填写方法。按上面的方法填写完毕就可以了。填写完成,保存退出后,打开一个vim窗口。
打开一个vim, 运行”:BundleInstall”或者在命令行运行”vim +BundleInstall +qall”,安装完成后插件就能用了。
其它常用命令:
更新插件":BundleUpdate"
清除不再使用的插件":BundleClean"
列出所有插件":BundleList"
查找插件":BundleSearch"
大家可以看到它可以显示我安装的插件,进入vim后,输入:B之后不断的按Tab键就可以看到不同的命令了,:BundleUpdate;:BundleClean;:BundleList…当然此处我的命令是:BundleList
taglist(显示代码结构)插件安装:参考了博文
Taglist是以tags文件为基础,需要ctags生成tags文件。
安装ctags,Redhat和CentOS可以执行yum install ctags,Debian和Ubantu可以执行apt-get install ctags
下载Taglist,地址是http://sourceforge.net/projects/vim-taglist/files/vim-taglist/
解压taglist_45.zip,可以看到有两个目录doc和plugin,结构如下
复制代码
taglist_45
|
|——– doc
| ——– taglist.txt
|
——– plugin
——– taglist.vim
复制代码
执行下列shell命令,即安装完成
cp doc/taglist.txt /usr/share/vim/vim72/doc/
cp plugin/taglist.vim /usr/share/vim/vim72/plugin/
使用方法:
在源码目录下,执行ctags -R对各目录递归创建生成tags文件
用Vim打开源码文件,以命令模式执行Tlist,即可启用Taglist插件,可以查看taglist的帮助信息
配置信息如下:(同样写入到vimrc文件中)
"*****************************************************
" taglist配置 *
"***************************************************** "不显示"press F1 to display help"
let Tlist_Compact_Format=1 "窗口在左侧显示
let Tlist_Use_Right_Window=1 "只显示当前文件的tags
let Tlist_Show_One_File=1 "高亮显示
let Tlist_Auto_Highlight_tag=1 "随文件自动更新
let Tlist_Auto_Update=1 "设置宽度
let Tlist_WinWidth=30 "taglist窗口是最后一个窗口,则退出vim
let Tlist_Exit_OnlyWindow=1 "单击跳转
let Tlist_Use_SingClick=1 "打开关闭快捷键
nnoremap <silent> <F8> :TlistToggle<CR>
最后,当然还有其他的插件可以供选择和安装,比如vim自动补全神器YouCompleteMe,不过由于感觉安装编译起来还有点复杂,同时要求vim的版本要在7.5以上,我觉得可能暂时不太需要这个东西,所以也就放弃安装了,以后如果有需要再进行另外的安装。
还有个小贴士:把光标放在某个插件里,也就是点击到某个插件的区域里,按q键即可以退出该插件。
总结:通过vim的配置,虽然真的不难,但任然花了我近3个小时的时间,但这只是初步的配置,以后还需要研究研究具体的配置信息,根据我个人的喜好,再个人定制。还是那句话,很多事情要自己亲力为之,得来的感受才会刻骨铭心!
相关文章:
赠书 | 从阿里到Facebook,一线大厂这样做深度学习推荐系统
本文内容节选自《深度学习推荐系统》一书。由美国Roku推荐系统架构负责人、前Hulu高级研究员王喆精心编著,书中包含了这场革命中一系列的主流技术要点:深度学习推荐模型、Embedding技术、推荐系统工程实现、模型评估体系、业界前沿实践…………深度学习在…

使用 CAS 在 Tomcat 中实现单点登录
CAS 介绍 CAS 是 Yale 大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法,CAS 在 2004 年 12 月正式成为 JA-SIG 的一个项目。CAS 具有以下特点: 开源的企业级单点登录解决方案。CAS Server 为需要独立部署的 Web 应用。…
Windows SDK 7.1 (包含directshow)安装配置
最近一直在做毕业设计的事情,需要利用directshow进行视频开发,但是现在单独的directshow包已经没有了,从directx9.0c开始directshow和directx分开发布,现在的directshow已经集成到windows SDK当中了。 但是说实话,由于…
20行Python代码实现视频字符化
来源 | ZackSock(ID:ZackSock)我们经常在B站上看到一些字符鬼畜视频,主要就是将一个视频转换成字符的样子展现出来。看起来是非常高端,但是实际实现起来确实非常简单,我们只需要接触opencv模块,就能很快的实…

隔年的衣服发黄处理方法
1.用菠菜水,将菠菜煮水五分钟,然后用菠菜水除旧衣服黄渍特灵 2.用淘米水泡洗就可以了 3.用温盐水泡上20分钟再洗 4.如果是白颜色衣服的话,你不妨在洗衣服的时候放一点蓝色墨水或者用漂白 转载于:https://blog.51cto.com/wanghu2009/519490

linux监控(陆续补充)
一 定时任务for user in $(cat /etc/passwd | cut -f1 -d:);do crontab -l -u $user;done是否有用户执行了隐藏定时任务? 是否有某个任务正在备份二 网络sysctl -a | grep xx 查看网络内核参数信息ss -s 显示所有存在的连接cat /proc/interrupts 查看中断请求是否…

自绘按钮的实现
如果你希望能够在自己的程序中表现出新意,那么你一定不会仅仅满足于MFC提供那些标准控件。这时,我们就必须自己另外多做些工作了。就改变控件外观这一点来说,主要是利用控件的自绘功能(Owner Draw)实现的。本篇将和各位…

24/4毕业设计小记
折腾了很久了,关于我的毕业设计,一直就没有时间来写博客,今天感冒了,趁着思路不太好的时候就写一篇博客吧!写什么好呢,就写基于vlc sdk的播放器开发吧! 我的项目是关于windows和linux两个平台的…
AI修复100年前晚清影像喜提热搜,这两大算法立功了
整理 | 夕颜来源 | CSDN(ID:CSDNnews)昨天,一条“100 年前北京晚清的影像”喜提热搜,博主用 AI 技术修复了一段 10 多分钟的古董视频,使得 100 多年前老旧的黑白影像变得更加清晰,甚至有了颜色。…

ls和find命令查找的一些小技巧
看到老男孩老师的博客有一篇是要写用三种方法查找修改文件;想来想去后面回去看一下ls和find命令的使用技巧,非常实用这里总结一下、省得每次用都百度:ls命令总结:-t 可以查看相关修改的时间-l 每行显示一个条目-h 可以结合显示文件…

[Android]ListView性能优化之视图缓存
前言ListView是Android中最常用的控件,通过适配器来进行数据适配然后显示出来,而其性能是个很值得研究的话题。本文与你一起探讨Google I/O提供的优化Adapter方案,欢迎大家交流。声明 欢迎转载,但请保留文章原始出处:) 博客园&am…
在商业中,如何与人工智能建立共生关系?
作者 | Daniel Williams译者 | 风车云马 责编 | Carol出品 | AI科技大本营(ID:rgznai100)如今这个时代,不管是有意还是不经意,我们都在接触或使用人工智能。在我们的日常生活和商业实践中,各种在线的设备、云计算和边缘…

H.264 基础及 RTP 封包详解
一. h264基础概念 1、NAL、Slice与frame意思及相互关系 1 frame的数据可以分为多个slice. 每个slice中的数据,在帧内预测只用到自己slice的数据, 与其他slice 数据没有依赖关系。 NAL 是用来将编码的数据进行大包的。 比如,每一个slice 数…

点分十进制IP校验、转换,掩码校验
/****************************************************************************** 点分十进制IP校验、转换,掩码校验* 声明:* 本文主要记录如何对IP、掩码进行转换、校验等相关内容,注意大小端的问题。** …
再见 Python,Hello Julia!
作者 | Rhea Moutafis译者 | 苏本如,责编 | 夕颜头图 | CSDN 下载自视觉中国出品 | CSDN(ID:CSDNnews)随着Python的停滞不前,一个新的热门竞争对手崛起了。如果Julia对你来说仍是个谜,别担心。不要误会我的…

【流媒體】jrtplib—VS2010下RTP开源协议库JRTPLIB3.9.1编译
一、JRTPLIB简介 老外用C编写的开源RTP协议库,用来进行实时数据传输,可以运行在 Windows、Linux、 FreeBSD、Solaris、Unix和VxWorks 等多种操作系统上,主页为:http://research.edm.uhasselt.be/~jori/page/index.php?nMain.Home…

揭露Windows中各种不老实的服务
使用电脑经常会碰到各种各样的问题,比如:网上邻居上看不到一个邻居、无法拨号上网、电脑关机速度变慢等,在你尝试了各种方法还没有解决时,不妨到“控制面板→管理工具→服务”中查一查,没准故障的根源就在这里。 …

文本相似度的计算
文本相似度的计算方法有很多,这里简单记录一下 传统的VSM模型: 计算文本相似度的时候主要是使用tfidf来协助生成文档向量 整个文档集合有多少词,就是多少维度 每个文档中的词用tfidf来生成权重,用权重来表示文档的向量 生成向量后…

vc picture控件载入背景图,随控件大小改变
在mfc里,想要在Picture控件中载入一张图片有两种方法:静态的和动态的。静态的方法就是图片先载入资源(.rc)文件中,拥有一个唯一的ID;动态的方法就是制定图片的路径名即可。 当然这样的方法网上一搜有很多&…
真没想到,Python还能实现5毛特效
来源 | ZackSock(ID:ZackSock)图源 | 视觉中国Python牛已经不是一天两天的事了,但是我开始也没想到,Python能这么牛。前段时间接触了一个批量抠图的模型库,而后在一些视频中找到灵感,觉得应该可以通过抠图的…

第八章 VLSM
VSLM(variable length subnet mask)------------可变长长度子网掩码 对于点对点链路而言,最好的子网掩码是:255.255.255.252对于lan而言,好的子网掩码可能是255.255.255.192。vlsm的两个好处:在大型网络中高效地使用寻址ÿ…

Androidstudio下Generate signed apk提示Error: Expected resource of type id [ResourceType]解决办法...
只需要在报错位置所在的类上面添加: SuppressWarnings("ResourceType") 即可实现Generate signed apk。

对话框窗口最大最小化
mfc里,基于对话框的窗口,具有最大最小化的属性设置。在Border属性里选择Resizing,然后在Maximize和Minimize中选择true。在窗体当中随便拖几个控件,然后运行,此时点击最大化会发现,整个窗体的大小是变大了&…
4场直播,哈工大、亚马逊等大咖为你带来机器学习与知识图谱的内容盛宴
机器学习和知识图谱是当今技术领域的热门话题,随着相关技术的不断发展,无论是对两类技术单独的探讨,还是将机器学习和知识图谱相结合的尝试,都在吸引越来越多的关注。5月16日下午,来自亚马逊、墨奇科技、Second State、…

【失败的尝试】C++中使用string进行switch判断
贴出错误代码: #include <iostream>#include <string>using namespace std;void main(){ string str; cin>>str; switch(str) { case "ab": cout<<"one"<<endl; break; case &…

springmvc 拦截器、国际化、验证
2019独角兽企业重金招聘Python工程师标准>>> springmvc 拦截器 继承了HandlerIntercepter的类可以作为拦截器类: package com.yawn.intercepter;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;import o…

由MessageBox和AfxMessageBox的使用异同所感
我记得刚开始学图形界面编程的时候,接触的最早的一个函数应该就是MessageBox,之前都一直是控制台程序,突然能运行蹦出一个对话框感觉还是很新鲜的。当时还利用MessageBox写一些恶搞程序,利用上面的yes or no 按钮进行判断等等。但是说实话感觉…
iRobot的30年成长史
作者 | Colin Angle译者 | 苏本如,编辑 | 郭芮题图视觉中国出品 | AI科技大本营(ID:rgznai100)建造一个漫游者,把它送上月球,出售电影版权。这是我们在1990年开始iRobot时的第一个商业模式,我们…

iPhone开发:通过NSURLRequest获得服务器返回的http header和http status
HTTP连接的头信息包括在NSHTPURLResponse类中。如果你拥有一个NSHTTPURLResponse变量,你可以通过发送allHeaderFields信息,轻而易举地获取以NSDictionary形式保存的头信息。对于一个同步请求 – 由于会引发阻塞所以不推荐使用 – 是很容易初始化一个NSHT…

今天开始记录自己苹果开发博客旅程!~
做ios开发也蛮久了,现在才想到要自己开个博客,然后记录点自己平时工作学习中遇到的各种问题以及解决后的心得。现在公司的app第一个版本已经上线了,更加期待以后的发展和更迭。还记得刚进公司接受项目时那种忐忑不安的心理,现在想…