Tag:个人文章,以前发布在:Linux下的Vi编辑器的简单用法

本文系以前我学习vi的笔记的一点整理,曾发布于百度空间和分子模拟论坛,现重新整理发布出来,如有转载,请注明出处,谢谢。

──by realasking

vi编辑器的模式

三种模式

命令模式,编辑模式,行编辑模式

模式切换

进入vi即进入了命令模式,切换到行编辑模式按冒号,
进入编辑模式按i键,从后两种模式退出到命令模式按Esc键

vi的启动,保存,放弃保存,放弃保存并退出

启动

vi filename即可打开一个文件进行编辑,如果filename不存在则新建filename

转到另一个文件

假设为filename2,进入行编辑模式,执行:ex filename2

保存

需要进入行编辑模式,在任意模式下按Esc,然后输入:w即可保存

退出

进入行编辑模式,然后按q键,即任意模式下按Esc,然后输入:q

保存并退出

:wq

放弃保存并退出

:q!,其中!表示强制执行

放弃修改

:U,放弃所有的修改

光标控制:

大多需要在命令模式下执行。

光标的上下左右移动

现代的vi可以使用方向键完成,同时保留了传统的设计,即k表示光标上移,j表示光标下移,h左移,l右移
不过在编辑模式下方向键仍然可以用来移动光标

光标按一定的分隔方式移动

(1)到文首: gg , 到文末:G

(2)到屏幕头:H , 到屏幕中间:M ,到屏幕末尾:L

(3)向前翻页(forward):Ctrl+f , 向后翻页(back):Ctrl+b

(4)前翻半页:Ctrl+d , 后翻半页: Ctrl+u

(5)光标移动到上一段开头:{,光标移动到下一段开头:}

(6)光标移动到上一句开头:(,光标移动到下一句开头:)

(7)光标到行首:0, 光标到行首第一个字符:^,光标到行末:$,全文:%

(8)光标到下一个单词开头:w,光标到前一个单词开头:b

编辑操作:

均需要进入行编辑模式

块操作定义

在插入块开始处按Ctrl+v,再把光标移到结束处就可以选定块,
需要注意的是块操作不是以行为单位进行选择的。

标记操作

可以设置a~z个标记,标记操作的做法是mx,其中xa~z中的一个,
标记的引用是:

`x

xa~z中的一个

操作结果放入寄存器

"寄存器名 操作,可以使用的寄存器名为英文字母和数字,如"ayy,即复制本行内容到寄存器a

行标的打开和关闭

打开:set number 关闭:set nonumber

加密

即:X

插入

(1)从光标处插入:i,然后进入编辑模式

(2)从光标后插入:a,然后进入编辑模式

删除

删除:d,默认是删除一行。

删除当前字符:x,命令模式下删除当前光标所在位置字符

查找

(1)查找文件中的字符串:/字符串

(2)继续查找:/

(3)继续查找(向后back):N

替换

s,默认是替换当前字符,一般和查找联合使用,
格式是:

范围,次数s/查找内容/新内容/

移动:m

进入改写模式:R

撤销修改

u,撤销前一次的修改

复制,剪切和粘贴:

复制:y

粘贴

(1)光标前粘贴:p

(2)光标后粘贴:P

(3)粘贴到某行之后:t

命令的复合使用:

按:进入行编辑状态,然后按 次数,操作 的形式进行组合。
比如删除从光标起往前数5个单词,就是:5dw,往下面删除9行(含当前行)就是:9dj
把光标所在处的字母替换成2个i,就是:2ri,复制5行就是:5yj,把第10行复制到第1行
之后:10t1,把文件第1行到第9行的a替换成b:1,9s/a/b/
另:调用系统命令:!命令 即可