vi的工作模式
Vi在初始启动后,先进入编辑模式,用户可以使用预定的按键来移动光标、删除文字、复制或粘贴文字。用户在编辑模式下键入i、a、o等命令可以进入插入模式,在插入模式下,用户随后输入的除了ESC外的任何字符都被看做是插入到编辑缓冲区的字符,按ESC后,从插入模式切换到编辑模式。在命令模式下,Vi把光标挪到屏幕的最下方,并在第一个字符的位置显示一个:。用户可以键入一些命令,这些命令可以用来保存文件,读取文件内容,执行shell命令,设置Vi参数,以正则表达式查找字符串或替换字符串。
编辑模式
移动光标
要对正文内容进行修改,首先必须把光标移动到指定位置。最简单的方式是上下左右箭头键。
h、j、k、l 功能分别对应上下左右箭头键。
Ctrl+b 在文中向上移动一页(PageUp)
Ctrl+f 在文中向下移动一页(PageDown)
H 将光标移到屏幕最上方(Highest)
nH 将光标移到屏幕的第n行
M 将光标移到屏幕的中间
L 将光标移到屏幕的最下行
nL 将光标移到屏幕的倒数第n行
w 在指定行右移光标,到下一个字的开头
e 在指定行右移光标,到一个字的末尾
b 在指定行左移光标,到前一个字的开头
0 左移光标,到本行开头
$ 右移光标,到本行末尾
^ 到本行第一个非空字符
G 光标移动到某行 (1G表示移动到第一行)
G 移动到文件结尾
替换和删除
粘贴和复制
p 小写字母p–将缓冲区的内容粘贴到光标的后面
P 大写字母P–将缓冲区的内容粘贴到光标的前面
通常小写命令在光标的后面进行操作,大写命令在光标的前面进行操作。
复制一段正文,并保留原位置的内容:
yy 复制当前行到内存缓冲区
nyy 复制n行内容到内存缓冲区
搜索字符串
键入/,后面跟要搜索的字符串,回车搜索,正向搜索
键入?,实现反向搜索
键入n,继续执行搜索,搜索下一次出现的位置
撤销和重复
u 撤销前一条命令的结果
. 重复最后一条修改正文的命令
文本选中
vi 进入Visual的模式,用户可以使用光标移动命令可视地选择文本
插入模式
进入插入模式
在编辑模式下:
i 在光标左侧输入正文
a 在光标右侧输入正文
o 在光标所在行的下一行新添行
O 在光标所在行的上一行新添行
I 在光标所在行开头输入正文
A 在光标所在行末尾输入正文
退出插入模式
按ESC 或者 组合键Ctrl+[
命令模式
编辑模式下键入“:”进入
退出命令
:q 未做修改情况下退出
:q! 放弃修改,退出编辑
行号与文件
:n 将光标移动到第n行
指定命令操作的行号范围
数值用来指定绝对行号;
字符“.”表示光标所在的行号;
字符“$”表示正文最后一行行号;
例:
.+5 当前行向下移动5行
:345 光标移动到345行
:345w file 将第345行写入file文件
:3,5w file 第3到第5行写入file文件
:1,.w file 将第一行至当前行写入file文件
:.,wfile将当前行至最后一行写入file文件:.,.+5wfile将当前行开始将6行内容写入file文件:1,w file 将当前行至最后一行写入file文件 :.,.+5w file 将当前行开始将6行内容写入file文件 :1,wfile将当前行至最后一行写入file文件:.,.+5wfile将当前行开始将6行内容写入file文件:1,w file 将所有内容写入file文件 ===== :w file
:w 保存编辑中的内容
:w file 将编辑内容保存至file文件 保持原文件不变
:a,b w file 将a-b行写入file文件
:r file 读取file内容,插入当前光标所在行后
:e file 编辑新文件file ,替换原内容
:f file 将当前文件重命名为file
:f 打印当前文件名称和状态:行数,光标所在行号
字符串搜索
:/str/ 正向搜索,将光标移到下一个包含字符串str的行
:?str? 反向搜索
:/str/w file 正向搜索,并将第一个包含字符串str的行写入file文件
:/str1/,/str2/w file 正向搜索,并将包含字符串str1的行至包含字符串str2的行写入file文件
正文替换
?/str1/str2 用str2替换str1
?/str1/str2/g 用str2替换行中所有str1
:.,/str1/str2/g用str2替换正文当前行到末尾所有出现的str1:1,/str1/str2/g 用str2替换正文当前行到末尾所有出现的str1 :1,/str1/str2/g用str2替换正文当前行到末尾所有出现的str1:1, s/str1/str2/g 用str2替换所有str1
:g/str1/s//str2/g
加g命令放在末尾,对搜索到的进行替换
不加g,只搜索
删除正文
命令模式下:
:d 删除光标所在行
:3d 删除三行
:.,$d 删除当前行至正文的末尾
:/str1/,/str2/d 删除从str1到str2的所有行
恢复文件
vi在编辑文件时,会产生一个临时文件,以.swp结尾,正常退出时,该文件删除
意外退出时,没有保存,则可以使用恢复命令
:recover 恢复文件
也可以在启动时使用-r来恢复
选项设置
:set option 这是选项option
shell切换
编辑正文时,利用vi命令模式下提供的shell切换命令,无需退出vi既可以执行linux
:! command 执行完shell命令command后回到vi
在编辑模式下,潜入K,可命令vi查找光标所在单词的手册页,相当于man命令。
高级特色
gvim支持鼠标选中,带有菜单和工具按钮。