Vim学习笔记【Ch02】 | 您所在的位置:网站首页 › vim补全快捷键 › Vim学习笔记【Ch02】 |
Vim学习笔记
系列笔记链接Ch02 Buffers, Windows, TabsBuffers什么是buffer查看所有bufferbuffer之间的切换删除buffer退出所有窗口
Windows窗口的创建窗口切换快捷键其他快捷键
Tabs什么是tabtab相关命令
window和buffer结合的3D移动小结
系列笔记链接
Ch00,Ch01 Ch02 Buffers, Windows, Tabs在.vimrc配置文件中加入set hidden,可以隐藏一些提示信息,比如切换不同的缓存区buffer时,未保存当前缓存区的内容,Vim会提示先保存文件。隐藏提示信息可以使切换操作更流畅。 Buffers 什么是buffer缓存区buffer是一个内置的内存空间,可以在其中写入和编辑文本。Vim中每打开一个新文件,其数据都会关联到一个独立的buffer。 比如通过Vim打开file1.txt,此时Vim关联的就是file1.txt的buffer: vim file1.txt同时打开多个文件时,Vim也会为这些文件创建独立的buffer,默认展示的是第一个文件的buffer: vim file1.txt file2.txt 查看所有buffer在命令行模式下输入:buffers(或:ls、:files),Vim窗口底端会列出当前打开的所有buffer。 :buffers输出结果中,每一行第一列标识了每个buffer的编号(按文件打开的顺序,从1开始计数),第二列表示buffer的状态,%a表示Vim当前所处的buffer,第三列就是每个buffer对应的文件,最后一列是每个buffer中光标所处的位置(行)。 通过:buffer+n的方式可以切换到第n个buffer,比如:buffer2可以切换到file2.txt的buffer。 其他buffer切换命令: :bnext # 转到下一个buffer,或者快捷键Ctrl + I :bprevious # 转到上一个buffer,或者快捷键Ctrl + O :buffer + 文件名 # 转到指定文件的buffer此外,Ctrl + ^可以切换到前一次编辑的buffer中。 删除buffer删除指定的buffer的两种方式(命令行模式下): :delete n # 根据编号删除 :delete filename # 根据文件名删除 退出所有窗口同时打开多个buffer时,可以通过以下指令退出所有buffer(命令行模式下): :qall # 直接退出所有buffer :qall! # 感叹号强制退出所有buffer :wqall # 先保存再退出所有buffer Windows 窗口的创建窗口window是展示缓存区buffer内容的媒介,可以类比于普通编辑器的窗口。Vim中也可以同时打开多个窗口,包括对同一个buffer打开多个窗口,以及不同的buffer用不同的窗口打开。 结合buffer和window两个概念,当我们用Vim打开一个文件时,比如vim file1.txt,打开的是file1.txt的buffer,通过一个窗口查看、编辑这个buffer;在file1.txt的基础上,运行:split file2.txt,会在file1的窗口之上打开一个新的窗口,显示file2的buffer,这样就用不同的窗口打开了不同的buffer。 PS:说实话这个不是很好操作,初学不好记的同时,手指灵活度还差点,只能说熟能生巧,但我现在不熟,并且是差点玩坏键盘的程度… 其他快捷键 Ctrl + W + V # 打开一个新的垂直窗口 Ctrl + W + S # 打开一个新的水平窗口 Ctrl + W + C # 关闭一个窗口(当前) Ctrl + W + O # 除了当前窗口,关闭其他所有窗口实际操作时: Ctrl + W + V无法指定打开的窗口对应哪个buffer,会直接为当前光标所处buffer打开一个新的垂直窗口; Ctrl + W + S有个bug,这样操作之后容易锁定终端的操作,这之后无论按什么都没有反应,我还不知道做错了什么,只能强制杀死该进程; 尝试Ctrl + W + C时同样出现终端“死机”的状态,于是开始想是不是模式切换的问题,这几个快捷键操作的实际效果还有待探索(结合window帮助文档:h window) 还有待探索的window快捷键操作对比起来,在命令行模式下直接输入指令更直观可控,但教程中明确的指令只有split、vsplit和new(:qa退出所有窗口),不如快捷键丰富。 Tabs 什么是tab熟悉Linux环境和终端命令,对Tab应该不陌生,常用Tab键进行文件名、路径补全,Vim中也可以在输入命令时使用Tab补全文件名。但这里说的Tabs,指窗口的集合(a collection of windows),类似浏览器新开一个标签页,称之为tab。在Vim中,通过:tabnew xxx打开一个tab,tab的形式也和浏览器标签页类似,好比不创建新的终端窗口,而是在同一个终端窗口中新开了一个Vim终端。window让我们在同一个Vim终端中打开不同的文件,每个tab之下可以有不同的window布局。 在命令行模式下: :tabnew file.txt # 打开一个新的tab :tabclose #关闭当前tab :tabnext # 打开下一个tab,或使用快捷键gt(注意不是命令行输入) :tabprevious # 打开前一个tab,或使用快捷键gT :tablast # 打开最后一个tab :tabfirst # 打开第一个tabPS:其实只有快捷键gt已经足够在不同的tab之间切换,因为在最后一个tab执行gt之后会到第一个tab,很难想象怎么打出gT的快捷键? 在启动Vim时同时打开多个tab(-p参数): vim -p file1 file2 file3同样可以通过qa直接退出所有tab。 window和buffer结合的3D移动我们可以在一个终端(可以理解为一个tab)中打开多个window,每个window又可以包含多个buffer,窗口之间的切换可以类比于在一个X-Y平面中上下左右移动,而同一个窗口中不同buffer的切换可以类比于在Z轴上移动,因此结合使用window和buffer时,就好像在一个3D空间移动。 小结作者介绍了他对Vim中这几个概念的用法:一般来说,在同一个窗口中打开多个buffer(对应不同的文件),可以方便进行文件切换;打开多个窗口则是为了便于查看/对比等操作,而tab则是为了区分不同的并行任务。 |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |