基本框架:
a) Vi的三种工作模式
b) 编辑模式
c) 插入模式
d) 命令模式
1、 Vi的三种工作模式
2、 编辑模式:不能所见即所得
l 光标定位
k 上移;
j 下移;
h 左移;
l 右移。
ctrl+f 在文件中前移一页(相当于page down)。
ctrl+b 在文件中后移一页(相当于page up)。
H 将光标移到屏幕上的起始行(或最上行);
M 将光标移到屏幕中间;
L 将光标移到屏幕最后一行。
gg 文件的开头
G 文件的末尾
0 数字0,左移光标到本行的开始;
$ 右移光标,到本行的末尾;
l 搜索字符串
/str1 正向搜索字符串 str1
n 继续搜索,找出 str1 字符串下次出现的位置
?str2 反向搜索字符串 str2
l 替换和删除
rc 用 c 替换光标所指向的当前字符
nrc 用 c 替换光标所指向的前 n 个字符
x 删除光标所指向的当前字符
dd 删除光标所在行,并去除空隙
ndd 删除 n 行内容,并去除空隙
其他常用的删除命令是:
d$ 从当前光标起删除字符直到行的结束;
d0 从当前光标起删除字符直到行的开始;
dgg 文件开头到当前光标
dG 当前光标到文件尾
J 删除本行的回车符,并和下一行合并。
l 剪切和粘贴
小写字母 p 将缓冲区的内容粘贴到光标的后面
大写字母 P 将缓冲区的内容粘贴到光标的前面
yy 复制当前行到内存缓冲区
nyy 复制 n 行内容到内存缓冲区
l 撤销和重复
u 撤消前一条命令的结果
. 重复最后一条修改正文的命令
3、 插入模式 可以所见即所得
i 在光标左侧插入正文
a 在光标右侧插入正文
o 在光标所在行的下一行增添新行
O 在光标所在行的上一行增添新行
I 在光标所在行的开头插入
A 在光标所在行的末尾插入
4、 命令模式
退出命令
: q 在未作修改的情况下退出
: q! 强制退出,放弃所有修改
:wq 保存退出
另外在编辑模式下可以按大写的ZZ也能保存退出
行号与文件
: n 将光标移到第 n 行
:1,.w file 将第 1 行至当前行写入 file 文件
:1,$w file 将所有内容写入 file 文件, 相当于 :w file 命令
:w file 将当前编辑的内容写到 file 文件里,保持原有文件的内容不变
:e file 编辑新文件
字符串搜索
跟编辑模式类似
正则表达式
^ 放在字符串前面,匹配行首的字;
$ 放在字符串后面,匹配行尾的字;
< 匹配一个字的字头;
> 匹配一个字的字尾;
. 匹配任何单个正文字符;
[str] 匹配str中的任何单个字符;
[^str] 匹配任何不在str中的单个字符;
[a-b] 匹配a到b之间的任一字符;
* 匹配前一个字符的0次或多次出现;
不管后面的字符的特殊含义。
正文替换
:s/str1/str2/ 替换当前行中所有出现的字符串 str1
:s/str1/str2/g 替换当前行中首次出现的字符串 str1
:1,$ s/str1/str2 替换全文中所有出现的字符串 str1
删除正文
:d 删除光标所在行
:3d 删除第 3 行
:.,$d 删除当前行至正文的末尾
:/str1/,/str2/d 删除从字符串 str1 到 str2 的所有行
选项设置
如果想要显示行号,首先切换到用户的家目录,然后 vi 任意一个新文件,然后在命令行输入mk,目的是为了生成 .exrc文件,然后在.exrc文件中添加 set number
shell切换
:! command 执行完 command后回到 vi
另外也可以在vi命令行输入sh,然后就切换到shell环境,在shell环境中输入exit就能退回到vi环境。
5、 如何进行多窗口的编辑
l 打开多文件:
Vim –o filename1 filename2 横向显示多文件
Vim –O filename1 filename2 纵向显示多文件
如果已经打开一个文件,可以用: sp + 文件名 上下多窗口显示
vs + 文件名 左右多窗口显示
也可以用new, vnew 来实现相同的功能
l 多窗口间切换:
Ctrl + w+ w 在多窗口间进行切换
也可以通过在命令行输入first,wnext,last使相应的文件切换到当前窗口
l 显示当前编辑的文件信息:
:f 打印当前文件名称和状态,如文件的行数、光标所在的行号等
另外跟f命令功能相近的有:args,ctrl + g(在编辑模式下输入)
l 退出:
exit, quit(q), close : 关闭一个窗口
wquitall(wqall): 保存并关闭多个文件
6、其它细节:
zo 展开折叠处
zm 进行折叠
gg=G 代码对齐(在编辑模式下输入)