[点滴积累]vim使用(1)(FromQQ)

作者在 2009-03-20 20:41:15 发布以下内容
source:
gain:
#########20090309########
在vim中保存与回复上次的编辑状态
这里,
1)会话信息中保存了所有窗口的视图,外加全局设置。
2)viminfo信息中保存了命令行历史(history)、搜索字符串历史(search)、输入行历史、非空的寄存器内容(register)、文件的位置标记(mark)、最近搜索/替换的模式、缓冲区列表、全局变量等信息。
假设vim打开了三个窗口,vsplitsplit,split。然后n f1,n f2, n f3
打开这些文件之后,想要下次启动vim的时候保持现在这个状态,不用一个一个重新载入了,一个比较笨
的方法,例如如下步骤:
一、保存会话与状态
:cd src                            "切换到/home/easwy/src/vim70/src目录
:set sessionoptions-=curdir        "在session option中去掉curdir
:set sessionoptions+=sesdir        "在session option中加入sesdir
:mksession vim70.vim               "创建一个会话文件
:wviminfo vim70.viminfo            "创建一个viminfo文件
:qa                                "退出vim
二、恢复会话与状态
下次启动的时候,任意vi f1,然后
:source ~/src/vim70/src/vim70.vim  '载入会话文件
:rviminfo vim70.viminfo            '读入viminfo文件
#########20090310#############
small skills:
1.文件的定位:
光标定位到src/main.c文件第22行的”fcntl.h”单词上,然后在Normal模式下按”gf“。咦,vim打开了/usr/include/fcntl.h文件!
现在我们按”CTRL-^“回到刚才的位置,光标仍旧定位在第22行的”fcntl.h”单词上,然后按”CTRL-W f“。啊哈,这次vim打开了一个水平分隔窗口,在此窗口中打开了/usr/include/fcntl.h。
2.更新.vimrc 显示:
更改完了.vimrc之后执行:":source ~/.vimrc"就会更新成为.vimrc的显示了,不用重启。
3.昨天(20090309)的会话文件,如果":source  vim70.vim"之后,系统会自动寻找并执行文件名为会话文件名去掉后缀(不一定非得是.vim)再加'x.vim'的文件中的内容。例如:这里将再执行vim70x.vim(有的话)的内容(如"set nu"等)。
3.使用tag标签定位某个函数等
1)进入项目目录,输入:
$ctags –R ./
这样可以生成当前目录文件的tag文件。
(再进入相应目录,vim中":set tags=tags" "设置tags选项为当前目录下的tags文件 )
2)使用tags:打开当前目录的某个文件,例如hello.h中有一个printHello()函数,那么:
光标定位到printHello位置,输入:
CTRL-]                  "跳转到当前光标下的标签,这样将跳到hello.c文件并定位到printHello函数的定义处
CTRL-T                  "跳到标签栈中较早的标签,相当于“后退”的功能,退回到hello.h文件处
另外:
:tag {ident}            "跳转到指定的标签,例如":tag main"将跳到main函数的定义之处。
:tags                   "显示标签栈
###########20090311#######
1,vim文件浏览
在vim 7.0以前,文件浏览功能由explorer.vim插件提供,在vim 7.0中,这个插件被netrw.vim插件所代替。

netrw.vim是vim的标准插件,它已经伴随vim而发行,不需要安装。

我们现在试一下vim文件功能,当你使用vim尝试打开目录时,vim会自动调用netrw.vim插件打开该目录(从操作系统的视角来看,目录其实是一种特殊的文件)。例如,我们在vim中执行命令”:e ~/src

这个窗口类似于文件管理器,你可以创建、删除、改名文件或目录;在目录上按回车时,会进入该目录;在文件上按回车时,会使用vim打开该文件;可以更改排序方式、排序风格;隐藏目录或文件(使之不在上述窗口中显示)等等。

<F1>        显示帮助
<cr>        如果光标下为目录,则进入该目录;如果光标下是文件,则用vim打开该文件
-           返回上级目录
c           切换vim的当前工作目录为正在浏览的目录
d           创建目录
D           删除文件或目录
i           切换显示方式
R           改名文件或目录
s           选择排序方式
x           定制浏览方式,使用你指定的程序打开该文件 
2、输入“:Sexplore!”会令垂直打开一个窗口显示当前文件所在目录(没有感叹号则水平)类似:
:vnew(在新窗口创建文件),:vsplit xxx(要打开的文件名),:split xxx(要打开的文件名)这里文件都可以是目录。
3、输入“:ls”显示当前缓冲区中得文件,按N ctrl^或者“:buffer N”可以切换成第N个缓冲
##########20090312############
1,quickfixQuickfix模式的主要思想是保存一个位置列表,然后提供一系列命令,实现在这个位置列表中跳转。
对大多数使用Makefile的项目来说,vim的缺省设置”make“已经可以满足要求了。如果你的项目需要用一个特殊的程序进行编译,就需要修改’makeprg‘选项的值。
例如对于hello.c,设置执行make时的命令,注意需要空格转义
":set makeprg=gcc\ -Wall\ -ohello\ hello.c ",设置之后执行":make",就可以编译了。vim会自
动调用’makeprg‘选项定义的命令进行编译,并把编译输出重定向到一个临时文件中,当编译出现错误时,
vim会从上述临时文件中读出错误信息,根据这些信息形成quickfix列表,并跳转到第一个错误出现的地方。
可以输入”:cc“命令,vim会更次显示此信息,或者干脆使用”:cw“命令,打开一个quickfix窗口,
把所有的出错信息显示出来。

在quickfix模式里经常用到的命令有:
:cc                显示详细错误信息 ( :help :cc )
:cp                跳到上一个错误 ( :help :cp )
:cn                跳到下一个错误 ( :help :cn )或者在Quickfix List对应行上输入回车
:cl                列出所有错误 ( :help :cl )
:cw                如果有错误列表,则打开quickfix窗口 ( :help :cw )
:col               到前一个旧的错误列表 ( :help :col )
:cnew              到后一个较新的错误列表 ( :help :cnew )
更多的命令,以及这些命令更详细的解释,请参见手册。 
如果你希望跳转到出错的文件时,使用一个分隔的窗口打开,请参阅’switchbuf‘选项的值
2、关于自动补全:
除智能补全外,最常用的补全方式应该是CTRL-N和CTRL-P补全了。它们会在当前缓冲区、其它缓冲区,以及
当前文件所包含的头文件中查找以光标前关键字开始的单词。智能补全不能对局部变量进行补全,而CTRL-N和
CTRL-P补全则可以很好的胜任。 例子,输出字符”pa”,然后按CTRL-P,vim会在下拉菜单中列出所有的匹
配功能供选择,此时再按一下CTRL-P,就选中了第一个项目,也就是我想输入的”parmp”。我们第一次输入
CTRL-P的是进行补全,第二次输入的CTRL-P是在下拉菜单中向上选择,二者的含义是不同的。 我们知道,
CTRL-P一般的含义是向上,因此CTRL-P补全是向上查找以进行补全,而CTRL-N是向下查找以进行补全,在不
同场合使用不同的快捷键可以加速补全的速度。使用CTRL-N和CTRL-P补全时,由’complete‘选项控制vim
从哪些地方查找补全的内容。例如,对于比较大的软件项目,文件包含关系复杂,如果CTRL-N和CTRL-P补全
时查找所包含的头文件,耗时会比较久。此时,可以在’complete‘选项中去掉’i‘标记,这样CTRL-N和
CTRL-P补全就不在头文件中查找了,速度会快很多;当然,弊端就是你无法对头文件中出现的某些内容进行补
全了。vim中其它的补全方式包括: 
 
整行补全                        CTRL-X CTRL-L
根据当前文件里关键字补全        CTRL-X CTRL-N
根据字典补全                    CTRL-X CTRL-K
根据同义词字典补全              CTRL-X CTRL-T
根据头文件内关键字补全          CTRL-X CTRL-I
根据标签补全                    CTRL-X CTRL-]
补全文件名                      CTRL-X CTRL-F
补全宏定义                      CTRL-X CTRL-D
补全vim命令                     CTRL-X CTRL-V
用户自定义补全方式              CTRL-X CTRL-U
拼写建议                        CTRL-X CTRL-S
例如,当我们按下”CTRL-X CTRL-F“时,vim就会弹出下拉菜单,显示出当前目录下的可选目录和文件。
############20090314###############
移动:
1,上下左右移动窗口位置的命令,是CTRL-W H/J/K/L (:help CTRL-W_H, …)。注意,这里的H, J, K, L是大写的
2,在vim中翻页,同样可以使用PageUp和PageDown,我们通常使用CTRL-BCTRL-F来进行翻页,CTRL-B
CTRL-F前也可以加上数字,来表示向上或向下翻多少页
3,跳转:命令“gg移动到文件的第一行,而命令“G则移动到文件的最后一行。 跳转到文件的第1234行,只需输入
1234G”或者“:1234”
还可以按百分比来跳转,例如,想跳到文件的正中间,输入“50%;如果想跳到75%处,输入“75%
迷失自己的位置,这时使用“CTRL-G命令,查看一下自己位置以及文件等。
4,行内快速移动,可以使用f, t, F, T命令.例如,"fx",会把移动到光标右边的第一个'x'字符上。"F"
则反方向查找,也就是移动到光标左边的指定字符上,"tx"会移动到光标右边第一个'x'字符的前面。"T"
是"t"命令的反向版本,它移动到光标右边的指定字符之后,可以在命令前面使用数字,"3fx"表示移动到光
右边的第3个'x'字符上.";"命令重复前一次输入的f, t, F, T命令,而","命令会反方向重复前一次输入
的f, t, F, T命令。这两个命令前也可以使用数字来表示倍数。

在vim中,移动到行首的命令非常简单,就是"0",这个是数字0,而不是大写字母O。移动到行尾的命令是"$"

 

另外还有一个命令"^",用它可以移动到行首的第一个非空白字符。

 

使用H/M/L这三个键,可以让光标跳到当前窗口的顶部、中间、和底部,停留在第一个非空字符上。加一个数

 

字,是指距窗口顶部、底部的行数

 

相对于光标的翻页:光标所在行移动窗口的顶端、中间或底部:"zt"、"zz"和"zb"

 

5,查找:直接在Normal模式下输入"/",然后输入你想查询的字符串,回车,就跳转到第一个匹配的地方了。

 

"?"进行反方向查找。命令"n"重复上一次的查找命令,而命令"N"也重复上一次的查找命令,只不过它按

 

相反方向查找。使用"q/"和"q?"命令,在vim窗口最下面打开一个新的窗口,这个窗口会列出你的查找历

 

史记录

####################20090316#################

关于替换

1.输入 :s/thee/the <回车> 。请注意该命令只改变光标所在行的第一个匹配
串。

2. 输入 :s/thee/the/g 则是替换全行的匹配串

3.输入 :#,#s/old/new/g 替换两行之间出现的每个匹配串(#,#代表的是两行的行号)。

4.输入 :%s/old/new/g 则是替换整个文件中的每个匹配串。

5.进行全文替换时询问用户确认每个替换需添加 c 选项,请输入 :%s/old/new/gc其余的不重复说了。

6.查找时,设置 ic 选项(ic就是英文忽略大小写Ignore Case的首字母缩写词),即输入:set ic

tmpREC_From_Home | 阅读 5587 次
文章评论,共0条
游客请输入验证码
浏览20463次
文章归档
最新评论