4. VIM 系列 - 认识VIM的缓冲区、窗口、标签页
1. 缓冲区
文件和缓冲区的区别
vim 打开一个文件时,其实是从磁盘中读取文件到内存中,vim的一些操作其实是在操作缓冲区,
当使用vim的保存命令时,vim才将缓冲区写回给文件。
操作缓冲区
命令 | 用途 |
---|---|
:bprev | 跳转到前一个buffer |
:bnext | 跳转到后一个buffer |
:bfirst | 跳转到第一个buffer |
:blast | 跳转到最后一个buffer |
:w | 将当前buffer写入文件 |
:e | 重新将文件内容加载到缓冲区(回滚buffer修改) |
:qa! | 关闭所有buffer,且不保存 |
:wa! | 保存所有buffer |
2. 窗口
在Vim 术语中,窗口是缓冲区的显示区域。既可以打开多个窗口,在这些窗口中显示同一个缓冲区,
也可以在每个窗口里载入不同的缓冲区。Vim 的窗口管理系统很灵活,可以根据工作的需要来调整
工作区。
操作窗口
命令 | 用途 |
---|---|
水平切分当前窗口,新窗口仍显示当前缓冲区 | |
水平切分当前窗口,新窗口仍显示当前缓冲区 | |
sp | 水平切分当前窗口,新窗口仍显示当前缓冲区 |
vsp | 水平切分当前窗口,新窗口仍显示当前缓冲区 |
在窗口间循环切换 | |
切换到左边的窗口 | |
切换到下边的窗口 | |
切换到上边的窗口 | |
切换到右边的窗口 | |
关闭活动窗口 | |
只保留活动窗口,关闭其他所有窗口 |
3. 标签页
Vim 的标签页接口和其他许多文本编辑器不同,在Vim中,可以用标签页把窗口组织到一系列工作区中。
典型文本编辑器的图形界面(GUI)有一个用于编辑文件的主工作区,还有一个显示当前工程目录树的侧边栏。
如果点击侧边栏中的文件,它会在主工作区为所选中的文件打开一个新标签页。每个打开的文件都会创建一个新
标签页。在此模型中,可以说标签页代表了当前打开的文件。
Vim 的标签页与缓冲区并非一一对应的关系,相反,应该把标签页想成容纳一系列窗口的容器。每个标签页都可
包含一个或多个窗口。
操作标签页
命令 | 用途 |
---|---|
:tabe[dit] | 在新标签页中打开 |
:tabc[lose] | 关闭当前标签页及其中的所有窗口 |
:tabo[nly] | 只保留活动标签页,关闭所有其他标签页 |
:tabn[ext] | 切换到编号为 {N} 的标签页 |
:tabn[ext] | 切换到下一标签页 |
:tabp[revious] | 切换到上一标签页 |
4. 设置一下热键
在~/.vimrc
配置一些热键
" 窗口快捷方式
map <s-h> <c-w>h
map <s-l> <c-w>l
map <s-j> <c-w>j
map <s-k> <c-w>k
map <s-w> <c-w>w
map <s-c> <c-w>c
map <s-o> <c-w>o
" buffer 快捷方式
nnoremap <Leader>bn :bn<CR>
nnoremap <Leader>bb :bp<CR>
nnoremap <Leader>bf :bfirst<CR>
nnoremap <Leader>bl :blast<CR>
nnoremap <Leader>bc :bwipe<CR>
" 标签页快捷方式
nnoremap <Leader>tp :tabp<CR>
nnoremap <Leader>tn :tabn<CR>
nnoremap <Leader>tc :tabc<CR>
nnoremap <Leader>to :tabo<CR>
nnoremap <Leader>tN :tabn
nnoremap <Leader>te :tabe