vim体验

vim 食用方式

最后我还是没有用 vim 太多常用按键冲突

大部分来自小甲鱼的超入门 vim

移动光标

  • h 左
  • l 右
  • k 上
  • j 下

普通模式 和 插入模式

VIM 具有 6 种基本模式和 5 种派生模式。

  • 基本模式:

  • 普通模式、插入模式、可视模式、选择模式、命令行模式和 Ex 模式

  • 派生模式:

  • 操作符等待模式、插入普通模式、插入可视模式、插入选择模式和替换模式

进入插入模式的各种方法

按键 含义
i 在光标的前边进入插入模式
I 在光标所在行的行首进入插入模式
a 在光标的后边进入插入模式
A 在光标所在行的行尾进入插入模式
o 在光标所在行的下方插入空行并进入插入模式
O 在光标所在行的上方插入空行并进入插入模式
s 删除光标指定的字符并进入插入模式
S 将光标所在行清除并进入插入模式

退出 vim 的方法

  • ZZ(两个大写字母Z,也就是Shift+z+z)
  • :wq(这是一个组合命令,如果是 :w 表示保存,而 :q 表示退出)

motion 操作范围指令

按键 含义
0 将光标定位到行首的位置
^ 同上
$ 将光标定位到行尾的位置
b 将光标定位到光标所在单词的起始处
e 将光标定位到光标所在单词的结尾处
w 将光标定位到下一个单词的起始处(注意,是光标所在单词的下一个单词噢_
gg 将光标定位到文件的开头
G 将光标定位到文件的末尾

删除

  • x 在普通模式下,删除单一字符可以用 x 命令。跟在插入模式按下 Delete 键一样,x 命令是删除光标指定的字符。
  • d 的删除命令的格式是 d motion

删除的组合按键

按键 含义
dd 删除光标所在行的所有字符
d0 删除光标从当前位置(不包含)到该行行首的所有字符
d^ 同上
d$ 删除从光标当前位置(包含)到该行行尾的所有字符
db 删除从光标当前位置(不包含)到单词起始处的所有字符
de 删除从光标当前位置(包含)到单词结尾处的所有字符
dw 删除从光标当前位置(包含)到下个单词起始处的所有字符
dh 删除光标前面一个字符
dl 删除光标指定的字符
dj 删除光标所在行以及下一行的所有字符
dk 删除光标所在行以及上一行的所有字符
dgg 删除光标所在行(包含)到文件开头的所有字符
dG 删除光标所在行(包含)到文件末尾的所有字符

数字的奥义

  • 普通模式下按一下 h 按键是将光标向左移动一格,而在其前面输入数字 3,即 3h 则是将光标向前移动 3 格,依此类推 3j 则是将光标向下移动三行,3w 则是将光标跳到三个单词后的开始位置……

  • 同样的,d3h 表示删除光标前的 3 个字符,d3j 表示删除光标所在行以及下面 3 行的所有字符,而 d3w 则表示向后删除当前光标到后面第三个单词前的所有字符。


撤销和恢复命令

  • u 表示撤销最后一次修改
  • U 表示撤销对整行的修改
  • Ctrl + r 快捷键可以恢复撤销的内容

特大备注

这上面所有的“删除”操作并不是真的删除,它们事实上是存放在 VIM 的一个缓冲区(VIM 把它称之为寄存器)中,相当于 Windows 的剪切功能!!!


粘贴命令

  • p 命令可以将最后一次删除的内容粘贴到光标之后。
  • P 则是粘贴到光标之前

拷贝命令

  • y 命令实现拷贝。语法跟删除的 d 命令一样:y motion

其中的 motion 同样是用来表示操作范围的指令,即 yy 表示拷贝当前行,3yy 则表示拷贝 3 行;y$ 表示从光标所在的位置拷贝到行尾的所有字符;yG 则表示从光标所在行拷贝到文件末尾行的所有字符。


替换命令

  • 替换命令:r 命令。

r 用于替换光标所在的字符,做法是先将光标移动到需要替换的字符处,按一下 r 键,然后输入新的字符。注意,全程无需进入插入模式,也不会进入插入模式。

  • 数字 + r 可能会产生一些物理反应。先输入【数字】再输入 r,最后输入新字符,说明从当前光标的位置开始,替换【数字】个新字符。
AAA // 在第一个 A 处,按下 3r 键,再按下 H 键
HHH // 修改后的结果

替换模式

对于需要替换多个字符,更好的方案是直接进入替换模式。按下大写的 R 键,屏幕左下角出现 -- REPLACE -- 字样,说明你已经处于替换模式。此时输入字符可以连续替换光标及其后边的内容。注意:退格键(Backspace)在替换模式中被解释为如果左边内容被替换过,则恢复到原来的样子;如果没有被替换过,则简单的向左移动。修改完毕后,按下 Esc 回到普通模式。

修改命令

  • c [number] motion
按键 含义
c0 删除光标从当前位置(不包含)到该行行首的所有字符,并进入插入模式
c^ 同上
c$ 删除从光标当前位置(包含)到该行行尾的所有字符,并进入插入模式
cb 删除从光标当前位置(不包含)到单词起始处的所有字符,并进入插入模式
ce 删除从光标当前位置(包含)到单词结尾处的所有字符,并进入插入模式
cw 删除从光标当前位置(包含)到下个单词起始处的所有字符,并进入插入模式
ch 删除光标前边一个字符,并进入插入模式
cl 删除光标指定的字符,并进入插入模式
cj 删除光标所在行以及下一行的所有字符,并在光标下一行进入插入模式
ck 删除光标所在行以及上一行的所有字符,并在光标下一行进入插入模式
cc 删除光标所在行的字符,并进入插入模式

文件信息

  • 快捷键 ctrl + g 显示/隐藏 当前的文件信息,比如文件名,文件状态,文件的总行数,以及光标所在的相对位置。

跳转

将光标跳转到指定的位置:

  • 行号 + G
  • :行号

定位括号

找到你的另一半

  • % 键。将光标移动到 () [] {}中的任何一半括号上,按下 % 键,便可看到此时光标已经跳转到另外一半的括号上了。

缩进

  • >> 表示缩进
  • << 表示反缩进

但是这样一次只能缩进一行,一行行来也挺麻烦,因此你想到了数字的奥义:先输入数字 2 在输入 >> 表示将光标所在行以及下一行共两行同时插入一个缩进。

不过行数一多……到底要缩进多少行就成了一个问题……

这时,你可以按一下 v 进入可视模式(左下角出现 -- VISUAL -- 字样),然后通过 h、j、k、l 或 其他 motion 来移动你的光标,此时光标所到之处必被一道亮光所包围(表示被选中),选择好需要缩进的目标后,只需按一下 > 即可完成任务。


搜索命令

可以使用正则

  • /

在普通模式下按下斜杠(/)也是进入命令行模式,此时该字符和光标均出现在屏幕的底部,这跟冒号(:)一样。

  • ? 反向搜索

替换命令

  • :s/old/new,这样即可将光标所在行的第一个 old 替换为 new
  • 你如果输入的是 :s/old/new/g,则表示将光标所在行的所有 old 替换为 new。
  • :%s/old/new/g 表示替换整个文件中每个匹配的字符串。
  • :5,13s/old/new/g 5 表示开始替换的行号,13 表示结束替换的行号
  • :%s/old/new/gc 每次替换前都咨询一下
    • y 表示替换
    • n 表示不替换
    • a 表示替换所有
    • q 表示放弃替换
    • l 表示替换第一个并进入插入模式
    • ^E 表示用 Ctrl+e 来滚动屏幕
    • ^Y 表示用 Ctrl+y 来滚动屏幕

取消高亮

  • nolh

shell 命令

  • !,在其后便可以加上 shell 命令

!ls / (vsCode 不可用)

文件另存为

  • :w test2

局部内容另存为

  • 在可视模式 键入 : 屏幕左下方出现 :'<,'>
  • 现在请输入 w test2 即可保存到test2中

合并文件

  • : 进入命令行模式,然后输入 r 文件名

即可将指定文件的内容读取并置入到光标的下一行中

打开多个文件

  • –o 垂直排列 或 –O 水平排列 选项打开多个文件,例如 vim -o lesson4 lesson5 lesson6

你可能感兴趣的:(vim体验)