Vi常用技巧
取消命令
在vi中,只要没有把修改结果存入磁盘文件中,那么就可以通过“取消”来撤销最近的操作或对缓冲区的修改。
假设你无意删除了一行文本、改变了一些你不应该改变的内容或增加了一些不正确的文本,可以按<Esc>改变到命令模式中,然后按<u>,则文件内容恢复到修改前的样子。
保存到文件名为filename的文件中
发出写命令格式: :w filename
不使用小键盘来定位光标
vi用<h>、<j>、<k>、<l>键来定位光标。其中<h>、<l>键表示光标的左右移动,<j>、<k>键表示光标的上下移动,在某些没有或不能使用小键盘的情况下这四个键是很有用的。
下面是其他一些用于移动光标的键:
按<->将光标移动到上一行行首n
按<$>将光标移动到一行的行末
大范围移动键
可快速定位光标到屏幕的顶部、中部和底部:
按<Shift-h>将光标移到屏幕的第一行,有时称为home位置
按<Shift-m>将光标移到现在屏幕显示的各行的中间一行
按<Shift-l>将光标移到屏幕的最后一行
按<Ctrl-f>向前移动一屏
按<Ctrl-b>向后移动一屏
要移动到缓冲区中指定的行中,在按<Shift-g>前键入行号(注意,这里的行号不是当前屏幕中的相对行号,而是绝对行号)
删除文本
<x>删除光标处的字符
<d> <w> 删除从当前字的光标处到下一个字的开始处之间的内容
<d> <$> 删除从光标处到行尾之间的内容
<Shift-d> 同<d> <$>,删除当前行的剩余部分
<d> <d> 删除整行,不管光标在该行的位置
通过在上述命令之前键入一个整数,可将这些命令应用到几个对象中,例如:<4> <x>删除4个字符;<8> <d> <d> 删除8行
添加文本
使用<i>在光标位置前插入文本
使用<Shift-i>使你进入输入模式并且在当前行行首插入文本
使用<a>在光标位置后插入文本
使用<Shift-a>使你进入输入模式并且在当前行末尾插入文本
使用<o>在当前行的下面打开一行以添加文本
使用<Shift-o>在当前行的上面打开一行以添加文本
使vi显示行号
按<Esc>键以确保你在命令模式中,然后输入:se number。要关闭行号,输入:se nonumber
查找
/string 在缓冲区中向前查找字符串string
?string 在缓冲区中向后查找字符串string
<n> 以当前的方向再次查找
<Shift-n>以相反的方向再次查找
注意,查找的字符串中若含有特殊字符的,要使用\来进行转意
拷贝、剪切和粘贴
<y> <w>拷贝从当前字的光标处到下一个字的开始处之间的内容
<y> <$>拷贝从光标处到行尾之间的内容
<Shift-y>拷贝当前行的剩余部分(与<y> <$>相同)
<y> <y>拷贝整个当前行
通过在这些命令前键入整数,所有这些命令都可以用于多个对象。
当删除或剪切或拷贝时,删除或拷贝的对象被保存在通用缓冲区中,可以使用<p>或<Shift-p>命令将这个缓冲区中的内容粘贴到光标位置。
<p>命令将对象粘贴到光标位置右边或光标位置后面
<Shift-p>命令将对象粘贴到光标位置左边或光标位置前面
重复命令
可以按< . >来重复改变缓冲区的最后一个命令。