热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

[置顶]集成VIM强大的代码编辑器(一)

在Linux环境下,拥有众多的代码编辑器eclipse、emacs、sublime等这些软件,其特点各有千秋,但是VIM(vi)确实绝大多数linuxer的钟爱之选。每个人的VIM的配

在Linux环境下,拥有众多的代码编辑器eclipse、emacs、sublime等这些软件,其特点各有千秋,但是VIM(vi)确实绝大多数linuxer的钟爱之选。每个人的VIM的配置都不太一样,都具有个性化。打造属于一个自己的喜欢的VIM其实有时候很难,而且需要很长时间的摸索,写下这些东西也只是供参考。
其实在此我要推荐一个网站,也是linuxer必须知道的一个著名的网站github网站:https://github.com/
它内部包含很多开源的代码,很多库,例如bVNC、glib、gudev、udev、libusb等等,如果你敢觉配置自己的VIM ,
https://github.com/ma6174/vim
你只需要在终端输入命令:

wget -qO- https://raw.github.com/ma6174/vim/master/setup.sh | sh -x

就会自动安装,如果你想要了解安装的过程的话,也可以通过以下命令手动安装:

  1. 安装vim sudo apt-get install vim
  2. 安装ctags:sudo apt-get install ctags
  3. 安装一些必备程序:sudo apt-get install xclip vim-gnome astyle python-setuptools
  4. python代码格式化工具:sudo easy_install -ZU autopep8
  5. sudo ln -s /usr/bin/ctags /usr/local/bin/ctags
  6. clone配置文件:cd ~/ && git clone git://github.com/ma6174/vim.git
  7. mv ~/vim ~/.vim
  8. mv ~/.vim/.vimrc ~/
  9. clone bundle 程序:git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle
  10. 打开vim并执行bundle程序:BundleInstall
  11. 重新打开vim即可看到效果
    其实用方法见网站:http://www.jb51.net/LINUXjishu/95323.html
    下面来炫一下我集成的VIM编辑器:
    如上图所示其基本的图形界面已经很接近eclipse了吧,它的框体包括5部分:
  12. 源代码文件目录
  13. 本文件的结构(宏指令macro,函数,结构体等)
  14. 在代码编辑的时候,肯定会打开很多的文件
  15. 本文件的内容
  16. 命令行(可以显示查找的内容或者命令历史)
    那么现在就开始一步一步的来讲解吧。
    一.初识VIM
    vim是vi的升级版本,其一开始的界面如下图所示:
    这里写图片描述
    可见这个VIM是很孤独的,它不包含其它的插件,所以看上去很单一,每次打开另一终端标签页的时候都要去切换,那么在这里不得不介绍几个快捷键了,当然你可一在“编辑”–>“键盘快捷键”内查看或者修改这些快捷键,可以在网上搜到很多vim的用法,在这里我就不多讲了::::
CTRL + ALT + T            //打开终端窗口
CTRL + SHIFT + T //在该终端下打开新的标签页
CTRL + PageUp/PageDown //在该终端下包含多个标签页时用来切换标签页
ALT+ 1/2/3/4....12 //切换标签页到1-12号标签
CTRL + SHIFT + C //复制
CTRL + SHIFT + V //粘贴(也可以合理的使用鼠标滚轮)
CTRL + r //当使用u来撤销编辑的时候,这个快捷键就是取消撤销命令
0和$ //是零 跳到到行首,和跳到行末
gg 和G //跳到文件头和文件末
ggVG //全选,然后你可以使用y和d来复制或者删除
CTRL + f/向下键 //下翻一页
CTRL + b/向下键 //上翻一页 ,你可以试一试CTRL +左右键,和u,d
命令:find / -name abc //在根目录下搜索 abc文件 ./ 为当前目录
命令: grep 'abc' ./ -Rn //在当前目录下所有文件内容中搜索关键字 abc
命令:script abc //把下面终端内出现的内容存储到abc文件中,使用完后,一定要使用 exit 命令接触script 记录,不然会一直记录下去

之前没有整合VIM时就是使用这些快捷见来切换的,或者用鼠标点,这已经是很快捷的方法了,不过依然很麻烦,而且不习惯。
在此需要介绍VIM 的两个重要的配置文件,其实也可以是一个/etc/vim/vimrc 和 ~/.vimrc ,这两个有什么区别呢,其实他们可以是一个,etc/vim/vimrc,影响整个系统的Vim,而~/.vimrc,只影响本用户的Vim。/etc/vim/vimrc 我用它来设置后面所讲的ctags标签,~/.vimrc一开是是空文档,我主要用它来对VIM进行基本的设置,例如设置行号等,后没会讲到这两个文件的重要性。
二.初步配置VIM
在此就要用到上文中所提到的~/.vimrc配置文件了。 使用命令:
vim ~/.vimrc 来编辑它,打开后是个空文件,那么添加以下内容:

   set nu " 设置vim显示行号
set ts=2
set mousemodel=popup
set ru " 打开状态栏标尺s
set hls "搜索高亮
set ignorecase "搜索忽略大小写
set is
set showcmd " 输入的命令显示出来,看的清楚些
set autowrite " 自动保存
set incsearch"设置增量搜索模式,在搜索时,输入的词句的逐字符高亮
set gdefault
set syntax=on " 语法高亮
set cursorline " 行高亮
set cursorcolumn "列高亮
set showmatch "在输入括号时光标会短暂地跳到与之相匹配的括号处,不影响输入
set foldenable " 允许折叠
set foldmethod=manual " 手动折叠
set laststatus=1 " 启动显示状态行(1),总是显示状态行(2)

到此位置基本的vim配置就算可以看了,当然你也可以根据自己的喜好来配置这些东西,包括配色的方案都可以的。
三.Ctags的安装使用
不管是使用Sublime还是vim都需要是需要使用一个插件,那就是Ctags,这个插件的作用就是建立文件之间的联系,就像sourceInsight一样在使用是首先需要建立文件之间的联系。
安装ctags很简单:在安装之前在终端下可以使用ctags命令,来验证是否安装了,或者使用rpm -qa | grep ctags 来查询按准个情况,如果没有安装,那么如下:
sudo apt-get install ctags
就可以了,这样做是最简单的,有时候有的人喜欢编译安装的方法:如下:
1. 下载ctags源码:http://ctags.sourceforge.net/
2. 解压源码:tar zxvf ctags-5.8.tar.gz
3. 配置源码:cd ctags-5.8 ,然后 ./configure,也可以./configure –prefix=/usr/local/ctags
安装在/usr/local/ctags,或者目录自定,
只要最后添加环境变量就可以了:vim /etc/bash.bashrc export PATH=/usr/local/ctags/bin:$PATH
4. 编译加载:make && make install
在此,ctags的安装就完毕了,下来来研究以下如何使用:
在你的需要编辑的源码中(例如linux源码),进入源码根目录下输入命令:

ctags -R(这是最简单的方法) 
ctags -R --fields=+iaS --extra=+q (包含对象的成员变量)
ctags --fields=+iaS --extra=+q -R -f ~/.vim/systags /usr/include /usr/local/include
http://blog.chinaunix.net/uid-20874550-id-2412585.html这里有一些介绍,可以看一下

就会看到在此目录下会多出一个tags文件,这就是联系文件,有的人会在 /etc/vim/vimrc 内设置快捷键 F5或者其他的快捷键,但是本人建议不需要使用,因为快捷键使其起来可能会有冲突(可能性比较小),因此也没有设置,如果感兴趣的话可以自己设置一下:
” 按下F5重新生成tag文件,并更新taglist

map <F5> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR><CR> :TlistUpdate
imap <F5> <ESC>:!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR><CR> :TlistUpdate
set tags=tags
set tags+=./tags "add current directory's generated tags file
set tags+=~/arm/linux-2.6.24.7/tags "
add new tags file(刚刚生成tags的路径,在ctags -R 生成tags文件后,不要将tags移动到别的目录,否则ctrl+〕时,会提示找不到源码文件)

set tags+=./tags表示在当前工作目录下搜索tags文件
set tags+=~/arm/linux-2.6.24.7/tags表示在搜寻tags文件的时候,也要搜寻~/arm/linux-2.6.24.7/文件夹下的tags文件。

但是我觉得没有必要这样做,因为安装好ctags后,就可以使用一次上面的命令就可以了。编辑完之后你需要添加你的tags地址在 /etc/vim/vimrc内添加:

vim /etc/vim/vimrc //打开这个文件,然后在其末尾添加行:
set tags=/你的路径/tags ,如下图所示的内容

这里写图片描述
下面就根据我的经验来将以下ctags的用法和方便之处。ctags最重要的功能就是跳转到定义的地方,这也是最常用的地方:

Ctrl+〕         //跳转到定义的地方,可以使用命令:ta abc 来跳转
Ctrl+ o/t //跳回上一光标出
TAB //与Ctrl+ o/t正好是相反方向的,就是前进后退的使用,这样就很方便了吧.
命令:tags 就可以查看最近tag的所有跳转的过程

这三个个快捷键最常用的其他的倒不是特别常用。
四.Tlist的安装使用
上文已经介绍了Ctags的安装和使用方法,那么下面来研究以下VIM的另一个非常有用的插件Tlist。
其安装方法很简单的,

  1. 首先下载这个插件: http://sourceforge.net/projects/vim-taglist/files/
  2. 然后解压可以得到两个目录加doc(放的是帮助文件taglist.txt)和 plugin(放的是我们所用的插件taglist.vim)。
  3. 把taglist.txt复制到 ~/.vim/doc下和把taglist.vim复制到~/.vim/plugin下,有可能这两个目录不存在,需要自己创建
  4. 添加帮助文件taglist.txt,命令::help taglist.txt 就可以了
  5. 配置文件,在/etc/vim/vimrc内添加以下内容
    let Tlist_Use_Right_Window=1 "让窗口显示在右边,0的话就是显示在左边 
let Tlist_Show_One_File=1 "
0让taglist可以同时展示多个文件的函数列表,1只显示当前的文件列表
let Tlist_File_Fold_Auto_Close=1 "非当前文件,函数列表折叠隐藏
let Tlist_Exit_OnlyWindow=1 "
当taglist是最后一个分割窗口时,自动推出vim
map tl :TlistToogle " 使用t+l键可以快捷打开和关闭Tlist

配置好后就可以使用命令:Tlist来打开列表或者直接快捷键t+l,如下图所示:
这里写图片描述
讲到这里就要讲它的使用 了,方便到你无法想象的地步,使用vim打开一个程序,然后输入命令:help taglist.txt,就会看到他的帮助文件,很多可以不用看,但是其快捷键一定要看,都是英文的,不过再次翻译了以下,这些快捷键,实在是太好用了如下:

 : 代码窗口跳转到标签列表窗口中光标所在标签定义处
o : 在新建代码窗口中跳转到标签列表窗口中光标所在标签定义处
P : 跳转至上一个窗口的标签处
p : 代码窗口中内容跳转至标签定义处,光标保持在标签列表窗口中
t : 在Vim新标签窗口中跳转至标签定义处。如文件已经在Vim标签窗口中打开,则跳转至此标签窗口
Ctrl-t : 在Vim新标签窗口处跳转至标签定义处
: 显示光标当前所在标签原型。对文件标签,显示文件的全路径名,文件类型和标签数量。对标签类型(指如variable/function等类别),显示标签类型和拥有标签的数量;对函数/变量等普通标签,显示其定义的原型
u : 更新标签列表窗口中的标签信息,这个千万不要和文件编辑窗口下的u混了,文件编辑窗下的u是撤销的作用,ctrl + r取消撤销
s : 切换标签排序类型(按名称序或出现顺序)
d : 移除当前标签所在文件的所有标签
x : 扩展/收缩标签列表窗口
+ : 展开折叠节点*
- : 折叠结点*
* : 展开所有结点
= : 折叠所有节点
[[ : 跳转至上一个文件标签的头部。这个是在文件编辑窗口中使用的
: 跳转至上一个文件标签头部
]]
: 跳转至下一个文件标签头部。这个是在文件编辑窗口中使用的
: 跳转至下一个文件标签头部
q : 关闭标签列表窗口,这个在其他插件中也是适用的
F1 : 显示帮助**

到此就会遇到一个问题,两个窗口或多个窗口的切换:

CTRL + WW        //这个是依次切换
CTRL + 方向键 //按反向切换

在第二部分会介绍其他的功能更强大的插件哦:http://blog.csdn.net/hubbybob1/article/details/48501035


推荐阅读
  • ANSI
    ANSI是什么编码?用Notepad创建一个文本文件text.txt,其默认编码格式为ANSI(乍看之下,还以为是ASCII ... [详细]
  • 让你明白kvm是什么
    参考:https:blog.csdn.netbbwangjarticledetails80465320KVM工具集合:libvirt:操作和管理KVM虚机的虚拟化API ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • CentOS7系统目录LINUX有四种基本文件系统类型普通文件:如文本文件、C语言元代码、SHELL脚本、二进制的可执行文件等,可用cat、less、 ... [详细]
  • Linux 中使用 clone 函数来创建线程
    2019独角兽企业重金招聘Python工程师标准Linux上创建线程一般使用的是pthread库实际上libc也给我们提供了创建线程的函数那就是cloneintclone(i ... [详细]
  • 安卓端开源移动浏览器开源项目
    进入android开发以来,webview用的比较多,后来又看了一些基于webview的浏览器代码,慢慢的将积累的东西做成了一个安卓移动浏 ... [详细]
  • BashShell作为Linux的指定合作伙伴我们已经再熟悉不过了,使用Bash可以快速编写简单的脚本方便我们的日常比如善用vim,awk和sed三剑客,也可以创建十分复杂的逻辑, ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • Linux磁盘的分区、格式化的观察和操作步骤
    本文介绍了如何观察Linux磁盘的分区状态,使用lsblk命令列出系统上的所有磁盘列表,并解释了列表中各个字段的含义。同时,还介绍了使用parted命令列出磁盘的分区表类型和分区信息的方法。在进行磁盘分区操作时,根据分区表类型选择使用fdisk或gdisk命令,并提供了具体的分区步骤。通过本文,读者可以了解到Linux磁盘分区和格式化的基本知识和操作步骤。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
author-avatar
阿莱沃_132
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有