vi/vim基本操作命令

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

vi的基本概念

基本上 vi 可以分为三种状态,各模式的功能区分如下:

  1. 命令行模式(command mode)
    控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入 插入模式底行模式

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

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

vi的基本操作

只要懂得这三项基本操作使用基本上就掌握 vi 使用了,其它命令只是帮助你更高效的使用 vi。能全部记住自然最好,记不住也没关系,用到的时候查下资料就好,如果经常使用相比不用刻意记也会记住的。

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

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

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

命令行模式功能键

  1. 插入模式
    要进入插入模式有以下三种选择

    • i 进入插入模式后,是从光标当前位置开始输入文件
    • a 进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字
    • o 进入插入模式后,是插入新的一行,从行首开始输入文字。
  2. 从插入模式切换为命令行模式
    ESC 键。

  3. 移动光标
    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行行首。

底行模式下命令简介

在使用底行模式之前,请记住先按 ESC 键确定您已经处于命令行模式下后,再输入 : 即可进入底行模式。

  1. 列出行号
    set nu :在文件中的每一行前面列出行号。
  2. 跳到文件中的某一行
    ## 号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了
  3. 查找字符
    /关键字 :先按 / 键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按 n 向后查找。
    ?关键字:先按 ? 键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按 n 向前查找。
  4. 保存文件
    w :冒号后输入字母 w 就可以将文件保存起来
  5. 退出 vi
    q :退出不保存,如果按 q 无法退出vi,可以在后面加个 ! 强制退出 vi
    wq :保存并退出,记住w在前要先保存才能退出

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 或向后(与 / 联用)或向前(与 ? 联用)继续查找,直到找到为止。


vi/vim基本操作命令
http://example.com/vi-vim/
作者
2HA
发布于
2023年4月1日
许可协议