Vim 8文本处理实战:教您得心应手在日常任务中使用Vim
通过阅读本章 , 读者将能更加得心应手地在日常任务中使用Vim 。 本章使用一个Python工程作为示例 , 模拟了一系列日常编码的场景 。 当然 , 读者完全可以拿自己手头的项目练手;只不过 , 本章中的使用场景不一定都适用于读者自己的代码 。
本章包括如下主题 。
- 介绍一种粗暴但快捷的Vim插件安装方式 。
- 介绍如何使用缓冲区、窗口、标签页和折叠来处理多个文件或长文件 , 从而使工作区更为整洁 。
- 介绍插件Netrw、NERDTree、Vinegar和CtrlP , 通过这些插件 , 读者可以在不退出Vim的情况下浏览复杂的文件树 。
- 介绍文件中的高级文本浏览方式、极其高效的光标移动插件EasyMotion以及多种文本对象 , 介绍通过grep和ack实现跨文件的搜索 。
- 介绍如何利用寄存器来复制和粘贴 。
2 安装插件本章会介绍几个Vim插件 , 但暂时不会涉及较为复杂的插件管理 , 相关的内容参见第3章 。
首先 , 读者必须要做好准备工作 。
1.创建一个存储插件的目录 , 执行下列命令 。
$ mkdir -p ~/.vim/pack/plugins/start
如果在Windows系统中使用gVim , 则需要在用户目录(通常是C:\Users\ <用户名>)下创建vimfiles目录 , 然后在其中创建子目录pack\ plugins\ start 。2.使Vim能够自动加载每个插件的文档(Vim默认不会这么做) 。 在~/.vimrc文件(在Windows系统中为用户目录下的_vimrc文件)中添加下列代码 。
packloadall" 加载所有插件silent! helptags ALL" 为所有插件加载帮助文档
然后 , 每次安装插件都可按照下列步骤进行 。1.在 GitHub 上找到想要安装的插件 。 比如 , 读者想安装scrooloose/ nerdtree(注意 , 这里的scrooloose/nerdtree为该GitHub仓库的唯一标识 , 实际地址为) 。 假设读者已经安装了Git , 则可以找到此Git仓库的克隆地址 , 然后运行如下命令 。
$ git clone~/.vim/pack/plugins/start/nerdtree
如果读者没有安装Git , 或者在Windows系统中使用gVim , 则可以在GitHub页面上找到克隆或下载(Clone or download)按钮 , 下载ZIP压缩包 , 然后将其解压到相应的插件目录中 , 比如在Linux系统中为目录~/.vim/pack/ plugins/start/nerdtree , 而在Windows系统中为用户目录下的子目录vimfiles/pack/plugins/start/nerdtree 。2.重启Vim之后 , 即可使用插件进行相关操作 。
3 组织工作区到目前为止 , 本书还只是用Vim处理单个文件 。 但是在编写程序时 , 经常需要同时处理多个文件 , 涉及来回切换、跨文件编辑或到其他界面查询资料等操作 。 幸运的是 , Vim提供了一个能够处理多个文件的插件 。
- Vim内部用缓冲区来表示文件;通过缓冲区 , 读者可以在不同文件之间快速切换 。
- Vim用多个窗口在同一屏幕中显示多个文件 。
- Vim用标签页对窗口进行分组 。
- Vim用折叠效果来隐藏或展开一个文件的部分内容 , 从而让读者可以更容易地浏览文件的内容 。
文章插图
图1
- 多个窗口用于同时打开多个文件(farm.py、animal/cat.py和animal_farm.py) 。
- 顶部显示有两个标签页(3 farm.py和a/dog.py) 。
- 以+--开头的行表示折叠 , 它隐藏了文件的部分内容 。
3.1 缓冲区缓冲区是文件的内部表示 , 每个打开的文件都有一个缓冲区 。 比如 , 通过命令行vim animal_farm.py打开一个文件 , 然后可以用:ls命令看到现有的缓冲区列表 。
很多命令都有别名或等价命令 , :ls也不例外 , 它和:buffers及:files实现的是同样的功能 , 读者可以从中选择一个最容易记的命令 。
图2所示为ls命令的执行结果(最下面的那3行) 。
文章插图
图2
图2.2中的状态栏显示了已经打开的缓冲区(这里只有一个)的相关信息 , 这些信息的含义如下 。
- 1为缓冲区编号 , 在整个Vim会话中 , 它的值保持不变 。
- % 表示该缓冲区位于当前窗口中 。
- a 表示该缓冲区处于活动状态 , 即它已被加载并可见 。
- "animal_farm.py"为文件名 。
- 缩小|调整电脑屏幕文本文字显示大小,系统设置放大缩小DPI图文教程
- 新一代|外媒: 高通新一代旗舰处理器或命名为骁龙888
- 将要发布|高通下一代处理器不叫骁龙875,而是叫骁龙888
- 天玑|天玑800U处理器加持的RedmiNote9
- 淘汰|过气旗舰不如狗?骁龙845处理器要被淘汰了
- 热点功能|旧手机别乱处理,分享旧手机6个小妙用,放在家里好值钱
- 款处理器|小米最便宜的大屏智能机,性价比超高,送长辈的不二之选
- 改名|小米首发?曝高通新一代旗舰处理器临时改名,或为骁龙888
- 骁龙875处理|进一步确定!小米11Pro采用2K+/120Hz屏,网友:价格贵也接受
- 创园|中国V谷的云存储之道,马栏山文创园将视频处理效率提升6倍