Vim 8文本处理实战:教您得心应手在日常任务中使用Vim( 二 )

  • line 30表示当前光标位置 。
  • 现在 , 用下列命令打开另一个文件 。
    :e animals/cat.py然后 , 可以看到之前打开的文件已经被当前文件所取代 。 不过 , animal_farm.py仍然存储在某个缓冲区中 , 读者可以再次用:ls命令将其显示出来 。
    现在 , 可以看到两个文件名都被列出来了 , 如图3所示 。
    Vim 8文本处理实战:教您得心应手在日常任务中使用Vim文章插图
    图3
    那么怎样才能跳转到之前的文件呢?
    Vim通过数字和名称来标识每个缓冲区 , 在同一个Vim会话中 , 它们都是唯一的(除非退出Vim) 。 为了在不同的缓冲区之间切换 , 可使用:b命令 , 其参数为缓冲区的编号数字 。
    :b 1:b 1命令中的空格可以省略 , 得到简化版的命令:b1 。
    通过一条很简单的命令就可以回到原来的文件 。 由于缓冲区还可以用文件名来标识 , 因此读者可以用文件名的一部分来切换缓冲区 。 下列命令将打开animals/cat.py的缓冲区 。
    :b cat不过 , 如果名称匹配了多个缓冲区 , 则Vim会报错 。 比如 , 用下面的命令查找所有文件名包含py的缓冲区 。
    :b pyVim的状态栏中会显示错误 , 如图4所示 。
    Vim 8文本处理实战:教您得心应手在日常任务中使用Vim文章插图
    图4
    为解决这个问题 , 可以使用Tab键补全文件名 , 从而实现在不同缓冲区之间循环切换 。 输入:b py(先不要按Enter键) , 然后按Tab键 , 在所有匹配的结果之间循环遍历 。
    读者也可以使用:bn(:bnext)和:bp(:bprevious)命令循环遍历缓冲区 。
    当不再需要某缓冲区的时候(如不再需要编辑该文件) , 可以将其删除 。 通过如下命令可以将一个缓冲区从打开的缓冲区列表中删除 , 而无须退出Vim 。
    :bd但如果没有保存当前缓冲区 , 则Vim会报错 。 因此 , 在不小心删除缓冲区之前 , 读者还有一次保存文件的机会 。
    3.2 插件——unimpairedTim Pope的vim-unimpaired是一个Vim插件,它为很多内置命令(以及一些新的命令)添加映射 。 本书作者每天都会使用这个插件 , 因为它提供了更为直观的映射 , 比如]b和[b用于循环遍历缓冲区 , ]f和[f用于遍历目录中的文件 。 该插件可以在GitHub仓库tpope/vim-unimpaired中找到(安装方法参见本章2.2节) 。
    下面是vim-unimpaired提供的部分映射 。
    • ]b和[b循环遍历缓冲区 。
    • ]f和[f循环遍历同一目录中的文件 , 并打开为当前缓冲区 。
    • ]l和[l遍历位置列表(参见第5章) 。
    • ]q和[q遍历快速修复列表(参见第5章) 。
    • ]t和[t遍历标签列表(参见第4章) 。
    此插件还支持用少数几次按键来切换某些选项 , 比如yos切换拼写检查 , 或yoc切换光标行高亮显示 。 更多功能参见:help unimpaired中vim-unimpaired所提供的完整映射和功能清单 。
    3.3 窗口Vim将缓冲区加载到窗口中 。 一个屏幕上可以同时显示多个窗口 , 它们将屏幕分割成几块 。
    【Vim 8文本处理实战:教您得心应手在日常任务中使用Vim】1.窗口的创建、删除和跳转
    本节将介绍Vim窗口的使用方式 。 首先 , 打开animal_farm.py文件(在命令行中执行$ vim animal_farm.py或从Vim中执行:e animal_farm.py) 。
    然后 , 使用如下命令将窗口分割成两个 , 其中一个显示新的文件 。
    :split animals/cat.py:split命令可以简化为:sp 。
    可以看到animals/cat.py被打开 , 显示在原文件上方的窗口中 , 而且光标也出现在里面 , 如图5所示 。
    Vim 8文本处理实战:教您得心应手在日常任务中使用Vim文章插图
    图5
    也可以使用下面的命令按水平方向分割窗口 。
    :vsplit farm.py如图6所示 , 当前窗口又水平分隔出一个新的窗口(光标也随之移动到左边的新窗口中) 。
    Vim 8文本处理实战:教您得心应手在日常任务中使用Vim文章插图
    图6
    :vs是:vsplit的简化版 。
    通过组合:split和:vsplit , 可以生成任意多个窗口 。
    目前本书提到的所有命令都适用于窗口 , 包括切换缓冲区 。 为了使光标能在不同窗口间移动 , 先按Ctrl + w组合键 , 然后输入一个方向键:h、j、k、l中的一个或键盘方向键 。
    按Ctrl + h组合键 , 之后再按Ctrl + j组合键(Ctrl键可以不松开 , 记为Ctrl + w,j组合键) , 光标会进入下面的窗口 , 而使用Ctrl + w,k组合键则进入上面的窗口 。
    如果经常使用窗口 , 读者可以按照如下配置绑定快捷键 。 " 使用