当前位置: 首页 > 编程日记 > 正文

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
点击左边的DOWNLOAD
点击Sources mirror1(zip)]
这里写图片描述
点击三个方框中最左边的一个:
这里写图片描述
保存文件。我就按照默认路径来了。
null

下载以后可以直接解压: 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键,再回车。

Nerd

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"

bundle
大家可以看到它可以显示我安装的插件,进入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高级研究员王喆精心编著&#xff0c;书中包含了这场革命中一系列的主流技术要点&#xff1a;深度学习推荐模型、Embedding技术、推荐系统工程实现、模型评估体系、业界前沿实践…………深度学习在…

使用 CAS 在 Tomcat 中实现单点登录

CAS 介绍 CAS 是 Yale 大学发起的一个开源项目&#xff0c;旨在为 Web 应用系统提供一种可靠的单点登录方法&#xff0c;CAS 在 2004 年 12 月正式成为 JA-SIG 的一个项目。CAS 具有以下特点&#xff1a; 开源的企业级单点登录解决方案。CAS Server 为需要独立部署的 Web 应用。…

Windows SDK 7.1 (包含directshow)安装配置

最近一直在做毕业设计的事情&#xff0c;需要利用directshow进行视频开发&#xff0c;但是现在单独的directshow包已经没有了&#xff0c;从directx9.0c开始directshow和directx分开发布&#xff0c;现在的directshow已经集成到windows SDK当中了。 但是说实话&#xff0c;由于…

20行Python代码实现视频字符化

来源 | ZackSock&#xff08;ID:ZackSock&#xff09;我们经常在B站上看到一些字符鬼畜视频&#xff0c;主要就是将一个视频转换成字符的样子展现出来。看起来是非常高端&#xff0c;但是实际实现起来确实非常简单&#xff0c;我们只需要接触opencv模块&#xff0c;就能很快的实…

隔年的衣服发黄处理方法

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

linux监控(陆续补充)

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

自绘按钮的实现

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

24/4毕业设计小记

折腾了很久了&#xff0c;关于我的毕业设计&#xff0c;一直就没有时间来写博客&#xff0c;今天感冒了&#xff0c;趁着思路不太好的时候就写一篇博客吧&#xff01;写什么好呢&#xff0c;就写基于vlc sdk的播放器开发吧&#xff01; 我的项目是关于windows和linux两个平台的…

AI修复100年前晚清影像喜提热搜,这两大算法立功了

整理 | 夕颜来源 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;昨天&#xff0c;一条“100 年前北京晚清的影像”喜提热搜&#xff0c;博主用 AI 技术修复了一段 10 多分钟的古董视频&#xff0c;使得 100 多年前老旧的黑白影像变得更加清晰&#xff0c;甚至有了颜色。…

ls和find命令查找的一些小技巧

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

[Android]ListView性能优化之视图缓存

前言ListView是Android中最常用的控件&#xff0c;通过适配器来进行数据适配然后显示出来&#xff0c;而其性能是个很值得研究的话题。本文与你一起探讨Google I/O提供的优化Adapter方案&#xff0c;欢迎大家交流。声明 欢迎转载&#xff0c;但请保留文章原始出处:) 博客园&am…

在商业中,如何与人工智能建立共生关系?

作者 | Daniel Williams译者 | 风车云马 责编 | Carol出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;如今这个时代&#xff0c;不管是有意还是不经意&#xff0c;我们都在接触或使用人工智能。在我们的日常生活和商业实践中&#xff0c;各种在线的设备、云计算和边缘…

H.264 基础及 RTP 封包详解

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

点分十进制IP校验、转换,掩码校验

/****************************************************************************** 点分十进制IP校验、转换&#xff0c;掩码校验* 声明&#xff1a;* 本文主要记录如何对IP、掩码进行转换、校验等相关内容&#xff0c;注意大小端的问题。** …

再见 Python,Hello Julia!

作者 | Rhea Moutafis译者 | 苏本如&#xff0c;责编 | 夕颜头图 | CSDN 下载自视觉中国出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;随着Python的停滞不前&#xff0c;一个新的热门竞争对手崛起了。如果Julia对你来说仍是个谜&#xff0c;别担心。不要误会我的…

【流媒體】jrtplib—VS2010下RTP开源协议库JRTPLIB3.9.1编译

一、JRTPLIB简介 老外用C编写的开源RTP协议库&#xff0c;用来进行实时数据传输&#xff0c;可以运行在 Windows、Linux、 FreeBSD、Solaris、Unix和VxWorks 等多种操作系统上&#xff0c;主页为&#xff1a;http://research.edm.uhasselt.be/~jori/page/index.php?nMain.Home…

揭露Windows中各种不老实的服务

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

文本相似度的计算

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

vc picture控件载入背景图,随控件大小改变

在mfc里&#xff0c;想要在Picture控件中载入一张图片有两种方法&#xff1a;静态的和动态的。静态的方法就是图片先载入资源&#xff08;.rc&#xff09;文件中&#xff0c;拥有一个唯一的ID&#xff1b;动态的方法就是制定图片的路径名即可。 当然这样的方法网上一搜有很多&…

真没想到,Python还能实现5毛特效

来源 | ZackSock&#xff08;ID:ZackSock&#xff09;图源 | 视觉中国Python牛已经不是一天两天的事了&#xff0c;但是我开始也没想到&#xff0c;Python能这么牛。前段时间接触了一个批量抠图的模型库&#xff0c;而后在一些视频中找到灵感&#xff0c;觉得应该可以通过抠图的…

第八章 VLSM

VSLM(variable length subnet mask)------------可变长长度子网掩码 对于点对点链路而言&#xff0c;最好的子网掩码是&#xff1a;255.255.255.252对于lan而言&#xff0c;好的子网掩码可能是255.255.255.192。vlsm的两个好处&#xff1a;在大型网络中高效地使用寻址&#xff…

Androidstudio下Generate signed apk提示Error: Expected resource of type id [ResourceType]解决办法...

只需要在报错位置所在的类上面添加&#xff1a; SuppressWarnings("ResourceType") 即可实现Generate signed apk。

对话框窗口最大最小化

mfc里&#xff0c;基于对话框的窗口&#xff0c;具有最大最小化的属性设置。在Border属性里选择Resizing&#xff0c;然后在Maximize和Minimize中选择true。在窗体当中随便拖几个控件&#xff0c;然后运行&#xff0c;此时点击最大化会发现&#xff0c;整个窗体的大小是变大了&…

4场直播,哈工大、亚马逊等大咖为你带来机器学习与知识图谱的内容盛宴

机器学习和知识图谱是当今技术领域的热门话题&#xff0c;随着相关技术的不断发展&#xff0c;无论是对两类技术单独的探讨&#xff0c;还是将机器学习和知识图谱相结合的尝试&#xff0c;都在吸引越来越多的关注。5月16日下午&#xff0c;来自亚马逊、墨奇科技、Second State、…

【失败的尝试】C++中使用string进行switch判断

贴出错误代码&#xff1a; #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的类可以作为拦截器类&#xff1a; package com.yawn.intercepter;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;import o…

由MessageBox和AfxMessageBox的使用异同所感

我记得刚开始学图形界面编程的时候&#xff0c;接触的最早的一个函数应该就是MessageBox,之前都一直是控制台程序&#xff0c;突然能运行蹦出一个对话框感觉还是很新鲜的。当时还利用MessageBox写一些恶搞程序&#xff0c;利用上面的yes or no 按钮进行判断等等。但是说实话感觉…

iRobot的30年成长史

作者 | Colin Angle译者 | 苏本如&#xff0c;编辑 | 郭芮题图视觉中国出品 | AI科技大本营&#xff08;ID&#xff1a;rgznai100&#xff09;建造一个漫游者&#xff0c;把它送上月球&#xff0c;出售电影版权。这是我们在1990年开始iRobot时的第一个商业模式&#xff0c;我们…

iPhone开发:通过NSURLRequest获得服务器返回的http header和http status

HTTP连接的头信息包括在NSHTPURLResponse类中。如果你拥有一个NSHTTPURLResponse变量&#xff0c;你可以通过发送allHeaderFields信息&#xff0c;轻而易举地获取以NSDictionary形式保存的头信息。对于一个同步请求 – 由于会引发阻塞所以不推荐使用 – 是很容易初始化一个NSHT…

今天开始记录自己苹果开发博客旅程!~

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