admin 管理员组

文章数量: 887021

我的vim手册(按使用场景梳理)

四大模式:正常模式、插入模式、命令模式、可视模式。

正常模式

  • 文件打开之后默认就处于正常模式。
  • 正常模式的主要作用就是浏览文件,包括一些复制、粘贴、删除等操作。
  • 正常模式应该成为vim的主要模式,即其他模式做完操作立即返回正常模式。

插入模式

  • 正常模式下按下个别字母键会进入插入模式。

  • 插入模式主要负责编辑。

命令模式

  • 正常模式下按下/进入命令模式
  • 命令模式下可以执行一些输入并执行一些 VIM 或插件提供的指令,就像在shell里一样。这些指令包括设置环境、文件操作、调用某个功能等等。

可视模式

  • 在正常模式按下v, V, <Ctrl>+v,可以进入可视模式。
  • 可视模式中的操作有点像拿鼠标进行操作,选择文本的时候有一种鼠标选择的即视感,有时候会很方便。

打开文件

  1. bash状态下打开单文件:vim file

  2. bash状态下打开多文件:vim file1 file2 file3…

  3. 打开状态下继续打开其他文件:

    • :e file 在当前文件夹打开

    • :Ex在 Vim 中打开目录树,光标选中后回车打开对应文件,相当于普通编辑器的file->open- 进入上级目录)

对于单文件来说,继续接下来相应的操作就好,但对于打开多文件状态来说,此时存在两个问题:

  1. 打开了的多文件默认只显示一个在屏幕上,怎么切换?
  2. 能不能像其他编辑器一样并行(同时展示)多个窗口呢?

实际上vim的多文件机制解决了上面两个问题。

多文件机制

buffer的概念

所有当前被打开了的文件都被载入VIM的buffer当中,因此可以在buffer中切换文件

查看当前buffer::buffers:ls。理论上会得到这样的结果

:ls
  1 #h   "file-one.md"                  line 47
  2 %a   "file-two.md"                  line 1
Press ENTER or type command to continue

接下来的切换操作如下

  • :bn 打开缓存中下一个文件(相当于普通编辑器点击打开标签)
  • :bp 打开缓存中上一个文件
  • :b<N> 打开缓存中第 N 个文件:
  • :bdelete<N> 删除所要关闭的缓冲区,缩写 :bd<N>
分屏

上面解决了打开文件的切换问题,而分屏机制则解决了同时浏览多份文档的问题。

但是为啥非要分屏?因为难免有时候需要对着一个文档编辑另一个文档!

主要有这样几个使用需求:

打开时直接分屏:

  • 左右分:vim -On file1 file2 ... filen
  • 上下分:vim -on file1 file2 ... filen

分割当前打开的文件:

  • 上下分:Ctrl + w s
  • 左右分:Ctrl +w v

打开若干个窗口后继续增加窗口

  • 上下分::sp file
  • 左右分::vsp file

新添加上来的分屏插在哪里呢?其实是基于当前光标处于哪个窗口而定的!

补充点:

  1. 分屏方式无非是左右上下,但为什么用:sp:vs表示?

    :split 缩写 :sp or Ctrl-w s 上下分屏

    :vsplit 缩写 :vs or Ctrl-w v 左右分屏

  2. :diffsplit 缩写 :diffs diff 模式打开一个分屏,后面可以加上 {filename}

    这条命令不单单是分屏,它还有比较两个文档的作用。

多窗口之间切换光标与调整分屏

分好了之后怎样做到下面两点呢:

  1. 光标要能够在几个窗口之间自如切换
  2. 当分屏的位置或大小不恰当时如何调整呢?

切换光标:

将光标定位到左/右/上/下的窗口里:Ctrl + w h/l/k/j

调整分屏:

  • 调整分屏位置

    将当前分屏移动到左/右/上/下:Ctrl + w H/L/K/J

    这里可以将底部的屏幕移动到右侧,实现上下分屏到左右分屏的转换。

  • 调整分屏大小

    Ctrl-w = 平均窗口尺寸

    Ctrl-w +/-/_ 增加/缩减/最大高度(方向符前面可以加数字)

    Ctrl-w >/</| 增加/缩减/最大宽度

分屏机制虽说不错,但是分两三个窗口出来还可以,假如文件超过三个,此时就更适合用标签来进行多文件之间的切换。

标签

窗口是窗口标签是标签,一个窗口可以对应好几个标签。

创建标签页

  • 在新的标签页打开文件::tabe file
  • 在新的标签页打开当前窗口文件:tab split
  • 通配符打开当前目录里一些文件:tabf *.txt

切换标签页

  • 上一页 :tabp gT (实际使用时往往在这里设置快捷键)
  • 下一页 tabn gt
  • 首/末页 :tabfirst:tabr / :tablast :tabl
  • 移动当前标签到第一个位置 :tabm 0(数字可以改)
  • 移动当前标签到最后一个位置 :tabm

关闭标签页

  • 关闭当前 :tabc (用关闭窗口的方法也可以)
  • 保留当前 :tabo
  • 关闭/显示标签页菜单 :set showtabline=0/:set showtabline=1

列出标签页

列出已打开标签页 :tabs (>表示当前标签页)

或者是打开一个新文档进行编辑,或者是打开久文档进行审计,那么当前面文件已经就位之后接下来就应该开始进入插入模式了!

插入模式

本文标签: 手册 vim