vi技巧总结
vi三种模式
命令行模式
任何时候,不管用户处于何种模式,只要按一下<Esc>键,即可使Vi进入命令行模式;我们在shell环境(提示符为$)下输入启动Vi命令,进入编辑器时,也是处于该模式下。
文本输入模式
在命令模式下输入插入命令i、附加命令a 、打开命令o、修改命令c、取代命令r或替换命令s都可以进入文本输入模式。在该模式下,用户输入的任何字符都被Vi当做文件内容保存起来,并将其显示在屏幕上。在文本输入过程中,若想回到命令模式下,按<Esc>键即可。
末行模式
末行模式也称ex转义模式。
Vi和Ex编辑器的功能是相同的,二者主要区别是用户界面。在Vi中,命令通常是单个键,例如i、a、o等;而在Ex中,命令是以按回车键结束的正文行。Vi有一个专门的“转义”命令,可访问很多面向行的Ex命令。在命令模式下,用户按“:”键即可进入末行模式下,此时Vi会在显示窗口的最后一行(通常也是屏幕的最后一行)显示一个“:”作为末行模式的提示符,等待用户输入命令。多数文件管理命令都是在此模式
1 常用
当编辑文件想取消本次所有编辑而不退出vi,则使用“:e!”即可
如果想不退出vi而查看UNIX系统的有关信息,输入“:shell ”即可进入vi以前的shell环境,
“exit”退回到vi编辑状态。
:set number 设置行号
shift+ZZ 保存后自动退出
ctrl+G 显示当前行
2 光标移动
8z16<回车> :将文件中的第8行作为屏幕显示的首行,并一共显示16行。
15z . :将文件中的第15行作为屏幕显示的中间行,显示行数为整屏。
15z 5_ :将文件中的第15行作为屏幕显示的最末行,显示行数为5行。
shift+L 移动至行首
shift+$ 移动至行尾
3+enter 光标下移3行至行首
3J 光标下移3行
3K 光标上移3行
3L 光标后移3列
GG 移至行首
shift+G 移至行尾
49gg 光标移至49行 但是gg之间须有小停顿
shift+( 该命令将光标向前移至上一个句子的开头;
shift+) 该命令将光标向前移至上一个句子的结尾;
shift+{ 命令 该命令将光标向前移至上一个段的开头;
shift } 命令 该命令将光标向后移至下一个段的开头。
3 文本插入
i 或者 shift+i(移至行首插入)
a(当前) shift+a(行尾)
o(插入下一行)
shift+o(插入当前行)
u (undo) . (redo)
4 文本删除
dd 删除当前行
8dd 删除光标行及以下7行
D或d$:两命令功能一样,都是删除从光标所在处开始到行尾的内容。
d0:删除从光标前一个字符开始到行首的内容。
dw:删除一个单词。若光标处在某个词的中间,则从光标所在位置开始删至词尾。
5 文本修改
c7G 即把光标所在行至第7行(共2行)的内容删除,并进入文本输入模式,接着输入
C 、可以修改从光标当前位置开始到该行末尾
8C 从光标当前位置开始到下面8行末尾范围内的内容
cc 可以修改从光标当前行起始位开始到该行末尾
6 文本替换
s(小写):该命令表示用随后输入的文本替换当前光标所在的字符。
S(大写):该命令表示用新打入的正文替换光标当前行(整行)(不管光标位于何列)。
cw所替换的是一个狭义的字。输入这个命令后,Vi将把光标处的那个字删除,然后用户可输入任何文本内容。
:%s#/usr/bin#/bin#g可以把文件中所有路径/usr/bin换成/bin。也可以使用命令:
7 文本行的合并
J(大写字母)表示,其功能是把光标所在行与下面一行合并为一行
nJ (大写字母)表示,其功能是把光标所在行与下面n行合并为一行
8 文本行的移动
shift+>> 命令将限定正文行(屏幕的首行)向右移动,通常是8个空格
我们可以利用下面的步骤完成文本行从一个地方移至另外一个地方。
将光标移至待移动文本的首行;
按ndd命令。其中n为待移动的行数。此时Vi将把待移动的文本行从文件中删除,并将其放入到1号删除寄存器中;
将光标移动到目的行处;
按 1p将待移动的文本行从删除寄存器中取出。 (np表示从第n个寄存器中取出东西)
:5m3 把第5行内容移至第三行下
:2,5 m 0 表示把文件中的第二行至第五行的内容移至文件头(第零行之下,这个零行使一个虚行)。
9 文本内容进行排序
:.,+3!sort 对第二个字段(3-1)按照顺序排序后输出改变
---------------------------------------------------------------------------
低调的python小子
当梦想照进现实 幸福近在咫尺
[jpg]http://ip.ipwind.cn/msn.png[/jpg]