Vim 使用入门

什么是VIm

  • vim 是跨平台的一看轻量级编辑器
  • vim 可以是其他编辑器中的一款插件

vim 能做什么

  • 命令行 编辑文件内容
  • 在编辑器中编辑文件内容

vim 模式

  • 插入模式(正常模式,可以正常输入)
  • 编辑模式(可以使用vim快捷键的模式)
  • 命令模式(也叫末行模式,可以使用一些vim命令, 在移植的编辑器插件中, 有的可能用不了)
  • 视图模式(也叫选择模式, 可以移动选中)

模式切换

  • 插入模式 切换到 编辑模式ESC
  • 命令模式 切换到 编辑模式ESC
  • 视图模式 切换到 编辑模式ESC
  • 编辑模式 切换到 命令模式: (使用英文状态下的冒号)
  • 编辑模式 切换到 视图模式v
  • 编辑模式 切换到 插入模式
    • 光标当前位置前 并切换到插入模式: i
    • 光标当前位置后 并切换到插入模式: a
    • 删除光标当前位置 并切换到插入模式: s
    • 光标当前行的下一行 切换到插入模式: o
    • 光标当前行的上一行 切换到插入模式:O
    • 光标的当前行的行首 切换到插入模式:I
    • 光标的当前行的行尾 切换到插入模式:A
    • 删除当前行内容 并 切换到插入模式:cc

注意区别大小写的问题

编辑模式下的常用命令

移动光标

光标 向左移动 一个位置 :h
光标 向下移动 一行:j
光标 向上移动 一行:k
光标 向右移动 一个位置:l
光标 向右移动 一个 英文单词 的距离: weE
光标 向左移动 一个 英文单词 的距离:bgegE
跳转到 文件的第一行gg
跳转到 文件的最后一行G
跳转到指定行: ngg 或者 nG

光标移动到行首(不切换模式):^ 或者数字 0
光标移动到行尾(不切换模式):$

把光标移动到 光标所在行 的下一个 字符(任意字符) 位置: fa 移动到同一行下一个a字符的位置
把光标移动到 光标所在行 的上一个 字符(任意字符) 位置: Fa 移动到同一行上一个a字符的位置
重复执行 f 命令:; 使用英文状态下的分号

n:代表任意一个数字 number
移动一个单词的距离, 各种方式之间有细微的差别,但是...差别不大

移动视图

将光标所在行 移动到 屏幕的中间zz
将光标所在行 移动到 屏幕顶端zt
将光标所在行 移动到 屏幕底端zb

把光标移到屏幕最顶端一行:H
把光标移到屏幕中间一行: M
把光标移到屏幕最底端一行:L

windows或者其他编辑器插件可能计算的不准确HML 会移动光标

编辑内容

复制 光标所在行:yy
复制 光标所在行一下 n行nyy
从 光标当前位置 复制 到 行首位置: y^
从 光标当前位置 复制 到 行首位置: y$
从 光标当前位置 复制 到 文件第一行: ygg
从 光标当前位置 复制 到 文件最后一行: yG

剪切 光标所在行:dd
剪切 光标所在行一下 n行ndd
从光标当前位置 剪切 到 行首位置: d^
从光标当前位置 剪切 到 行首位置: d$
从 光标当前位置 剪切 到 文件第一行: dgg
从 光标当前位置 剪切 到 文件最后一行: dG

删除 光标当前位置后的 一个字符x
删除 光标当前位置后的 多个字符nx
删除 光标当前位置后的 一个字符(会进入插入模式): s
删除 光标当前位置后的 多个字符(会进入插入模式): ns
删除 当前行的内容(会进入插入模式): cc 或者 S
删除 当前行后的n行的内容(会进入插入模式): ncc 或者 nS
删除 当前光标所在位置的后一个字符(会进入插入模式):cl
删除 当前光标所在位置的后n个字符(会进入插入模式):cnl
删除 当前光标所在位置的后一个单词(会进入插入模式):cw
删除 当前光标所在位置的后n个单词(会进入插入模式):cnwncw
从光标当前位置 删除 到 行首位置(会进入插入模式): c^
从光标当前位置 删除 到 行首位置(会进入插入模式): c$

cnw dnw ynw 这些带操作次数的命令,都可以数字开头形式操作ncw ndw nyw

删除与剪切不同, 删除的内容不能用 p 来粘贴

粘贴 在光标所在位置粘贴 一次p
粘贴 在光标所在位置粘贴 n次np

整行复制、剪切会带有换行符, 所以粘贴的内容会在光标当前位置的下一行

替换 当前光标所在位置的 一个字符r 输入替换的 字符
替换 当前光标所在位置的 一个字符r 输入替换的 字符
先按 r 然后在输入替换的字符

撤销 上一次操作(等于:ctrl + z):u
撤销 多次操作:nu
恢复 上一次操作(等于:ctrl + y): ctrl + r

如果是在windows中,或者是编辑器的插件,使用ctrl键的可能会与其他快捷键冲突

合并 当前行和下一行的内容:J
合并 当前行和下n行的内容:nJ

合并的如果是空行会删除空行

排版

向左缩进>>
向右缩进<<

末行模式的常用操作

查找内容

查找内容: 在编辑模式下输入/
上一个查找到的内容:N
下一个查找到的内容:n
忽略大小写:/testc

替换内容

替换内容:在编辑模式下输入: 英文状态下的冒号
替换语法:[替换范围]s/查找内容/替换内容/[额外参数]

:3,5s/findContent/replaceContent/ig

这篇文章有详细说明

多文件编辑(切换标签)

上一个标签::prev
下一个标签::next 可以缩写为 n1
最近编辑过的文件: gt

保存 && 退出编辑器

保存并退出: :wq:x
强制保存并退出: :wq!:x!
不保存退出::q
不保存强制退出::q!
这篇文章有详细说明

最后

  • 看似很多命令,但是都有规律
  • 记住一些常用的就可以了,可以渐进式学习使用
  • vim是把双刃剑,锋利无比但是需要时间掌控
原文地址:https://www.cnblogs.com/liaohui5/p/10581561.html