一.VIM的使用
1.Uinux系统中编辑器的演变
不同版本的linux中带的编辑器不同,例如有ed/sed、ex、Vi/Vim,现在最常用的是Vim
Vi实际上是minimal vim
Vim是加强版vim(vim-enhanced)可以识别语法,有颜色,但文件不在其原目录下时有时可能无法识别语法。
2.vim的三种模式
命令模式、插入模式、命令行模式
进入vim就是命令模式,进入命令行模式按“:”
由命令模式进入插入模式按任意插入模式快捷键
进入或退出命令行模式都是按ESC
3.打开文件
①vim file 打开文档
②vim -o /etc/paswd passwd 上下打开两个文档
vim -O /etc/paswd passwd 左右打开两个文档
Ctrl+w然后按上下左右来切换
③vim -p /etc/paswd passwd 分页打开两个文档
Ctrl+Page Up/Page Down来切换
4.命令模式快捷键
PS:在执行以下命令前加数字n,会执行n此操作,如5yy,即复制5行
①插入(进入插入模式)
i:在当前字符的左边插入
I:在当前字符首行插入
a:在当前字符的右边插入
A:在当前行尾插入
o:在当前行下面插入一个新行 //open
O:在当前行上面插入一个新行
②复制/粘贴/删除/替换
s:删除当前字符,并进入插入模式i
S:删除当前行,并进入插入模式i(无法删除空行,但可以用dd删除)
x:删除当前字符
dd:剪切/删除当前行
dw:剪切/删除当前词(必须以Ctrl+左右键的形式移动到该词)
D:删除当前字符至行尾的所有字符
yy:复制当前行
yw:复制一个单词
p:粘贴(粘贴到当前字符右侧,如果是一行则粘贴到下一行)
r:替换当前字符 //replace
③撤销/定位
u:撤销一步 //undo
Ctrl+r:取消撤销 //redo
G:到文档末尾
3G:到第三行
L:到屏幕末尾
3L:到屏幕末尾倒数第3行
④剪切板的使用:
“a3yy:复制三行到剪贴板a(按“,再按a,3,yy)
“ap:从剪贴板a复制
⑤块操作:
先按v,然后通过左右间选择块长度,即可进行复制剪切
5.命令行模式快捷键:
①保存/退出
:e!:不保存(撤销编辑)
:e! /etc/passwd:不保存并编辑下一个文件
:w:保存
:w a.file:另存为
:x:保存
:q:退出
②追加/替换
:!ShellCommand:执行shell命令
:r /etc/passwd:将另一个文件读入到当前位置
:r !ls:将当前目录下的文件名读入到当前位置
:1,5 w >> aaa.file: 将1-5行写到文件aaa末尾
:1,$ s/sbin\/root/czd/g:将1-尾行的sbin/root替换为czd
\为转义字符,/g表示不询问(c表示询问,默认不询问),$表示尾行,%为全部(1,$=%), s表示替换
③显示
:/string 查找
:set nu:显示行号
:set nonu:不显示行号
:split /etc/passwd 上下分屏打开另一个文件
:vsplit /etc/paswd 左右分屏打开另一个文件
二.自定义vim
1.配置vimrc文件
添加vimrc文件,如果是给自己自定义vim则在自己的主目录下创建,给所有用户定制则在/etc/下创建此文件,添加自己的习惯,如:
set nu //显示行数
PS:凡是*rc的文件都是定制脚本
2.别名设置
为了输入vi时调用的是加强版vim,可进行如下别名配置:
[root@localhost desktop]# alias //查看指令的别名
[root@localhost desktop]# alias vi=vim //设置别名
三.ctags
ctags(Generate tag files for source code)是vim下方便代码阅读的工具。尽管ctags也可以支持其它编辑器,但是它正式支持的只有VIM。并且VIM中已经默认安装了Ctags,它可以帮助程序员很容易地浏览源代码。ctags 最先是用来生成C代码的tags文件,后来扩展成可以生成各类语言的tags, 有些语言也有专有的tags生成工具(比如java的jtags, python的 ptags).
1安装ctags并创建查找目录
①安装
rpm -qa|grep ctags 查看是否安装了ctags
如果没有安装下载源码,然后进入源代码根目录执行./configure,然后执行make,编译成功后执行make install,嫌麻烦的话也可以下载别人编译好的rpm包
②创建查找目录
ctags -R . 在当前目录执行ctags
“-R”表示递归创建,也就包括源代码根目录(当前目录)下的所有子目录。“*”表示所有文件。这条命令会在当前目录下产生一个“tags”文件,当用户在当前目录中运行vi时,会自动载入此tags文件。Tags文件中包括这些对象的列表:用#define定义的宏枚举型变量的值函数的定义、原型和声明名字空间(namespace)类型定义(typedefs)变量(包括定义和声明)类(class)、结构(struct)、枚举类型(enum)和联合(union)类、结构和联合中成员变量或函数VIM用这个“tags”文件来定位上面这些做了标记的对象。
当项目结束,编译完成时可手动删除tags文件
搜索只限于当前目录及其子目录,如果想在其他目录也可以搜索,可以添加“settags=路径”命令
2.ctags的使用
①shell中的查找命令
vi -t main 打开定义main(函数变量或其他)的文件,并将光标定位这一行
ctags -t get-options() //查找函数get-options
②vim中的查找命令
Ctrl+] :查找一个函数,并调到这个函数或变量定义的源文件中 //需将光标置于此函数
:tselect get-options / /查找get-options
③查看搜索结果
:tn (同一文件中)下一处定义
:tp (同一文件中)上一处定义
:ts查看搜索结果(显示出现所查找关键字的文件),按对应数字进入各文件
ctrl+t 按原路返回