Vim

介绍

  • Vim是vi文本编辑器的进阶版,在所有Linux系统上均可使用,被称为“编辑器之神”

  • Vim通过一些插件可以实现和IDE一样的功能

  • Vim可以说是程序开发者的一项很好用的工具

    Vim键盘图:

Vim程序编辑器_vim

这个图其实没什么用,正常情况下都不会去看的

缓存,标签页,窗口

  • Vim会维护一系列打开的文件,称为“缓存”。一个Vim会话包含一系列标签页,每个标签页包含一系列窗口(分隔面板)。每个窗口显示一个缓存。缓存和窗口不是一一对应的关系;窗口只是视角。一个缓存可以在多个窗口打开,甚至在同一个标签页内的多个窗口打开。Vim默认打开一个标签页,这个标签也包含一个窗口。
  • 使用Ctrl-W在多个窗口中切换

编辑模式

  • 正常模式:在文本中四处移动光标进行修改
  • 插入模式:插入文本
  • 替换模式:替换文本
  • 可视化(一般,行,块)模式:选中文本块
  • 命令模式:用于执行命令

正常模式

  • i 切换到插入模式,以输入字符(在光标前输入)
  • x 删除当前光标所在的字符
  • : 切换到命令模式,以在最后一行输入命令
  • ZZ 保存并退出

插入模式

  • 字符按键以及Shift组合,输入字符
  • Enter,回合键,换行
  • Backspace,退格键,删除光标前一个字符
  • Delete,删除键,删除光标后一个字符
  • 方向键,在文本中移动光标
  • Esc,退出插入模式,切换到命令模式

命令模式

  • :q 退出程序
  • :w 保存文件
  • :wq 保存并退出
  • :e {文件名} 打开要编辑的文件
  • :ls 显示打开的缓存
  • :help {标题} 打开帮助文档

键入操作本身是命令

移动(正常模式下,使用移动命令在缓存中导航)

  • 基本移动:hjkl(方向键:上,下,左,右)
  • 词:w(下一个词),b(词首),e(词尾)
  • 行:0(行首),^(第一个非空字符),$(行尾)
  • 屏幕:H(屏幕首行),M(屏幕中间),L(屏幕底部)
  • 翻页:Ctrl-b(上翻一页),Ctrl-f(下翻一页),Ctrl-u(上翻半页),Ctrl-d(下翻半页)
  • 文件:gg(文件头),G(文件尾)
  • 行数:{行数}<CR>{行数}G
  • 杂项:%(找到配对,比如括号或者/**/之类的注释对)
  • n<space>:按下数字后再按空格,光标向右移动这一行的n个字符
  • n<Enter>:光标向下移动n行

选择

  • 可视化:v
  • 可视化行:V
  • 可视化块:Ctrl+v

编辑

  • O/o:在光标的上方/下方打开新的一行并进入插入模式

  • d{移动命令}:删除{移动命令}

    例如,dw 从光标处删除至一个单词的末尾,d$ 删除到行尾,d0 删除到行头,dd 删除光标所在的那一整行

  • c{移动命令}:改变{移动命令}

    例如,cw 改变光标处直到单词末尾

  • x 删除光标所在处的字符

  • r 替换单个字符

  • R 连续替换多个字符(替换模式)

  • 可视化模式+操作

    选中文字,d 删除或者 c 改变

  • u 撤销,<Ctrl-R>重做(撤销以前的撤销命令)

  • y 复制

    yy 复制光标所在的那一整行,y0 复制光标所在的那个字符到该行首的所有数据,y$ 复制光标所在的那个字符到该行尾的所有数据

  • p 粘贴

  • 将光标下的字符改变大小写

搜索和替换

  • /word:光标向下寻找一个名称为word的字符串
  • ?word:光标向上寻找一个名称为word的字符串
  • :set ic:忽略大小写
  • :set hls is:匹配串高亮
  • :nohlsearch:取消匹配串高亮
  • :set noic:禁用忽略大小写
  • n:重复前一个搜寻的动作
  • N:『反向』进行前一个搜寻动作
  • Ctrl-o:回退到之前的位置
  • :s/old/new/g:替换光标所在行的匹配串
  • :%s/old/new/g:替换整个文件中的每个匹配串

命令行补全

  • Ctrl-D:查看可能的补全结果
  • <Tab>:使用一个补全

环境变更(命令模式)

  • :set nu:在每一行的前缀显示行号
  • :set nonu:取消行号

执行外部命令

  • 输入:! 然后紧接着输入一个外部命令可以执行该外部命令
    例如,:!ls

多窗口

  • :sp / :vsp:分割窗口
  • :term bash:在Vim中打开终端

保存文件

  • :w {未被使用的文件名}:将已改动的文件保存到当前目录中
  • 选择性保存:进入可视化模式选中文本后,按 : 字符,将看到屏幕底部会出现 :'<,'> ,接着输入 w {未被使用的文件名},确认看到:'<,'>w {未被使用的文件名}后,按<Enter>,这时 Vim 会把选中的行写入到以 {未被使用的文件名} 命名的文件中去
  • 提取:通过命令 :r {文件名} 将名为 {文件名} 的文件提取进来,所提取进来的文件将从光标所在位置处开始置入
    还可以读取外部命令的输出,例如, :r !ls 可以读取 ls 命令的输出,并把它放置在光标下面