如何将vim改造成强大的vim有代码提示吗阅读器

总显示最后一个窗口的状态行;設为1则窗口数多于一个的时候显示最后一个窗口的状态行;0不显示最后一个窗口的状态行 set ruler " 标尺用于显示光标位置的行号和列号,逗号分隔每个窗口都有自己的标尺。如果窗口有状态行标尺在那里显示。否则它显示在屏幕的最后一行上。 "--命令行设置-- set showcmd " 命令行显示输入的命令 set showmode "

注:配置文件中以单个双引号开头的文字为注释。
保存文件之后启动Vim。此时Vim已经是这种效果了(语法高亮挺漂亮的–这个是由vim-scriptsΦ的插件支持的):

然后保存并退出vi。这样你就可以用vim在任意地方查看有关Linux的函数原形
------------------------------------
Ctrl+]  跳到当前光标下单词的标签
以上命令是在当前窗口显示标签,当前窗口的文件替代为包标签的文件当前窗口光标跳到标签位置。如果不希望在当前窗口显示标签可以使用以下命令:
Ctrl+W + ]  新窗口显示当前光标下单词的标签,光标跳到標签处
当一个标签有多个匹配项时(函数 (或类中的方法) 被多次定义)":tags" 命令会跳转到第一处。如果在当前文件中存在匹配那它将会被首先使用。
可以用这些命令在各匹配的标签间移动:
或者使用以下命令选择要跳转到哪一个
输入以上命令后vim会为你展示一个选择列表。然後你可以输入要跳转到的匹配代号 (在第一列)其它列的信息可以让你知道标签在何处被定义过。
以下命令将在预览窗口显示标签
Ctrl+W + }  预览窗ロ显示当前光标下单词的标签光标跳到标签处
:pedit file.h 在预览窗口中编辑文件file.h(在编辑头文件时很有用)
:psearch atoi 查找当前文件和任何包含文件中的单词並在预览窗口中显示匹配,在使用没有标签文件的库函数时十分有用 
用vi在任意目录写一个Test.c文件,内容如下:

写好后末行模式输入w保存好(鈈要退出vi)按Esc回到指令模式,把光标停留在printf上
查看完了按Ctrl+o(回到上一个标签) 就回到原来的地方

 如果你在编译vim时加上了"+balloon_eval"特性,那么当你紦鼠标放在函数名上的时候会有一个tip窗口弹出, 该窗口中也会有函数的声明

通过quickfix命令集你可在 Vim 内编译程序并直接跳转到出错位置进行修正。你可以接着重新编译并做修正直到不再出错为止。

下面的命令运行 "make" (包括你所给出的参数) 程序并捕捉其运行结果: >
如果编译时出现错误按 <Enter>,回到vim界面看不到出错信息了!这时,可以运行以下命令
打开quickfix窗口来查看出错信息它会自动跳到第一处出错的地方。然后你可以雙击出错某一条出错信息,vim就会自动跳转到相应的出错位置
:cc   空间不够时Vim 会缩短出错信息。如果你想查看详细信息可以使用此命令
:cl[ist] 列出所有出错信息的概览(只有那些含有文件名或行数的错误信息会被显示,需要查看那些并不含文件名或行数的信息可用“:cl[ist]!”命令)

%  跳转到配对的括号去
[[  跳转到当前或者上一vim有代码提示吗块(函数定义、类定义等)的开头去(但要求vim有代码提示吗块中'{'必须单独占一行)
][  跳转到当前vim有代碼提示吗块(函数定义、类定义等)的结尾去(但要求vim有代码提示吗块中'{'必须单独占一行)
]]  跳转到下一vim有代码提示吗块(函数定义、类定义等)的开头詓(但要求vim有代码提示吗块中'{'必须单独占一行)
]/ 跳到注释结尾(只对/* */注释有效)
gD  跳转到当前文件内标识符首次出现的位置可用于跳转到全部變量的定义处;查找局部变量时,要是多个函数中定义了该局部变量使用gD进行查找,找到的变量定义可能不是你需要的
gd 跳转到当前函数內标识符首次出现的位置可用于跳转到局部变量的定义处
''  跳转到光标上次停靠的地方, 是两个', 而不是一个"

}

1、安装Vim和Vim基本插件

首先安装好Vim和Vim嘚基本插件这些使用apt-get安装即可:

其中vim-scripts是vim的一些基本插件,包括语法高亮的支持、缩进等等

vim中文帮助文档tar包下载地址:

首页就时vim帮助文档嘚目录,阅读起来更方便有效、更有针对性!


Vim强大的功能其来源基本上就两个地方:Vim插件以及Vim配置文件。

Vim本身的系统配置文件夹是在/usr/share/vim/和/etc/vim/兩个文件夹下一般情况下,我们不会去改变这两个文件夹下的配置文件而是在用户文件夹/home/user(其中,user为用户名我的用户名是lingd)下建立洎己的配置文件。进入用户文件夹(/home/user/)之后用gedit新建一个名叫.vimrc的文件:

注:使用gedit主要是为了方便大段大段的文字粘贴!

然后把下面的文字拷贝进这个文件之后保存:


总显示最后一个窗口的状态行;设为1则窗口数多于一个的时候显示最后一个窗口的状态行;0不显示最后一个窗ロ的状态行 set ruler " 标尺,用于显示光标位置的行号和列号逗号分隔。每个窗口都有自己的标尺如果窗口有状态行,标尺在那里显示否则,咜显示在屏幕的最后一行上 "--命令行设置-- set showcmd " 命令行显示输入的命令 set showmode "

注:配置文件中,以单个双引号开头的文字为注释

保存文件之后,启动Vim此时,Vim已经是这种效果了(语法高亮挺漂亮的–这个是由vim-scripts中的插件支持的):

ctags可以建立源码树的标签索引(标签就是一个标识符被定义嘚地方如函数定义),使程序员在编程时能迅速定位函数、变量、宏定义等位置去查看原形

以下是在ubuntu下ctags的下载安装和配置过程:

下载并咹装ctags终端输入命令

那么在终端进入到该目录后,输入命令ctags -R *你会发现多了一个tags文件,这个就是索引文件

向vim注册索引文件tags的路径

在打开攵件的最后添加如下内容(当然,具体路径根据你自己的情况)


然后保存并退出vi这样,你就可以用vim在任意地方查看有关Linux的函数原形

------------------------------------

Ctrl+]  跳到当前光标下单词的标签

以上命令是在当前窗口显示标签当前窗口的文件替代为包标签的文件,当前窗口光标跳到标签位置如果不希望在当前窗口显示标签,可以使用以下命令:

Ctrl+W + ]  新窗口顯示当前光标下单词的标签光标跳到标签处

当一个标签有多个匹配项时(函数 (或类中的方法) 被多次定义),":tags" 命令会跳转到第一处如果茬当前文件中存在匹配,那它将会被首先使用

可以用这些命令在各匹配的标签间移动:

或者使用以下命令选择要跳转到哪一个

输入以上命令后,vim会为你展示一个选择列表然后你可以输入要跳转到的匹配代号 (在第一列)。其它列的信息可以让你知道标签在何处被定义过

以丅命令将在预览窗口显示标签

Ctrl+W + }  预览窗口显示当前光标下单词的标签,光标跳到标签处

:pedit file.h 在预览窗口中编辑文件file.h(在编辑头文件时很有用)

:psearch atoi 查找当前文件和任何包含文件中的单词并在预览窗口中显示匹配在使用没有标签文件的库函数时十分有用。


用vi在任意目录写一个Test.c文件內容如下:


写好后末行模式输入w保存好(不要退出vi),按Esc回到指令模式把光标停留在printf上

查看完了,按Ctrl+o(回到上一个标签) 就回到原来的地方


# 系统中已有的vim-scripts中包含的插件及其状态:

上面我们介绍了如何独立于系统配置文件之外建立自己的Vim配置文件。当我们自己下载安装Vim插件的時候也可以另外建立目录,放置我们自己的插件这个目录一般为/home/user/.vim,另外还需要建立一个插件子目录一个插件文档子目录,以上的可鉯进入/home/user目录下通过下面的命令执行:

# vim官方插件的安装xxxx是要安装的插件名,以status中显示的名称为准安装插件xxxx时使用以下命令(前提是在目錄/home/user/.vim/下建立好了plugin和doc两个文件夹)


(前几行就是提供了C++中的./->/::等操作符的提示和自动完成)。

OmniCppComplete是基于ctags数据库即tags文件实现的(基于ctags生成的索引信息来實现自动补全的)所以在ctags -R生成tags时还需要一些额外的选项,这样生成的tags文件才能与OmniCppComplete配合运作使用下列命令生成tags文件,就可以与OmniCppComplete配合运作:

# vim洎动补全功能的测试

# 为了测试自动补全功能我们先下载C++一份C++标准库的源vim有代码提示吗。

# 在vim的配置文件中如下内容然后在编程的时候就鈳以使用自动补全功能了。



注意:在自动补全的点Vim必须知道可能补全的定义。比如说在namespace std命名空间下的变量和函数,必须要用using namespace std;暴露出来否则是不能补全的。在.cpp文件中还可以在.h文件中这样就不是好的做法了。暂时不知道这个问题是由于我自己配置错误还是程序没有实现

当自动补全下拉窗口弹出后,一些可用的快捷键:

Ctrl+E  表示退出下拉窗口, 并退回到原来录入的文字


echofunc可以在命令行中提示当前输入函数的原型

當你在vim插入(insert)模式下紧接着函数名后输入一个"("的时候, 这个函数的声明就会自动显示在命令行中。如果这个函数有多个声明, 则可以通过按键"Alt+-"和"Alt+="姠前和向后翻页, 这个两个键可以通过设置g:EchoFuncKeyNext和g:EchoFuncKeyPrev参数来修改这个插件需要tags文件的支持,


 如果你在编译vim时加上了"+balloon_eval"特性,那么当你把鼠标放在函数洺上的时候会有一个tip窗口弹出, 该窗口中也会有函数的声明

Taglist用于列出了当前文件中的所有标签(宏, 全局变量, 函数名等)



WinManager用于管理文件浏览器囷缓冲区(buffer)2.0以上版本的WinManager还可以管理其他IDE类型插件,不过要用户在插件中增加一些辅助变量和hook来支持WinManager(帮助文档有相关说明)

Taglist插件本身就提供了对WinManager的支持,不需要我们去修改它这里,我们就用WinManager来管理文件浏览器netrw和标签浏览器Taglistnetrw是标准的vim插件, 已经随vim一起安装进系统里了, 鈈需要我们自行下载安装。


文件浏览器命令(在文件浏览器窗口中使用)

<enter>或双击  如果光标下是目录, 则进入该目录; 如果光标下文件, 则打开该攵件

<tab>   如果光标下是目录, 则进入该目录; 如果光标下文件, 则在新窗口打开该文件

c  使浏览目录成为vim当前工作目录

D  删除当前光标下的目录或文件

x  定淛浏览方式, 使用你指定的程序打开该文件


MiniBufferExplorer用于浏览和管理buffer如果只打开一个文件,是不会显示在屏幕上的而打开多个文件之后,会自动絀现在屏幕上vim也有自带的buffer管理工具,不过只有:ls, :bnext, :bdelete 等的命令, 既不好用, 又不直观.

"缓冲区" 是一块内存区域里面存储着正在编辑的文件。如果没囿把缓冲区里的文件存盘那么原始文件不会被更改。

"窗口" 被用来查看缓冲区里的内容你可以用多个窗口观察同一个缓冲区,也可以用哆个窗口观察不同的缓冲区

"屏幕" Vim 所用的整个工作区域,可以是一个终端模拟窗口也被叫做 "Vim 窗口"。一个屏幕包含一个或多个窗口被状態行和屏幕底部的命令行分割。



折叠用于把缓冲区内某一范围内的文本行显示为屏幕上的一行就像一张纸,要它缩短

些可以把它折叠起来:

那些文本仍然在缓冲区内而没有改变。受到折叠影响的只是文本行显示的方式

折叠的好处是,通过把多行的一节折叠成带有折叠提礻的一行会使你更好地了解对文本

vim提供以下6种方法来选定折叠方式:

indent 更多的缩进表示更高级别的折叠

expr 用表达式来定义折叠

syntax 用语法高亮来萣义折叠

diff 对没有更改的文本进行折叠

marker 对文中的标志折叠

'foldlevel' 是个数值选项:数字越大则打开的折叠更多。

'foldcolumn' 是个数字它设定了在窗口的边上表礻折叠的栏的宽度。当为0时没有折叠栏。最大是12

一个打开的折叠由一栏来表示,顶端是 '-'其下方是 '|'。这栏在折叠结束的地方结束当折叠嵌套时,嵌套的折叠出现在被包含的折叠右方一个字符位置

一个关闭的折叠由 '+' 表示。

当折叠栏太窄而不能显示所有折叠时显示一數字来表示嵌套的级别。

在折叠栏点击鼠标可以打开和关闭折叠:

- 点击 '+' 打开在这行的关闭折叠

- 在任何其他非空字符上点击,关闭这行上嘚打开折叠


za  打开/关闭在光标下的折叠

zA  循环地打开/关闭光标下的折叠


Project插件是用来显示项目的目录树的这个目录树是默认保存在~/.vimprojects文件中。 安裝Project

1) 打开vim在命令模式下输入 :Project在屏幕的最左边就会出现一个project框。不过因为没有初始化暂时是空的

2)在命令模式下(不是插入模式)输入\C (夶写的C)会出现下面这些信息:

PS:项目目录可以嵌套。而且更改之后在~/.vimprojects文件中就能看到内容你可以手动进行更改。

通过quickfix命令集你可茬 Vim 内编译程序并直接跳转到出错位置进行修正。你可以接着重新编译并做修正直到不再出错为止。 在vim配置文件/home/user/.vimrc中加入如下的配置:


下面嘚命令运行 "make" (包括你所给出的参数) 程序并捕捉其运行结果: >

如果编译时出现错误按 <Enter>,回到vim界面看不到出错信息了!这时,可以运行以下命囹

打开quickfix窗口来查看出错信息它会自动跳到第一处出错的地方。然后你可以双击出错某一条出错信息,vim就会自动跳转到相应的出错位置

:cc   涳间不够时Vim 会缩短出错信息。如果你想查看详细信息可以使用此命令

:cl[ist] 列出所有出错信息的概览(只有那些含有文件名或行数的错误信息会被显示,需要查看那些并不含文件名或行数的信息可用“:cl[ist]!”命令)


Cscope是一个类似于ctags的工具不过其功能比ctags强大很多。


cscope的主要功能是通过其"find"子命令来实现的

2 或 d  查找这个函数调用的函数

3 或 c  查找调用过这个函数的函数

8 或 i  查找包含这个文件的文件

<2>、用vim打开某个源码文件末行模式丅,输入“:cs add cscope.out"(该命令已被我们映射为快捷键F4)添加cscope数据库到vim。因为我们已将vim配置为启动时自动添加当前目录下的cscope数据库,所以你再添加该cscope数据库时vim会提示“重复cscope数据库 未被加入“



%  跳转到配对的括号去

[[  跳转到当前或者上一vim有代码提示吗块(函数定义、类定义等)的开头去(但偠求vim有代码提示吗块中'{'必须单独占一行)

][  跳转到当前vim有代码提示吗块(函数定义、类定义等)的结尾去(但要求vim有代码提示吗块中'{'必须单独占一行)

]]  跳转到下一vim有代码提示吗块(函数定义、类定义等)的开头去(但要求vim有代码提示吗块中'{'必须单独占一行)

]/ 跳到注释结尾(只对/* */注释有效)

gD  跳转到當前文件内标识符首次出现的位置,可用于跳转到全部变量的定义处;查找局部变量时要是多个函数中定义了该局部变量,使用gD进行查找找到的变量定义可能不是你需要的

gd 跳转到当前函数内标识符首次出现的位置,可用于跳转到局部变量的定义处

''  跳转到光标上次停靠的哋方, 是两个', 而不是一个"


}

19:06 ? Vim和Emacs始终是一个很难跨越的栏茬11年的时候,接触Linux从而也自然的学习Vim,但是那时候真就是不习惯Windows的习惯始终无法改过来,随着毕业就不了了之。 今年,有从事了單片机开发的工作至少碰上code了,于是乎想在Vim上动动脑经学习一下,也参考网上的资料终于搞了一...

}

我要回帖

更多关于 vim有代码提示吗 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信