vi/vim基本操作命令
vi编辑器是所有Unix及Linux系统下标准的编辑器,初学者可以当作类似于windows上的文本文档差不多的东西。本文只是简单地介绍下vi/vim的基本用法和一部分指令,满足普通用户正常使用!vi和vim它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。例如语法高亮,可视化操作不仅可以在终端运行,也可以运行于x window、 mac os、 windows。
最简单的,你只要知道进入vi/vim编辑后,需要按
下表列出行底行模式下的一些指令
一、vi的基本概念
基本上vi可以分为三种状态,各模式的功能区分如下:
- 命令行模式(command mode)
控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode
下,或者到last line mode
。
- 插入模式(Insert mode)
只有在Insert mode下,才可以进行文字输入,该模式下按ESC
键可回到命令行模式。
- 底行模式(last line mode)
将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号……等。 不过一般我们在使用时把vi简化成两个模式,就是将底行模式(last line mode)也算入命令行模式command mode)。
最简单的,你只要知道进入vi/vim编辑后,需要按
i
键进入插入模式,这样就能↑↓←→移动光标进行修改文本操作了,修改完后按ESC
退出插入模式,然后输入:wq
保存退出即可。说白了就好比windows上修改文本文档差不多,只是linux里很多操作需要使用命令罢了,比如你google vi/vim不保存文档退出命令,搜索后你会知道是这个命令是:q
。其它更多的操作命令能记住最好,记不住网上查下也一堆(比如下面列举的一些)。二、vi的基本操作
- 进入vi
比如我要编辑一个名为myfile
的文本文件,只要输入vi myfile
即可进入这个文件的vi编辑界面。刚进入vi是处于命令行模式(command mode),这时是不能编辑文本的,需要切换到插入模式(Insert mode)才能够输入或删除文字。 - 切换至插入模式(Insert mode)编辑文件
在命令行模式(command mode)下按一下字母i
就可以进入插入模式(Insert mode),这时候你就可以进行将光标移到对应位置,然后输入或删除文本了。顺带一体,使用putty这个SSH客户端时,不要用小键盘输入数字,会出错。 - 退出vi和保存文件
在命令行模式(command mode)下,输入:
键进入Last line mode,例如:
:w newname
(将文件重命名为newname保存)
:wq
(保存并退出vi,后面加入!如:wq!
则是强制保存退出)
:q
(不保存退出vi,后面加入!如:q!
则是强制不保存退出)
三、命令行模式(command mode)功能键
- 插入模式
按i
切换进入插入模式「insert mode」,按“i”进入插入模式后是从光标当前位置开始输入文件; 按a
进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字; 按o
进入插入模式后,是插入新的一行,从行首开始输入文字。 - 从插入模式切换为命令行模式
按ESC
键。 - 移动光标
vi可以直接用键盘上的光标来上下左右移动,但正规的vi是用小写英文字母h
、j
、k
、l
,分别控制光标左、下、上、右移一格。
按ctrl+b
:屏幕往“后”移动一页。
按ctrl+f
:屏幕往“前”移动一页。
按ctrl+u
:屏幕往“后”移动半页。
按ctrl+d
:屏幕往“前”移动半页。
按数字0
:移到文章的开头。
按G
:移动到文章的最后。
按$
:移动到光标所在行的“行尾”。
按^
:移动到光标所在行的“行首”
按w
:光标跳到下个字的开头
按e
:光标跳到下个字的字尾
按b
:光标回到上个字的开头
按#l
:光标移到该行的第#个位置,如:5l,56l。 - 删除文字
x
:每按一次,删除光标所在位置的“后面”一个字符。
#x
:例如,「6x」表示删除光标所在位置的“后面”6个字符。
X
:大写的X,每按一次,删除光标所在位置的“前面”一个字符。
#X
:例如,「20X」表示删除光标所在位置的“前面”20个字符。
dd
:删除光标所在行。
#dd
:从光标所在行开始删除#行 - 复制
yw
:将光标所在之处到字尾的字符复制到缓冲区中。
#yw
:复制#个字到缓冲区
yy
:复制光标所在行到缓冲区。
#yy
:例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字。
p
:将缓冲区内的字符贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。 - 替换
r
:替换光标所在处的字符。
R
:替换光标所到之处的字符,直到按下「ESC」键为止。 - 返回上一步操作
u
:比如你在插入模式下误删了文本内容,想返回上一步,需先按「ESC」键进入命令行模式,然后按下「u」键,回到上一个操作。按多次「u」可以执行多次恢复。 - 恢复撤销操作
ctrl+r
:如果按「u」不小心返回过头了,那么可以按下「ctrl+r」恢复上一步撤销操作,同样可执行多次。 - 更改
cw
:更改光标所在处的字到字尾处
c#w
:例如,「c3w」表示更改3个字 - 跳至指定的行
ctrl+g
列出光标所在行的行号。
#G
:例如,「15G」,表示移动光标至文章的第15行行首。
四、Last line mode下命令简介
在使用last line mode之前,请记住先按ESC
键确定您已经处于command mode下后,再按:
即可进入last line mode。
- 列出行号
set nu
:在文件中的每一行前面列出行号。 - 跳到文件中的某一行
#
:#
号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了 - 查找字符
/关键字
:先按/
键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按n
会往后寻找到您要的关键字为止。
?关键字
:先按?
键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往前寻找到您要的关键字为止。 - 保存文件
w
:在冒号输入字母「w」就可以将文件保存起来。 - 退出vi
q
:退出不保存,如果按q
无法退出vi,可以在后面加个!
强制退出vi。
qw
:保存并退出,
五、vi命令列表
下表列出命令模式下的一些键的功能h
左移光标一个字符l
右移光标一个字符k
光标上移一行j
光标下移一行^
光标移动至行首0
数字“0”,光标移至文章的开头G
光标移至文章的最后$
光标移动至行尾Ctrl+f
向前翻屏Ctrl+b
向后翻屏Ctrl+d
向前翻半屏Ctrl+u
向后翻半屏i
在光标位置前插入字符a
在光标所在位置的后一个字符开始增加o
插入新的一行,从行首开始输入ESC
从输入状态退至命令状态x
删除光标后面的字符#x
删除光标后的#个字符X
(大写X),删除光标前面的字符#X
删除光标前面的#个字符dd
删除光标所在的行#dd
删除从光标所在行数的#行yw
复制光标所在位置的一个字#yw
复制光标所在位置的#个字yy
复制光标所在位置的一行#yy
复制从光标所在行数的#行p
粘贴u
取消操作cw
更改光标所在位置的一个字#cw
更改光标所在位置的#个字
下表列出行底行模式下的一些指令
w newname
将正在编辑的文件重命名为newname并保存wq
保存并退出viq
放弃所有修改,退出viset nu
显示行号/
或?
查找,在/后输入要查找的内容n
与/
或?
一起使用,如果查找的内容不是想要找的关键字,按n
或向后(与/
联用)或向前(与?
联用)继续查找,直到找到为止。
最后附上两张快捷键图示
图片太小看不清可以右键在新标签页中打开图片
来查看原图
评论
发表评论
添加评论