Vim教程
目录
Vim教程
vim移动大法
hjkl
- 左移光标:h
- 下移光标:j
- 上移光标:k
- 右移光标:l
在单词之间飞舞
w/W移到下一个word/WORD开头。
e/E移动下一个word/WORD结尾。
b/B回到上一个word/WORD开头,可以理解为backward。
word指的是以非空白符分割的单词,WORD以空白符分割的单词。
行间搜索移动
同一行快速移动的方式其实是搜索一个字符并且移动到该字符
-
使用
f{char}
可以移动到char
字符上,t
移动到char
的前一个字符 -
如果第一次没搜到,可以用分号
;
或者,
继续搜索该行下一个或者上一个 -
大写的F表示反过来搜索前面的字符
vim的水平移动
- 如何快速移动到一行的行首或者行尾呢?
0
(数字0)移动到行首第一个字符,^
移动到第一个非空白字符。$
移动到行尾,g_
移动到行尾非空白符- 记住常用的
0
和$
就可以满足日常需求
vim的垂直移动
我们还可以在句子(sentence)和段落(paragraph)间移动(不常用)
- 使用
()
在句子间移动,可以使用:help(
查看帮助 - 使用
{}
在段落之间移动
vim页面移动
翻页命令太多,2/8定律,记住常用的就能满足需求。
gg/G
移动到文件开头或结尾,可以使用ctrl+o
快速返回H/M/L
跳转到屏幕的开头(Head),中间(Middle),结尾(Lower)。Ctrl+u/f
上下翻页,(upword/forward)。zz
把屏幕置为中间。
vim快速增删改查
vim增加字符
增加字符就是进入插入模式,开始敲键盘。
- 进入插入模式编辑文本
- 使用
a/i/o
进入插入模式 - 使用
A/I/O
进入插入模式
vim快速删除
如何删除一个字符或者单词
- vim在normal模式下使用
x
快速删除一个字符 - 使用
d
(delete)配合文本对象快速删除一个单词daw
(d around word) d
和x
都可以搭配数字来执行多次
vim快速修改
相比删除,更常用修改,一般是删除之后成我们期望的文本
- 常用的有3个,
r/c/s
(replace,change,substitute) - normal模式下使用
r
可以替换一个字符。s
替换并进入插入模式 - 使用
c
配合文本对象,可以快速进行修改。 - 使用
C
删除一整行并进入插入模式
vim查询
查询单词也是常用操作
- 使用
/
或者?
进行前向或者反向搜索 - 使用
n/N
跳转到下一个或者上一个匹配 - 使用
*/#
进行当前单词的前向或者后向匹配
vim如何搜索替换
substitute命令允许我们查找并替换掉文本,并且支持正则式
:[range]s[ubstitute]/{pattern}/{string}/[flags]
range
表示范围,比如:10,20
表示10-20行,%
表示全部pattern
是要替换的模式,string
是替换后的文本
替换标志
Flags有几个常用的标志
g
(global)表示全局范围内执行c
(confirm)表示确认,可以确认或者拒绝修改n
(number)报告匹配到的次数而不替换,可以用来查询匹配次数,比如::% s/print//n
查找print在文件中出现多少次
vim多文件操作
概念:
- Buffer是指打开的一个文件的内存缓冲区
- 窗口是Buffer可视化的分割区域
- Tab可以组织窗口为一个工作区
Buffer-什么是缓冲区?
- vim打开一个文件后会加载文件内容到缓冲区
- 之后修改都是针对内存中的缓冲区,并不会直接保存到文件
- 知道我们执行
:w
命令的时候才会把修改内容写入文件
Buffer切换
如何在buffer之间切换呢?
- 使用
:ls
会列举当前缓冲区,然后使用:b n
跳转到第n个缓冲区 :bpre/:bnext/:bfirst/:blast
- 或者使用
:b buffer_name
加上Tab键补全来跳转
Windows窗口
窗口是可视化的分割额区域
- 一个缓冲区可以分割成多个窗口,每个窗口也可以打开不同的缓冲区
<Ctrl+w>s
水平分割,<Ctrl+w>v
垂直分割 。或者使用:sp/:vs
如何切换窗口
切换窗口的命令都是使用Ctrl+w
作为前缀
命令 | 用途 |
---|---|
<C-w>w |
在窗口间循环切换 |
<C-w>h |
切换到左边的窗口 |
<C-w>j |
切换到下边的窗口 |
<C-w>k |
切换到上边的窗口 |
<C-w>l |
切换到右边的窗口 |
未完待续……