一、vim的增删改查
1、vim 增加字符
增加字符就是进入编辑模式
使用a/i/o进入插入模式
2、vim 快速删除
vim在normal模式下只用 x 快速删除一个字符
使用d(delete)配合文本对象快速删除一个单词 daw(d around word)
d和x都可以搭配数字来执行多次 dd删除行 dt( 删除()内的内容
2+dd 删除两行
4+x删除4个字符
3、快速修改
常用的有三个
r(replace)、c(change)、s(substitute)
normal模式下使用r可以替换一个字符。s替换并进入插入模式
使用c配合文本对象,进行快速修改
4、查询
使用/ 或者 ? 进行向前或反向搜索
使用n/N跳转到下一个或者上一个匹配
使用*或者# 进行当前单词的前向和后向匹配
5、搜索替换
substitute 命令允许查找并且替换掉文本,支持正则式
:[range]s[ubstitute]/{pattern}/{string}/[flags]
range 表示范围,比如 :10,20 表示10-20行,%表示全部
pattern 是要替换的模式,string是替换后的文本
flag表示替换标志位,常用的有 g(global) 表示全局范围内执行
c(confirm)表示确认,可以确认或者拒绝
n(number) 报告匹配到的次数而不替换,可以用来查询匹配次数 eg :% s/char// n
二、vim 多文件操作
1、多文件相关的概念
buffer 是指打开的一个文件的内存缓冲区
Window 是buffer可视化的分割区域
tab 可以阻止窗口为一个工作区
1.1 Buffer -- 什么是缓冲区
Vim打开一个文件后会加载文件内容到缓冲区,之后修改的内容都是针对内存中的缓冲区,并不会直接保存到文件,直到执行 :w 的时候,才会把修改内容写入到文件中
如何在buffer之间切换
使用 :ls 列举当前缓冲区,然后使用 :b n跳转到第n个缓冲区
:bpre :bnext :bfirst :blast
或者使用 :b bufer_name 加上tab补全来跳转
在当前打开的文件中 使用 :e a.txt 再打开一个文件,使用 :ls 查看当前打开的文件
Window 窗口
一个缓冲区可以分割成多个窗口,每个窗口也可以打开不同的缓冲区
<ctrl+w>s 水平分割 <ctrl+w>v 垂直分割,或者:sp :vs
<ctrl+w>w 在窗口间循环切换
<ctrl+w>h 切换到左边窗口
<ctrl+w>j 切换到下边窗口
<ctrl+w>k 切换到上边窗口
<ctrl+w> 切换到右边窗口
<ctrl+w>= 使所有窗口等宽等高
<ctrl+w>_ 最大化活动窗口的高度
<ctrl+w>| 最大化活动窗口的宽度
[N]<ctrl+w>_ 把活动窗口的高度设置为N行
[N]<ctrl+w>| 把活动窗口的宽度设置为N列
Tab 将窗口分组
Tab是可以容纳一系列窗口的容器(:h tabpage)
vim 的tab和其他编辑器不太一样,可以想象成linux的虚拟桌面
比如一个tab全用来编辑HTML文件,一个tab全用来编辑txt文件
:tabnew a.txt 打开一个新的标签页
:table[dit]{filename} 在新标签页中打开 {fliename}
<ctrl+w>T 把当前窗口移到一个新的标签页
:tabc 关闭当前标签页及其中的所有窗口
:tabo 只保留当前活动标签页,关闭其他所有标签页
:tabn {N} 切换到编号为N的标签页
:tabn gt 切换到下一标签页
:tabp gT 切换到上一标签页