本文内容大部分出自对传智播客linux课程内容的总结和课堂笔记。

1. 简介

  • vi <—> vim
  • vim是从vi发展过来的一款文本编辑器
  • 描述
    • 是一个文本编辑程序
    • 没有菜单,只有命令,且命令繁多
  • vi a.txt—-虽然输入的是vi,但是调用的是vim编辑器
    • 如果存在a.txt,则利用vim编辑器打开a.txt文件
    • 如果不存在a.txt,则创建a.txt文件,并利用vim编辑器打开
  • 前提: 安装了vim软件

    2. 工作模式

  • vim编辑器有三种工作模式:

    • 命令模式 — 打开文件之后, 默认处于命令模式
    • 编辑模式 — 在命令模式下,需要输入一些命令(aA iI oO sS), 切换到编辑模式
    • 末行模式 — 在末行模式下可以输入一些命令
  • 工作流程如下图所示:
    • 首先使用vi打开文件后,默认处于命令模式
    • 命令模式输入一些命令(e.g. aA iI sS oO)可以切换到编辑模式,在命令模式输入冒号(:)切换到末行模式
    • 编辑模式按Esc键切换到命令模式
    • 末行模式按两次Esc或成功执行末行命令后切换到命令模式
    • 但是编辑模式与末行模式不可以直接切换;
    • vim编辑器下无法使用鼠标,只能通过一些命令完成相关编辑操作。

image.png

3. vim编辑器的使用

提示:所有大写字母可以采用Shift + 小写字母的方式替换; 所有字符均为英文输入法下。

3.1 命令模式下的操作

3.1.1 光标的移动

  • hjkl控制方向:
    • h : ←
    • j : ↓
    • k : ↑
    • l : →
  • 0(零) : 光标移动到行首
  • $ : 光标移动到行尾
  • gg : 光标移动文件开头
  • G : 光标移动到文件末尾
  • 123G :跳转到第123行

    3.1.2 删除操作(并不是真的删除,实际上是剪切)

  • x : 删除光标后一个字符,相当于Del

  • X : 删除光标前一个字符,相当于Backspace
  • dw : 删除光标开始位置的单词,包含光标所在字符
    • 光标必须移动到删除单词的首字符上,否则只能删除一部分
  • d0(零): 删除本行**光标所有**内容,不包含光标所在字符
  • D (或d$) : 删除本行**光标**后所有内容,包含光标所在字符
  • dd : 删除光标所在行
  • n dd 删除指定的行数,n为指定删除的行数(包括光标所在行)

    3.1.3 撤销操作

  • u : 撤销:

  • Ctrl + r : 反撤销

    3.1.4 复制粘贴

  • yy : 复制当前行

  • n yy : 复制 n 行
  • p(小写) : 在光标所在位置向下新开辟一行,粘贴
  • P(大写) : 从光标所在行, 开始粘贴
    • 当光标处于所在行内容的中间,光标所在行原整行内容会被下移到粘贴内容的下面

image.png image.png

  • 剪切 == 删除

    3.1.5 可视模式 — 可选择复制内容

  • v : 切换到可视模式

    • 先把光标移动到想复制内容的开头,然后按v切换到可视模式
  • 配合 h、j、k、l (控制方向的)使用,使用y复制选中内容,d剪贴(删除)选中内容

    3.1.6 查找操作

  • / + 要查找的内容 — 顺序向下查找指定内容(查找从光标位置向下查找,到底部之后,返回到头部)

  • ? + 要查找的内容 — 逆序向上(从光标位置向上查找,到顶部之后,返回到尾部)

image.png

  • # — 把光标移动到查找的单词身上,按#,即可在文件中查找光标所在位置单词
  • 遍历时候的快捷键

    • N — 向上遍历
    • n — 向下遍历

      3.1.7 r : 替换当前字符(只能替换单个字符)

      3.1.8 缩进

  • >> : 文本行右移

  • << : 文本行左移

    3.1.9 查看man文档

  • 光标移动到函数上,Shift-k,查看对应函数第一章的 ManPage

  • 光标移动到函数上,3Shift-k,查看对应函数第三章的 ManPage

    说明: 光标移到要查找关键字的位置,然后Shift + k,默认从man文档的第一章查找; 还可以先输入章节数字n,然后按Shift+K,从man文档的第n章开始查找。 比如找prinf,从man文档第三章找:把光标移动到printf,然浓厚,输入3+Shift + k

3.2 命令模式下的操作(a|A|i|I|o|O)—>切换到编辑模式

  • a — 在光标所在位置的后边插入,进入编辑模式
  • A — 在当前行的尾部**插入**,进入编辑模式
  • i — 在光标所在位置的前边插入,进入编辑模式
  • I — 在光标所在行的行首**插入**,进入编辑模式
  • o — 在光标所在行的下边开辟一个新的行,进入编辑模式
  • O — 在光标所在行的上**边开辟一个新的行**,进入编辑模式
  • s删除光标后边的字符,进入编辑模式
  • S删除光标所在的行,进入编辑模式

    3.3 末行模式下的操作(:)

    3.3.1 行跳转

  • 输入n + [Enter] —— 跳转到第n行

    3.3.2 字符串替换

  • 替换光标所在行中的内容:

    • s**/要被替换的字符串/替换的字符串 **—— 替换第一处
    • s**/要被替换的字符串/替换的字符串/**g —— 替换所有
  • 替换当前文件所有内容:
    • %s**/要被替换的字符串/替换的字符串** —— 替换所有行第一处
    • %s**/要被替换的字符串/替换的字符串/**g —— 替换所有
  • 替换某几行(m到n行)中的内容:

    • m,n**s/要被替换的字符串/替换的字符串/g**

      3.3.3 执行其他命令

  • ! + 其他命令

  • e.g. !pwd

    3.3.4 保存退出

  • q : 退出

  • q! : 退出不保存
  • w : 保存
  • wqx : 保存退出
  • 在命令模式下保存退出 : ZZ

    3.3.5 分屏操作

  • 水平分屏 sp

    • sp [其他文件名]
      • 不加其他文件名,将当前文件分屏显示
      • 加其他文件名,将另一个文件打开,分屏显示这两个文件
  • 垂直分屏 vsp
    • vsp [其他文件名]
      • 不加其他文件名,将当前文件分屏显示
      • 加其他文件名,将另一个文件打开,分屏显示这两个文件
  • 操作同一个文件时,在一个分屏对文件操作时,另一个也跟着同步变化。
  • 在不同分屏之间切换:Ctrl + ww
  • 对所有分屏同时执行末行命令:末行命令+all e.g. wqall — 全部分屏保存并退出
  • 如果不加all,则对光标所在的屏幕执行相应的末行命令

aaa.gif

3.4 vim 打造 IDE

  • 系统级配置文件目录:/etc/vim/vimrc
  • 用户级配置文件目录:~/.vim/vimrc
  • 修改配置文件 vimrc 或者 .vimrc

vim.png