读书笔记《Vim实用技巧》:管理多个文件
原创- 2023-12-21 14:55:59
- 872
一、技巧37 用缓冲区列表管理打开的文件
1.了解缓冲区和文件的区别
1.1 文件存储在磁盘上,缓冲区存在内存中
1.2 打开文件时候,文件内容会被读入一个具有相同名字的缓冲区
1.3 缓存区因为修改变动时,这会与文件内容不一致
1.4 决定保存缓存区内容后,修改内容会保存到文件中
缓冲区:buffer
2.结识缓冲区列表
2.1 Vim可以同时在多个缓冲区工作
vim *.php
:ls //列出所有缓冲区
:bnext //切换到列表的下一个缓冲区,#标识轮换文件,%指明哪一个缓冲区当前窗口中可见。
:ls
Ctrl+^ 可在所有的缓冲区中快速切换
3.使用缓冲区
4条命令遍历缓冲区列表
:bprev //反向移动缓冲区,每次移动1项
:bnext //正向移动缓冲区,每次移动1项
:bfirst //跳到缓冲区列表的开头
:blast //跳到缓冲区列表的结尾
4.删除缓冲区
:bdelete //删除缓冲区
:bdelete 1 2 3 //删除编号1,2,3的缓冲区
:2,5 bdelete //删除编号2,3,4,5缓冲区
二、技巧38 用参数列表将缓冲区分组
vim *.php
:ls //列出所有缓冲区
:args //分组显示 []标识当前活动的文件
1.填充参数列表
:args {arglist} //{arglist}包括文件名、通配符,甚至是一条shell命令的输出结果
2.用文件名指定文件
:args config.php test0203.php
:args
工作量比较大,使用通配符比较快
3.用glob模式指定文件
:args *.*
:args **/*.js
:args **/*.*
:args **/*.js **/*.css
4.用反引号结构指定文件
:args `cat .php`
用cat命令获取 .php的文件
5.使用参数列表
缓冲区列表就像整洁的独立工作区
:argdo //在列表中每个缓冲区执行同一条命令
:next //正向遍历参数列表的文件
:prev //反向遍历参数列表的文件
三、技巧39 管理隐藏缓冲区
缓冲区文件前有个+,标识这个缓冲区被修改过
不保存先切换缓冲区
:bnext
会有一条报错提示说当前缓冲区未保存修改
:bnext!
强制切换缓存区,原来的被标记为隐藏缓存区(hidden)
1.在退出时处理隐藏缓冲区
:quit //退出缓冲区
:write //缓冲区保存到文件 :w
:edit! //放弃修改,缓冲区不保存到文件 :e!
:qall! //不想检查缓冲区直接退出 :qa
:wall //保存所有的缓存区到文件,且不需要检查 :wa
2.运行 :*do 命令前,启用 hidden 设置
默认情况下,不会从一个改动过的缓冲区切换到其他缓存区
:next!
:bnext!
:cnext!
都会弹出错误信息,提示已修改但未保存
四、技巧40 将工作区切分成窗口
1.创建切分窗口
Ctrl+w+s
Ctrl+w+v
:sp 2 test.php //水平切分当前窗口,并在新窗口中打开test.php文件
:vsp 2 test.php //垂直切分当前窗口,并在新窗口中打开test.php文件
2.在窗口间切换
Ctrl+ww //在窗口间循环切换
Ctrl+wh //切换到左边的窗口
Ctrl+wj //切换到下边的窗口
Ctrl+wk //切换到上边的窗口
Ctrl+wl //切换到右边的窗口
3.关闭窗口
:close //关闭活动窗口 :clo
:only //关闭除活动窗口外的所有窗口 :on
4.改变窗口大小及重新排列窗口
Ctrl+w= //所有窗口等宽、等高
Ctrl+w_ //最大化活动窗口的高度
Ctrl+w| //最大化活动窗口的宽度
N+Ctrl+w_ //把活动窗口的高度设为N行
N+Ctrl+w| //把活动窗口的宽度设为N行
五、技巧41 用标签页将窗口分组
1.如何使用标签页
:cld {path} //设置当前窗口的本地工作目录
:windo lcd {path} //设置所有窗口的本地工作目录
2.打开及关闭标签页
:close //关闭此窗口以及包含此窗口的标签页
:tabclose //关闭当前标签页,无论其中有多少个窗口 :tabc
:tabonly //关闭当前标签页外的所有其他标签页 :tabo
:tabedit {filename} //在新标签页打开文件 :tabe
Ctrl+w+T //把当前窗口移到一个新标签页
3.在标签页中切换
123gt //跳到标签页123
123gT //跳转方向与上一条相反
:tabnext 2,同123gt //切换到编号为2的标签页
:tabnext,同gt //切换到下一个标签页
:tabprevious,同gT //切换到上一个标签页
4.重排标签页
:tabmove N
当N为0时,当前标签页会被移到开头
当N为空时,当前标签页会被移到结尾
当N为123时,当前标签页会被移到123标签页