1. vi命令
命令格式:vi 文件名
vi命令有三个模式,分别如下:
- 一般模式:用于打开并查看文件的内容,进入方式:vi 文件名
- 编辑模式:在一般模式下,按i键,进入编辑模式
- 命令模式:在一般模式下,按":"进入命令模式。
在命令模式下常用的命令:
- wq — 保存并退出
- q! ---- 不保存退出
- wq 新文件名 ---- 另存为
set nu
或set number
----显示内容行号
注: 如果文件名中有空格,则需要用引号将文件名引起来,如果文件名中有引号,则需要使用转义字符或者其他引号,以防止引号混乱。目录不可以使用命令进行编辑,并且目录不能和文件同名。
2. vim命令
vim可以认为是vi plus,不过有些linux的发行版只有vi,没有vim,下面所有的方法都适合vi操作。
2.1 命令格式
vim 文件路径+文件名
:在指定路径下新建文件并打开,如果已经有了该文件,则只更新相应的时间并打开。
2.2 模式分类
vim和vim命令类似,有以下几种模式:
- 命令模式:刚打开文件就是命令模式,如果不确定现在所处模式,不断按
esc
即可进入到命令模式 - 编辑模式(插入模式):在命令模式下,输入
A
、a
、O
、o
、I
或i
都可以进入编辑模式 - 末行模式:在命令模式下,按
:
或/
进入 - 可视化模式:命令模式下按
v
、V
或ctrl+v
能进入到可视化模式,进入可视化模式后可以快速选中要操作的内容。
2.3 命令模式下的常用操作
hjkl
或键盘中上下左右四个方向键
:这四个按键分别表示向左、上、下、右四个方向移动光标,其中方向键移动在vi编辑器中不适用,只在vim中可以使用。gg
:按两下g
键,切换到光标至所在行行首shift+g
等效于G
:切换到最后一行n+G
:切换到第n行x
:删除光标所在位置的字符,如果连续按x,就会不断的向右删除字符X
:删除光标所在位置左侧的字符,如果连续按X,就会不断的向左删除字符u
:撤回操作,如果一直按住u,则可以恢复到刚进入到该文件的样子,之所以可以这样,是因为打开时会创建一个.文件名.swap
的隐藏临时文件,所有的操作都在该临时文件上面操作,只有在退出时才会将临时文件写入正式文件中,临时文件销毁。dd
:在命令模式下,可以直接删除光标所在行,ndd其中n为数字,如5dd就是删除包含光标所在行的下面5行yy
:复制光标所在行,前面加数字功能类似于上面的ddp
:如果在命令模式的上一次操作中包含dd或yy这种命令,那么dd和yy所删除或者复制的那些行会被增加到光标所在行的上面P
:同上,将上一次dd/yy命令删除/复制的内容粘贴到光标所在行的上一行。
2.4 编辑模式下的常用操作
在命令模式下,总共有六种不同的方法进入编辑模式,具体如下:
i
:从光标左侧插入文本I
:从光标所在行的行首开始插入文本a
:从光标所在位置右侧开始插入文本A
:从光标所在行的行尾开始插入文本o
:在光标所在行下面另起一行插入文本O
:在光标所在行上面另起一行插入文本
2.5 末行模式下的常用操作
末行模式下常用的操作有以下的几种:
- 查看指定的字符串,以
/
开头,比如/gzy
表示文件内容中查找gzy(用高亮颜色显示,如果找不到,会报错) - 文本内容的替换,格式如下:
:n1,n2s/oldcontext/newcontext/global
:这个命令会将第n1行到第n2行(包含n1和n2行)中的oldcontext替换为newcontext
:1,$s/oldcontext/newcontext/g
:全文替换,其中$表示最后一行 - 保存文本内容:输入
:w
或:w!
可以保存文本内容,其中第二个表示强制保存。但是只要没有退出,使用u
键就可以撤回操作 - 可以使用
:q
或:q!
来退出vim编辑器(如果修改的内容是不能正常退出编辑器的,如果使用:q!
强制退出会导致编辑的内容丢失) - 由于Linux是一个多用户操作系统,所以有可能出现多个用户同时编辑一个文件的情况,故此需要学会查看vim的异常状态
:set number
或set nu
:显示行号set nonumber
:不显示行号
2.6 vim异常处理
以test.txt文件为例,在vim编辑文件时,会创建一个”.test.txt.swp“的隐藏文件(这也是vim使用u能够撤回此次打开文件以后所有操作的原因),如果已经有一个用户在使用vim编辑某个文件,这时第二个shell用户也想使用vim编辑此文件时就会报这种异常,解决这种异常的方法有以下几种:
- 退出第一个用户的vim
- 查看当前系统下是否有vim进程,如果有,则kill掉
如果出现异常,在打开文件时会提示以下信息(比如在新建.swap文件时发现已经有一个文件了):
D
:可以直接删除掉之前编辑的内容R
:可以直接恢复之前编辑的状态,恢复完之后立马保存写入(建议先用此命令)O
:以只读的方式打开E
:无论如何都要进行编辑
vimtutor
:可以查看vim的帮助文档