Vim 管理多个文件
来源:互联网 发布:淘宝售假是什么意思 编辑:程序博客网 时间:2024/06/02 02:22
Vim 允许我们同时在多个文件上工作。
缓冲区列表:记录了一次编辑回话中打开的所有文件。
参数列表:是缓冲区列表的强烈补充。:args 命令可以把缓冲区的文件分组,然后就可以遍历这个参数列表。
或者采用 :argdo 命令在参数列表中的每个文件上执行 Ex 命令。
Vim 还会允许把工作区划分成窗口。
Vim 可以利用标签页将分割的窗口组织到一起。
技巧36 用缓冲区列表管理打开的文件
------------------------------------------------------------------------------------------------------------------------------------------------
在一次编辑回话中可以打开多个文件,使用Vim的缓冲区列表可以对这些缓冲区文件进行管理。
我们编辑的只是文件在内存中的映像,也就是vim中的“缓冲区”。
1. 文件是存储在磁盘上的,而缓冲区是存在于内存中的。当Vim打开一个文件的时候,该文件的内容会被读入一个具有相同名字的缓冲区中。
2. 刚开始,缓冲区中的内容和文件中的内容完全相同。但是当我们读缓冲区进行编辑的时候,差别就会体现了。
3. 如果我们保存这些修改,就可以把缓冲区的内容写回到文件中。
4. Vim中的绝大部分命令都在操作缓冲区,当然也有一些命令操作磁盘上的文件: :write, :update :saveas 命令。
:ls 命令 可以列出来所有的缓冲区。 ("缓冲区列表")
:bnext 前往下一个缓冲区
:bprev 前往前一个缓冲区
:bfirst 跳转到列表的开头
:blast 跳转到列表的结尾
%符号指示 哪个缓冲区在当前窗口中可见, #符号表示轮换文件。按下 <C-^> 可以在当前文件盒轮换文件之中快速切换。
:ls 列表的开头有一个数字,它是在缓冲区创建的时候由Vim自动分配的编号。
我们可以用 :buffer n 命令直接凭编号跳转到一个缓冲区。
或者用更加直观的 :buffer {bufname}格式实现同样的功能。 {buffername}只需包含文件路径中唯一标识此缓冲区的字符即可。并且可以使用<Tab>补全。
:bufdo 命令允许我们在 :ls 列出的所有缓冲区上执行 Ex命令。
删除缓冲区:
:bdelete N1 N2 N3 删除几个缓冲区,N1是缓冲区的编号。
:N,M bdelete 删除编号范围内的缓冲区。
删除一个缓冲区并不会影响缓冲区所关联的文件,而只是简单地把该文件在缓冲区中删除。
Vim内置的缓冲区管理功能缺乏灵活性。如果我们想要对缓冲区进行组织,时期满足工作过程的需要,使用缓冲区列表并不是最佳的选择。
相反最好是把工作区域分成多个分割窗口,标签页,或是使用参数列表。
技巧37 使用参数列表将缓冲区分组
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
参数列表易于管理,适用于对一批文件进行分组,使其更加容易访问。
用 :argdo 命令可以在参数列表中的每一个文件上执行一条 Ex 命令。
:args 打印参数列表的内容
输出如下: [a.txt] b.txt c.txt d.txt e.txt
:args {arglist} 可以向参数列表中增加新的文件(其实也就是增加缓冲区)
{arglist} 可以包括文件名,通配符,甚至是一条shell 命令的输出结果。
举例:
:args index.html app.js 增加缓冲区,如果此时文件中含有index.html 和 app.js这样子的文件,那么会读取到对应的缓冲区中。
当切换缓冲区的时候,如果此时缓冲区已经修改,但是没有保存,就不可以切换缓冲区。如果强制切换的话, 对缓冲区的修改会丢失。
也可以用 Glob 模式指定 {arglist}的文件
-------------------------------------------------------------------------------------------------------------------------
* 匹配0个或者多个字符, 但是它的范围仅仅是局限于指定的目录,而不会递归其子目录。
** 可以匹配0个或者多个字符,但是它可以递归进入指定的子目录。
举例:
Glob 模式 所匹配的文件
:args *.* index.html
app.js
:args **/*.js app.js
lib/framework.js
app/controller/Mailer.js
....etc
:args **/*.* 可以匹配所有的文件(递归进入所有的子目录)
这就体现出了差别,采用edit 编辑文件的时候,一次只能编辑一个文件, 不能编辑多个文件。但是 args 命令可以编辑多个文件。
就像我们可以在{arglist} 中使用多个文件名一样
我们也可以指定多个Glob模式
:args **/*.js **/*.css 我们想构造一个指包含.js和.css文件,但是不包含其它类型的文件的参数了列表。
用反引号结构指定文件
---------------------------------------------------------------------------------------------------------------------------------
:args 'cat chapter'
会将shell 命令cat chapter的执行结果作为 args的输入。
使用参数列表。
参数列表比缓冲区列表更加容易管理,这使得其成为对缓冲区进行分组的理想方式。
通过使用 :args {arglist} 命令,一下子就可以清空并且重新设置参数列表,接着就可以使用 :next ;prev 命令遍历参数列表中的文件。
或者是使用 :argdo 命令在参数列表的每个缓冲区上都是执行同样的一条命令。
技巧38 管理隐藏的缓冲区
--------------------------------------------------------------------------------------------------------------------------------------------------------------
当对一个缓冲区进行修改之后,如果要切换缓冲区,Vim会阻止。
如果采用 :bnext! 的方式强制切换缓冲区,那么这个未修改的缓冲区就会成为一个隐藏(hidden)的缓冲区。
退出的时候处理隐藏缓冲区
但是,当我们想要关闭编辑会话的时候,Vim就会提醒我们某个缓冲区中有未保存的修改: (现在也终于理解了 会话是什么概念 )
:quit
会输出: No write since last change (add ! to override)
Vim会把一个有改动的缓冲区载入当前的窗口,这样我们就可以决定如何处理它。
如果想要保留修改,可以执行 :write 命令把缓冲区保存到文件中。
:edit! 重新从磁盘读取文件,这样会用文件的内容覆盖缓冲区的内容。当缓冲区的内容和磁盘的文件一致之后,我们就可以再次执行 :quit 命令了。
:w[rite] 把缓冲区的内容写入磁盘
:e[dit] 把磁盘文件的内容读入缓冲区 (即回滚所做的修改)。
:wa[ll]! 把所有修改之后的缓冲区都写入磁盘
:qa[ll]! 关闭所有的窗口,摒弃修改而无需警告。
在运行 argdo 和 bufdo"命令之前,启动 "hidden"设置。
如果 :argdo {cmd} 的命令执行方式为:
: first
:{cmd}
:next /*如果对上一个缓冲区修改之后,就无法跳转到下一个缓冲区,但是启用 hidden 设置之后就可以了,Vim 会将其设置为隐藏的缓冲区*/
:{cmd}
etc.
启用了 "hidden"设置,可以让我们修改一组缓冲区。
:argdo write 保存所有的缓冲区
:wall 也是保存所有的缓冲区
技巧39 将工作区切分窗口
----------------------------------------------------------------------------------------------------------------------------
窗口是缓冲区的显示区域。
我们可以打开多个窗口,显示同一个缓冲区, 也可以每个窗口显示不同的缓冲区。
创建分割窗口
<C-w>s 水平切分窗口
<C-w>v 垂直切分窗口
这样分割之后的窗口显示同一个缓冲区。
我们可以使用 :edit 命令把另一个缓冲区载入活动窗口中。
<C-w>s 水平切分缓冲区,新窗口显示当前缓冲区
<C-w>v 垂直切分窗口,新窗口显示当前缓冲区
:sp[lit] {flile} 水平切分窗口,新窗口载入 {file}
:vsp[lit] {file} 垂直切分窗口,新窗口载入 {file}
在窗口之间进行切换
------------------------------
<C-w>w 在窗口之间循环切换
<C-w>h 切换到左边的窗口
<C-w>j 下边的
<C-w>k 上边的
<C-w>l 右边的
<C-w>w 和命令 <C-w><C-w>是一样的, 但是后者更加好按一些。可以一直按住Ctrl 然后按下 ww键。
关闭窗口
-------------------------------------------------
Ex 命令 普通模式命令用途
:clo[se] <C-w>c关闭当前活动窗口
:on[ly] <C-w>o只是保留活动窗口,关闭其他所有窗口。
改变窗口大小 以及重新排列窗口
-------------------------------------------------
可以用鼠标改变
技巧40 用标签页将窗口分组
------------------------------------------------
:edit 命令打开一个文件的时候,Vim 不会自动创建一个新的标签页,而是会创建一个新的缓冲区,并且将该缓冲区显示到当前的窗口。
:lcd {path} 命令可以让我们设置当前窗口的本地工作目录。不是标签页的工作目录,是当前窗口的工作目录
:windo lcd {pat}可以让我们这是这个标签页所有的窗口的本地工作目录。
打开以及关闭标签页
-----------------------------
tabedit {file} 命令可以打开一个新的标签页,如果省去了{filename}参数,那么Vim会创建一个新的标签页,这个标签页会包含一个新的缓冲区。
如果当前标签页包含了不止一个窗口,我们可以用 <C-w>T 命令把当前窗口移动到一个新的标签页中。
:tabclose 可以关闭当前标签页
:tabonly 保留当前标签页,关闭其他标签页。
在标签页之间相互切换
----------------------------------
Ex 命令 普通模式命令用途
:tabn[ext] {N} {N}gt 跳转到编号为n的标签页
:tabn[ext] gt跳转到下一个标签页
:tabp[revious] gT 跳转到上一个标签页
重新排列标签页
----------------------------------
:tabmove [N] 命令重拍标签页。
如果 [N]是0,当前标签页会被移动到开头。
如果省去了 N, 当前标签页会被移动到结尾.
- Vim 管理多个文件
- 第六章 Vim之管理多个文件
- vim 编辑多个文件
- vim 查找多个文件
- vim打开多个文件
- Vim 编辑多个文件
- vim编辑多个文件
- VIM打开多个文件
- VIM编辑多个文件
- Vim打开多个文件
- vim打开多个文件
- vim 打开多个文件
- vim 打开多个文件
- vim 打开多个文件
- vim 打开多个文件
- vim编辑多个文件
- [Vim]vim学习笔记--多个文件打开,切换,关闭
- vim 中使用多个文件
- unity3d如何实现角色从台阶下面可以跳上去,上面却没法落下来
- Q9.8 Combine Sum
- c语言中的 结构体 枚举 以及typedef的使用(小结)
- 内存管理
- STL之deque容器用法详解
- Vim 管理多个文件
- Codeforces Round #233 (Div. 2)A(构造)
- Android中ListView实现展示列表数据
- Android中Adapter中edittext,checkbox记住状态解决方案(一)
- ①Tomcat7源码解析: MyEclipse导入Tomcat源代码
- 算法第一讲
- CSS3+Html5学习笔记之CSS3多类选择器
- 【go语言从零单排2】基本知识,变量常量和控制结构
- levmar使用