Skip to content

vim 学习笔记

下列命令均在普通模式下进行

文档操作

操作后面跟 ! 为强制执行并抛弃当前未保存操作

:wq: 退出并保存

:q: 退出

:w: 保存

:e: 重新加载当前文档

:f: 或 ctrl + g 显示文档名,是否修改,和光标位置

  • 新建文件 vim [fileName]

光标移动和配置自定义键位

  • 光标移动
h: 左
j: 下
k:上
l:右

w: 移动到下个单词的首字母
b: 移动到上个单词的首字母
e: 移动到词尾

H: 移动到这个屏幕最上方第一个字符
M: 移动到屏幕中间行第一个字符
L: 移动到屏幕最下方第一个字符

nG: n 为数字,移动到当前文档第几行
gg: 移动到文件开头
G: 移动到文件结尾
n%: 移动到文件 n% 的位置

|: 移动到行首
0(数字0): 移动到行首
^(shift + 6): 移动到行首
$(shift + 4): 移动产行尾

-: 前一行首
+: 后一行首

%: 匹配括号

ctrl + f: 屏幕向下移动一页
ctrl + b: 屏幕向上移动一页
ctrl + d: 屏幕向下移动半页
ctrl + u: 屏幕向上移动半页
ctrl + e: 屏幕向下滚动一行
ctrl + y: 屏幕向上滚动一行
  • 自定义键位

如果键位不习惯可以通过更改配置文件来实现自定义键位:

cd 进入家目录,新建一个文件夹 .vim 新建一个文件 vimrc

shell
cd ~
mkdir .vim
cd .vim
vim vimrc

文件内书写自己的 vim 配置文件

shell
# map 映射键位
# inoremap 普通模式下更改键位命令
# nnoremap 命令模式下更改键位命令,
nnoremap a b # 这句命令可以理解为把 a 键更改为 b 键,但是旧键并不会被删除

ps: 只使用 map 可能会产生递归问题

  • 命令组合
js
- nore
	表示非递归。
	递归的映射。其实很好理解,也就是如果键a被映射成了b,c又被映射成了a,如果映射是递归的,那么c就被映射成了b。
- n
	表示在普通模式下生效
- v
	表示在可视模式下生效
- i
	表示在插入模式下生效
- c
	表示在命令行模式下生效

搜索

/: 向后搜索
%: 向前搜索

n: 查找下一处
N: 查找上一处

:nohl: 退出搜索

合并下一行

J: 合并下一行

进入写入模式

i: 光标前插入
I: 首插入

a: 光标后插入
A: 尾插入

o: 在当前行下一行开启一行新行并进入写入模式
O: 当前行上一竺开启一行并进入写入模式

s: 删除后一个字符并进入写入模式
S: 除当前行内容并进入写入模式

c: 修改 删除并进入写入模式
C: 改至行尾并进入写入模式

r: 替换后一个字符
R: 入替换模式

## 复制和粘贴

y: 拷贝
Y: 拷贝一行

p: 在文字后粘贴
P: 在文字前粘贴

撤销和反撤销

u: 撤销上一步操作相当于 ctrl + z

ctrl + r 回退前一个命令,换句话说,它撤销一个撤销

缩进和反缩进

> : 缩进

<: 反缩进

=: 自动格式化 后面跟执行范围

可视模式命令

v: 进入可视模式
V: 进入行可视模式
ctrl + v 进入可视块模式

aw 选中一个单词(包含空格)
iw 选中一个单词

aW 选中一个字串(包含空格)
iW 选中一个字串

as 选中一个句子(包含空格)
is 选中一个句子

ap 选中一个段落(包含空格)
ip 选中一个段落

a( 选中一个()块(包含小括号)
i( 选中一个()块内容

a{ 选中一个{}块(包含大括号)
i{ 选中一个{}内容

a< 选中一个<>块(包含<>)
i< 选中一个<>块内容

a[ 选中一个[]块(包含[])
i[ 选中一个[]块内容

a" 选中一个双引号字符串内容(包含引号)
i" 选中一个双引号客串内容

a' 选中一个单引号字符串内容(包含引号)
i' 选中一个单引号客串内容

a` 选中一个反引号字符串(包含引号)
i` 选中一个反引号字符串内容

u 变成小写
U 变成大写

- 选中行执行命令

在可视模式下选中行,输入 normal 操作指令 系统会帮你执行这些操作

宏录制和使用

q 后面跟一个键位,表示宏要录制到哪个键位上,回车结束设置,然后跟宏要执行的命令,结束操作后 esc 再次点击 q 结束宏录制

@ 后面跟你设置的宏键位,就会执行

@ 前面可以设置执行次数,设置多少执行多少次

分割窗口

:Sex: 水平分割一个窗口,浏览文件系统
:Vex: 垂直分割一个窗口,浏览文件系统

:split: 上下分屏
:vsplit: 左右分屏

Released under the MIT License.