vi/vim基本操作命令

vi编辑器是所有Unix及Linux系统下标准的编辑器,初学者可以当作类似于windows上的文本文档差不多的东西。本文只是简单地介绍下vi/vim的基本用法和一部分指令,满足普通用户正常使用!vi和vim它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。例如语法高亮,可视化操作不仅可以在终端运行,也可以运行于x window、 mac os、 windows。

一、vi的基本概念

基本上vi可以分为三种状态,各模式的功能区分如下:
  1. 命令行模式(command mode)
    控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到last line mode

  2. 插入模式(Insert mode)
    只有在Insert mode下,才可以进行文字输入,该模式下按ESC键可回到命令行模式。

  3. 底行模式(last line mode)
    将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号……等。 不过一般我们在使用时把vi简化成两个模式,就是将底行模式(last line mode)也算入命令行模式command mode)。

最简单的,你只要知道进入vi/vim编辑后,需要按i键进入插入模式,这样就能↑↓←→移动光标进行修改文本操作了,修改完后按ESC退出插入模式,然后输入:wq保存退出即可。说白了就好比windows上修改文本文档差不多,只是linux里很多操作需要使用命令罢了,比如你google vi/vim不保存文档退出命令,搜索后你会知道是这个命令是:q。其它更多的操作命令能记住最好,记不住网上查下也一堆(比如下面列举的一些)。

二、vi的基本操作
  1. 进入vi
    比如我要编辑一个名为myfile的文本文件,只要输入vi myfile即可进入这个文件的vi编辑界面。刚进入vi是处于命令行模式(command mode),这时是不能编辑文本的,需要切换到插入模式(Insert mode)才能够输入或删除文字。

  2. 切换至插入模式(Insert mode)编辑文件
    在命令行模式(command mode)下按一下字母i就可以进入插入模式(Insert mode),这时候你就可以进行将光标移到对应位置,然后输入或删除文本了。顺带一体,使用putty这个SSH客户端时,不要用小键盘输入数字,会出错。

  3. 退出vi和保存文件
    在命令行模式(command mode)下,输入:键进入Last line mode,例如:
    :w newname (将文件重命名为newname保存)
    :wq (保存并退出vi,后面加入!如:wq!则是强制保存退出)
    :q (不保存退出vi,后面加入!如:q!则是强制不保存退出)

三、命令行模式(command mode)功能键

  1. 插入模式
    i切换进入插入模式「insert mode」,按“i”进入插入模式后是从光标当前位置开始输入文件; 按a进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字; 按o进入插入模式后,是插入新的一行,从行首开始输入文字。

  2. 从插入模式切换为命令行模式
    ESC键。

  3. 移动光标
    vi可以直接用键盘上的光标来上下左右移动,但正规的vi是用小写英文字母hjkl,分别控制光标左、下、上、右移一格。
    ctrl+b:屏幕往“后”移动一页。
    ctrl+f:屏幕往“前”移动一页。
    ctrl+u:屏幕往“后”移动半页。
    ctrl+d:屏幕往“前”移动半页。
    按数字0:移到文章的开头。
    G:移动到文章的最后。
    $:移动到光标所在行的“行尾”。
    ^:移动到光标所在行的“行首”
    w:光标跳到下个字的开头
    e:光标跳到下个字的字尾
    b:光标回到上个字的开头
    #l:光标移到该行的第#个位置,如:5l,56l。

  4. 删除文字
    x:每按一次,删除光标所在位置的“后面”一个字符。
    #x:例如,「6x」表示删除光标所在位置的“后面”6个字符。
    X:大写的X,每按一次,删除光标所在位置的“前面”一个字符。
    #X:例如,「20X」表示删除光标所在位置的“前面”20个字符。
    dd:删除光标所在行。
    #dd:从光标所在行开始删除#行

  5. 复制 yw:将光标所在之处到字尾的字符复制到缓冲区中。
    #yw:复制#个字到缓冲区
    yy:复制光标所在行到缓冲区。
    #yy:例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字。
    p:将缓冲区内的字符贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。

  6. 替换
    r:替换光标所在处的字符。
    R:替换光标所到之处的字符,直到按下「ESC」键为止。


  7. 返回上一步操作
    u:比如你在插入模式下误删了文本内容,想返回上一步,需先按「ESC」键进入命令行模式,然后按下「u」键,回到上一个操作。按多次「u」可以执行多次恢复。

  8. 恢复撤销操作
    ctrl+r:如果按「u」不小心返回过头了,那么可以按下「ctrl+r」恢复上一步撤销操作,同样可执行多次。

  9. 更改
    cw:更改光标所在处的字到字尾处
    c#w:例如,「c3w」表示更改3个字

  10. 跳至指定的行
    ctrl+g列出光标所在行的行号。
    #G:例如,「15G」,表示移动光标至文章的第15行行首。

四、Last line mode下命令简介

在使用last line mode之前,请记住先按ESC键确定您已经处于command mode下后,再按:即可进入last line mode。
  1. 列出行号
    set nu:在文件中的每一行前面列出行号。

  2. 跳到文件中的某一行
    ##号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了

  3. 查找字符
    /关键字:先按/键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按n会往后寻找到您要的关键字为止。
    ?关键字:先按?键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往前寻找到您要的关键字为止。

  4. 保存文件
    w:在冒号输入字母「w」就可以将文件保存起来。

  5. 退出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保存并退出vi
q放弃所有修改,退出vi
set nu显示行号
/?查找,在/后输入要查找的内容
n/?一起使用,如果查找的内容不是想要找的关键字,按n或向后(与/联用)或向前(与?联用)继续查找,直到找到为止。

最后附上两张快捷键图示

图片太小看不清可以右键在新标签页中打开图片来查看原图



评论

此博客中的热门博文

CentOS 7 简易搭建 V2Ray 科学上网翻墙工具(官方脚本)

最简单自建BT离线下载+自动上传OneDrive网盘

低价大盘鸡frantech (大硬盘VPS G口带宽不限流量 适合做私有网盘离线下载)