vi编译器的学习和使用

转自http://mylxiaoyi.iteye.com/blog/313975

我们在用Vim来处理文件时可以使用Vim的自动完成功能来大大加速我们的工作速度.所谓的自动完成也就是说当我们输入一个单词的一部分以后,按CTRL-P,Vim就会自动的来完成剩下的部分.我们在前面的学习过程中曾用:abbreviate命令来简记某一个单词来达到自动完成的目的,而在这里我们将看到是一个更加强大的自动完成功能.Vim能非常简单和灵活的来决定要用哪一个单词来自动完成. 我们在使用Vim这个强大的自动完成功能的同时,还可以自已定义我们的自动完成的特征,而且还可以使用不同类型的自动完成功能.
如果我们在编写C程序,而我们所谓得到的下面的一个句子:
total=ch_array[0]+ch_array[1]+ch_array[2]
这时我们输入total=ch_array[0]+ch_,然后按下CTRL-P,Vim就会自动的替我们完成其余的部分,这时我们得到将是
total=ch_array[0]+ch_array
由此可以看到我们在处理文件时用这样的方式可以大大的加快我们的处理速度.
那么Vim是如何找到匹配的单词的呢?在默认的情况下,Vim在查找一个单词时是按照如下的步骤:
1 在当前文件中进行查找
2 在其他窗口中进行查找
3 在其他的已装入的缓冲区中进行查找
4 在没有装入缓冲区的文件中进行查找
5 在当前的标记(tag)列表是进行查找
6 在所有的由当前文件的#include包含进来的文件中进行查找
当然了我们也可以自定义我们的查找顺序.
我们在使用自动完成功能时的命令CTRL-P是向后查找匹配的单词,而还有一个命令CTRL-N是向前查找匹配的单词.他们有同样的功能和作用,所不同的只是查找方向上的不同.
Vim还提供了许多的命令可以使得我们来自定义我们的一些查找上的特征.例如我们可以用下面的命令来告诉Vim在在自动完成的查找过程中忽略大小写的区别:
:set ignorecase
这样以后如果我们输入ins,Vim就会认为是INSERT,Inside或者是instep.当然了前提是在我们所编辑的文本中含有这些词,要不就会找得到了.
为了能够精确的进行查找来自动完成,我们并不希望上面的情况出现,我们可以设置一些选项来告诉Vim区分大小写的情况.这时我们要用到下面的命令:
:set infercase
这样以后如果我们再输入ins,与其相匹配的列表就成为了instep,inside,insert.我们可以通过按CTRL-P或是CTRL-N来进行匹配完成.
在大多数情况下,Vim默认的设置可以很好的来完成工作,但是有时我们要定义自己的一些完成的选项,这时我们就要用到complete这个选项了.这个选项的格式如下:
:set complete=key,key,key
而这个命令中可能出现的key值如下:
.    当前文件
b    已被装缓冲区,但是没有在窗口内的文件
d    在当前的文件中定义和由#include包含进来的文件
i    由#include包含进来的文件
k    由dictionary选项定义的文件
kfile    名为{file}的文件
t    标记(tags)文件
u    没有载入的缓冲区
w    在其他窗口中的文件
我们可以使用path选项来告诉Vim如何来查找我们在当前文件中所包含进来的文件.我们还可以指定一个字典,这个选项的格式如下:
:set dictionary=file,file,....
这个选项定义了由命令CTRL-P和CTRL-N进行匹配查找时所要查找的文件.在Linux系统中这个定义文件在/usr/dict/words中,所以如果我们要将这个文件添加进来进行查找的话,我们就要用到下面的命令:
:set dictionary=/usr/dict/words
如果我们要使用一个我们自己的文件也可以这样的来设置
:set dictionary=/home/oualline/words,/usr/doc/words
我们也可以指定一个字典文件和k选项组合使用:
:set dictionary=k/usr/oualline/words
我们也可以多次的使用k这个标记选项:
:set dictionary=k/usr/dict/words,k/usr/share/words
在上面提到的CTRL-P和CTRL-N进行查找匹配时查找的范围比较的宽范,我们当然也可以使用命令进行一些比较严格的查找.这时我们可以使用命令CTRL-X.当我们输入CTRL-X时我们会进入CTRL-X的一个子模式.这时我们可以使用下面的命令进行查找:
CTRL-D    宏定义
CTRL-F    文件名
CTRL-K    字典
CTRL-I    当前文件以及由#include包含进来的文件
CTRL-L    整个行
CTRL-]    标记(tags)
CTRL-P    向前查找,与没有CTRL-X命令时相同
CTRL-N    向后查找,与没有CTRL-X命令时相同
CTRL-X
CTRL-D命令查找宏定义.他也会查找#include文件.当我们执行完这个命令以后就可以使用CTRL-P,CTRL-N来进行匹配查找.
例如我们可以编辑下面的测试文件:
include.h文件中的内容
#define MAX(x,y) ((x)<(y)?(y):(x))
#define MIN(x,y) ((x)<(y)?(x):(y))
int sum(int i1,int i2)
{return (i1+i2);}
main.c文件中的内容:
#include "include.h"
#define MORE "/usr/ucb/more"
这时我们开始编辑main.c文件,如果我们按下CTRL-X我们就会进入CTRL-X的子模式.如果我们要查找一个宏定义,我们可以按下CTRL-D,这时就会在屏幕的底部简单的显示出有多少匹配的选项.这样我们就可以用CTRL-P和CTRL-N来进行自动完成的功能了.而命令CTRL-X CTRL-]则是查找下一个标记(tag),标记是一个C函数的定义.我们可以用命令ctags命令来生成一个C函数定义的列表.我们可以这样的来使用这个命令:
$ctags *.c *.h
这样以后我们就可以在插入模式入下用CTRL-X CTRL-]命令来进行标记的查找和匹配了.
在默认的情况下,vim编辑器只是简单的显示出标记的名字,我们可以执行下面的命令,这样以后就可以显示出整个标记了:
:set showfulltag
我们可以使用CTRL-X CTRL-F命令来匹配文件名.他会在当前的目录下查找文件并会显示出匹配的内容,这时你就可以用CTRL-P和CTRL-N命令来选择你想要的匹配选项了.
到目前为止我们所说还只是对单词进行操作,我们可以用命令CTRL-X CTRL-L对一行进行匹配操作,同样的我们也可以用CTRL-N和CTRL-P来进行选项的匹配.我们还可以在输入CTRL-X命令后用CTRL-Y向下滚动文本,而用CTRL-E向上滚动文本.

时间: 2024-12-20 01:17:32

vi编译器的学习和使用的相关文章

linux学习5 vi,vim的学习

1.一般模式 移动 h或方向左 ------------------- 左移动 j或方向下-------------------- 下移动 k或方向上------------------ 上移动 l或方向右 ------------------- 右移动 crtl+f  向下移动一页(常用) ctrl+b 向上移动一页(常用) crtl+d 向下移动半页 crtl+u 向上移动半页 + 光标移动到非空格符的下一行 - 光标移动到非空格符的上一行 n<space> 移动到这一行的第n个字符 0

vi常用命令学习

(1)移动光标 h : 左移光标l : 右移光标j : 下移光标k : 上移光标 w : 移动到下一个单词词头b : 移动到上一个单词词头e : 移动到本单词的尾部 0 :移动到当前行的开端$ :移动到当前行的末端 H : 移动光标到屏幕显示首行行头M : 移动光标到屏幕显示中间行行头L : 移动光标到屏幕显示末行行头 G :移动到文件末行 Ctrl+f :前一页Ctrl+b :后一页 (2)搜索文件内容/<string> 向前搜索?<string> 向后搜索 n :重复先前的搜索

Linux系统学习日志Day01

Day01   Linux系统学习日志 (一)  Linux历史 创始人:林纳斯·托瓦兹 时间:1991 年10 月5 日(对外公开时间) 现状:多版本,有redhat.centos.Ubuntu.fedora (二)  Linux认证 管理员:RHCSA 需要掌握的知识: Linux的命令和日常维护,包括安装操作系统.构建网络连接.管理物理存储和执行基础安全管理. 工程师:RHCE 需要掌握的知识: RH124红帽企业Linux基础 RH134红帽企业Linux系统管理 RH254红帽企业Li

LINUX下使用VI

学习鸟哥的LINUX私房菜vi使用 在LINUX上都预装了VI编译器,可以很方便的用来查看和编辑文档.学习vi学习VIM 的基础,vi有很多的命令,需要反复练习记忆使用. 下面是学到的命令以及基本的操作,vi对大小写敏感,操作时应注意. >>mkdir tmp/man.config >>vi tmp/man.config  //此处命令是使用vi打开man.config这个文档,并进入vi的一般模式. 注意的是:vi有三个模式,分别是一般模式,编辑模式,命令模式.其中,打开vi时便

Linux系统开发学习路线

一:嵌入式c语言 C语言是嵌入式领域最重要也是最主要的编程语言,通过大量编程实例重点理解C语言的基础编程以及高级编程知识.包括:基本数据类型.数组.指针.结构体.链表.文件操作.队列.栈等. 二:Linux基础 Linux操作系统的概念.安装方法,详细了解Linux下的目录结构.基本命令.编辑器VI ,编译器GCC,调试器GDB和 Make 项目管理工具, Shell Makefile脚本编写等知识,嵌入式开发环境的搭建. 三:Linux系统编程 重点学习标准IO库,Linux多任务编程中的多进

Python环境搭建以及编译器Emacs

对于简明Python 的P13页,对shell和终端有疑问,现在来阐述两个概念: 所谓终端 终端本身是不会解析命令,它只是一个界面,是负责人机交互的一个接口.真正处理命令的并不是这些终端,真正处理命令行的是shell.终端只是负责提供一个输入命令的交互界面而已,在里面运行的命令并不归终端界面去解析,而是找到专门的命令行程序,这种程序我们一般将其称之为shell. 所谓shell shell是一个程序,一个二进制可运行可执行的程序,shell广义上可以指操作系统和用户接口的界面,图形界面也是一种s

vi命令用法

从shell中启动可视化编辑器vi filename指示shell启动vi编辑器,并将参数filename传给它.如果当前目前中存在该文件,则vi编辑器将它解释为要打开的文件:如果没有该文件,则vi编译器创建新文件vi file1 file2 file3shell传递3个参数给vi,vi将它们解释为要打开的文件.可以使用:w命令保存文件,使用:n命令访问下一个文件vi +# filename 打开文件,并将光标移到指定的行.例如,命令vi +100 records从第100行开始编辑文件reco

shell笔记整理1---vim编译器基础应用(参考鸟哥)

1.linux中的配置文件都已是以ASCII的纯文本的形式存在 2.vim文本编译器. 一般模式:用vi打开的一个文件直接进入的就是一般模式,这个模式可以移动光标和删除字符,复制粘贴等,但是不能比那几文本内容. 一般模式中比较重要的操作: x:  向后删除一个字符. X:向前删除一个字符. nx:向后删除n个字符,同理X. dd:删除光标所在的一整行,同时也可以使用ndd来删除n行. d1G:删除光标坐在到第一行所有的数据. dG:删除光标到最后一行的所有数据. yy:复制光标所在的那一行.同时

vi的使用入门

简介: vi是Unix以及Linux平台下的一个文本编辑器, 想要以后成为一名牛气冲天的程序员,一定要学习Unix或Linux.而在这个平台下,我们想要编程,那么我们需要文本编辑器,而vi就是一个很好的工具.它的历史很久远,既然能在互联网技术高速发达的世界中存留至今并且热受程序员的喜欢,那也说明它是智慧的结晶,为了以后能够买到房,买到车,就去学习vi吧! 学习内容:1.vi的模式2.vi的打开和创建文件3.退出vi4.光标移动5.进入编辑模式6.行操作7.替换.搜索和定位行操作8.常用命令9.使