vi 与 vim 的指令整理

vi 是 unix 家族下最功能强大的文字编辑器,让用户只要使用一个键盘就可以完成所有的编辑。而 vim 则是 vi 的加强版,甚至在 Windows 上也找得到 vim 的芳踪。但 vi/vim 众多的指令却经常令初学者却步,它的指令还有分大小写,以下就是我所整理出来那些令人却步的指令:

(每一列前面若有 * 表示为常用的指令)

编辑模式

指令 说明
* i 在光标位置进入编辑模式
I 在光标行的第一个非空白字符进入编辑模式
* a 在光标位置后进入编辑模式
* A 在光标行的最后一个字符进入编辑模式
* o 向下新增一行,并进入编辑模式
O 向上新增一行,并进入编辑模式
cc 删除光标行,并进入编辑模式
* [ESC] 取消指令或退出编辑模式

光标移动

指令 说明
* gg 移到第一行
* G 移到最后一行
* 行数 → G 移动到第 n 行
0 移动到该行最前面
$ 移动到该行最后面
字数 → [Space] 向右移动 n 个字符
* 行数 → [Enter] 向下移动 n 行

标记与复制

指令 说明
* v 开始字串标记
* V 开始行标记
* v → [Ctrl]-V 开始区块标记
* d 删除标记的内容
* y 复制标记的内容
* yy 复制光标行
yG 复制光标行到最后一行
y1G 复制光标行到第一行
y$ 复制光标处到最后一个字符
y0 复制光标处到第一个字符
* p 在下一行贴上复制或删除的内容
P 在上一行贴上复制或删除的内容
* [Ctrl]-R → 0 在下一行贴上复制或删除的内容,适用于编辑模式及指令行

搜寻与取代

指令 说明
* /搜寻字串 向下搜寻字串
/\c搜寻字串 向下搜寻字串,不分大小写
* * 将光标移到字串上,直接按 "*" 也可以做向下搜寻
?搜寻字串 向上搜寻字串
?\c搜寻字串 向上搜寻字串,不分大小写
* :set ic 搜寻时不分大小写
* :set noic 搜寻时要分大小写
* n 继续下一个搜寻结果
* N 继续上一个搜寻结果
* :起始行,终止行s/搜寻字串/取代字串/gic 从第 n 行到第 n 行取代字串 (后面的 g: 整行全部 i: 不分大小写 c: 询问)
* :1,$s/搜寻字串/取代字串/gic 全部取代字串 (后面的 g: 整行全部 i: 不分大小写 c: 询问)

删除

指令 说明
* dd 删除光标行
* 行数 → dd 删除 n 行
* dG 删除光标行到最后一行
d1G 删除光标行到第一行
* d$ 删除光标处到最后一个字符
d0 删除光标处到第一个字符

档案功能

指令 说明
* :w 存盘 (加 ! 表示强制存盘)
* :w 档案名称 另存新档
* :q 退出 vi (加 ! 表示不存盘强制退出)
* :wq 存盘并退出 vi
* :x 存盘并退出 vi
:w !sudo tee % 当你编辑好档案要存盘时,却发现没有写入档案的权限! 用这会指令可以让你直接以 root 的权限存盘
* :e 档案名称 编辑其它档案
* :e! 还原至档案编修前的状态
:r 档案名称 读入档案内容,并加到光标行的后面
* :n 切换到下一个开启的档案
* :N 切换到上一个开启的档案
* :set nu 显示行号
* :set nonu 取消行号显示
* :files 列出所有开启的档案
* :Ex 开启档案浏览器
* :Ex 路径 于指定路径开启档案浏览器
:Hex 分割水平视窗后,再开启档案浏览器
:Vex 分割垂直视窗后,再开启档案浏览器
:Tex 新增页签后,再开启档案浏览器
:Hex 路径 分割水平视窗后,再于指定路径开启档案浏览器
:Vex 路径 分割垂直视窗后,再于指定路径开启档案浏览器
:Tex 路径 新增页签后,再于指定路径开启档案浏览器

视窗分割

指令 说明
* :new 新增水平分割视窗
* :new 档案名称 新增水平分割视窗,并在新增的视窗加载档案
* :vnew 新增垂直分割视窗
* :vnew 档案名称 新增垂直分割视窗,并在新增的视窗加载档案
:sp 新增水平分割视窗,并在新增的视窗加载目前的档案
:sp 档案名称 新增水平分割视窗,并在新增的视窗加载档案
:vsp 新增垂直分割视窗,并在新增的视窗加载目前的档案
:vsp 档案名称 新增垂直分割视窗,并在新增的视窗加载档案
* [Ctrl]-W → [方向键] 切换视窗
* :only 仅保留目前的视窗

页签

指令 说明
* :tabe 新增页签
* :tabe 档案名称 新增页签,并在新页签加载档案
:tabc 关闭目前的页签,等同 :q
:tabo 关闭所有页签
:tabn 移至下一个页签
:tabp 移至上一个页签
* gt 移至下一个页签
* gT 移至上一个页签
* :tabfirst 移至第一个页签
* :tablast 移至最后一个页签
* :tabm 页签编号 移至特定编号的页签 (编号从 0 开始)
:tabs 列出所有页签

其它指令

指令 说明
* J 将光标行与下一行合并
* u 还原指令
* [Ctrl]-R 重做指令
* [Ctrl]-N 自动补齐曾输入过的单字
* . 重复上一个指令
! 命令 执行 linux 指令,并显示执行结果
TOhtml 将目前编辑的档案转换成 HTML 原始码 (会新增一个水平分割视窗)

档案浏览器操作

请先以 :Ex 相关指令进入档案浏览器

指令 说明
* - 到上层目录
* d 建立目录
* D 删除目录
* R 重新命名
* s 切换排序方式
r 切换升幂/降幂排序
i 切换档案的排列方式
* / 搜寻字串
x 执行档案
* o 新增水平视窗
* v 新增垂直视窗

vim 的设定档

通常我会编辑 /etc/vimrc,在档案最后加入:

" 显示列号
set number
" 语法高亮度显示
syntax on
" 标记搜寻到的字串
set hlsearch
" 自动缩排
set autoindent
" 显示说明
set ruler
" 显示编辑状态
set showmode
" 设定注解的颜色
highlight Comment ctermfg=cyan
" 设定搜寻到的字串颜色
highlight Search term=reverse ctermbg=4 ctermfg=7
" 设定 tab 键的字符数
set tabstop=4
    • 少年耶~!
    • 11/23. 2009 2:01下午
    Using Mozilla Firefox Mozilla Firefox 3.5.5 on Ubuntu Linux Ubuntu Linux

    果然是常用的~~!
    感温~!

    • Hades
    • 07/01. 2010 6:00下午
    Using Mozilla Firefox Mozilla Firefox 3.6.6 on Windows Windows 7

    你好~
    我转载您的文章至我的blog上可吗?

  1. Using Mozilla Firefox Mozilla Firefox 3.5.10 on Windows Windows Vista

    to Hades:

    好的,欢迎转载。

    • WENG
    • 07/12. 2015 4:58下午
    Using Google Chrome Google Chrome 43.0.2357.132 on Windows Windows 7

    你好:请问可以转贴至FB分享给其他对LINUX VIM指令不熟悉的人参考?

    • Using Mozilla Firefox Mozilla Firefox 38.0 on Windows Windows NT

      欢迎分享

    • yi
    • 09/05. 2015 5:34下午
    Using Google Chrome Google Chrome 45.0.2454.85 on Windows Windows 7

    请问如果我用vi需要同时收寻2个以上的字串,该如何下指令?或者我收寻完第1个字串,在收寻下个字串时,上一个收寻的字串还是保持在highlight的状态

    谢谢

      • 辜俊肇
      • 09/04. 2018 12:59下午
      Using Mozilla Firefox Mozilla Firefox 61.0 on Ubuntu Linux Ubuntu Linux

      使用 grouping 同时搜寻几个,如/\(字串A\|字串B\)

  2. Using Google Chrome Google Chrome 59.0.3071.115 on Windows Windows NT

    非常详细的介绍~~谢谢!!

    • Mir
    • 01/29. 2019 10:50上午
    Using Google Chrome Google Chrome 71.0.3578.98 on Ubuntu Linux Ubuntu Linux

    请问每行前面的*代表什么意思呢?

    • Using Mozilla Firefox Mozilla Firefox 64.0 on Windows Windows NT

      就只是我认为比较常用的指令而已

  1. 10/05. 2010
  2. 10/04. 2016
    Trackback from : Vim – Vickyliin
  3. 01/20. 2017
  4. 12/24. 2017
  5. 08/01. 2018

return top

%d 位部落客按了赞: