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

  • :vertical resize +N用于将当前窗口的宽度增加N列 。
  • :vertical resize -N用于将当前窗口的宽度减少N列 。
  • :resize和:vertical resize可分别简写为:res和:vert res 。 另外 , 还有将窗口高度和宽度改变一行/列的快捷键:Ctrl + w,-和Ctrl + w,+用于调整高度 , 而Ctrl+w,>和Ctrl + w,<用于调整宽度 。
    两种命令都可以将宽度/高度设置为具体的行数/列数 。
    • :resize N用于将窗口高度设置为N 。
    • :vertical resize N用于将窗口宽度设置为N 。
    3.4 标签页在很多现代编辑器中 , 标签页(Tabs)用于表示不同的文件 。 在Vim中自然也是如此 , 但读者需要考虑其原始目的 。
    Vim用标签页来组织一个窗口的集合 , 进而支持在不同的窗口集合之间切换 , 这让用户方便地拥有了多个工作区 。 标签页通常用来在同一个Vim会话中区分不同的问题或者文件集合 。 标签页功能不一定是一个频繁使用的功能 , 但如果希望在不同项目或同一项目的不同上下文之间切换 , 那么标签页将是一个不错的选择 。
    用户愿意使用标签页的另一个原因可能与Vim的diff功能有关 , 因为diff作用于一个标签页内 。 更多详情请参考第5章中关于vimdiff的介绍 。
    在一个新标签页中打开一个空缓冲区的命令如下 。
    :tabnew在新标签页中打开一个已有文件的命令为:tabnew <文件名> 。
    如图9所示 , 标签页显示在屏幕的顶部 。 在标记为3 farm.py的标签页中打开了三个窗口及一个活动缓冲区farm.py 。 [No Name]标签页则是刚才打开过的空缓冲区 。
    Vim 8文本处理实战:教您得心应手在日常任务中使用Vim文章插图
    图9
    在一个标签页中 , 可以通过常用的方式(:e <文件名>)来加载文件 , 也可以用:b命令在不同缓冲区之间切换 。
    为了在不同标签页之间跳转 , 可以使用如下命令 。
    • 快捷键gt或:tabnext命令用于切换到下一个标签页 。
    • 快捷键gT或:tabprevious命令用于切换到上一个标签页 。
    标签页可通过:tabclose命令来关闭 , 标签页关闭也会导致其中的窗口关闭(如果只剩一个标签页 , 则需要用:q来关闭) 。
    :tabmove N命令将当前标签页移动到第N个标签页之后(如果N为0 , 则变成第一个标签页) 。
    3.5 折叠Vim为浏览大型文件提供的一个强大工具是折叠 。 折叠功能支持文件部分内容的隐藏 , 隐藏的依据既可以是预定义的规则 , 也可以是手动添加的折叠标记 。
    如图10所示 , animal_farm.py中的部分代码片断被折叠了 , 代码中每个方法的具体内容被隐藏了 , 从而可以在整体上来查看代码 。
    Vim 8文本处理实战:教您得心应手在日常任务中使用Vim文章插图
    图10
    1.折叠Python代码
    因为本书以Python编程为例 , 所以这里只介绍Python示例代码的折叠方式 。 首先 , 需要在.vimrc文件中将foldmethod设置为indent , 设置代码如下 。
    set foldmethod=indent不要忘记重新加载~/.vimrc , 方法是重启Vim或在Vim中执行:source $MYVIMRC命令 。
    设置foldmethod为indent , 使Vim基于缩进来折叠代码 。
    再次打开animal_farm.py , 可以看到该文件中的部分代码已经被隐藏 , 如图11所示 。
    Vim 8文本处理实战:教您得心应手在日常任务中使用Vim文章插图
    图11
    将光标移动到其中一个折叠行上 , 输入zo可以打开当前折叠 , 如图12所示 。
    Vim 8文本处理实战:教您得心应手在日常任务中使用Vim文章插图
    图12
    只要光标在一个潜在的折叠文本中(本例中为缩进的代码块) , 输入zc都会将此折叠关闭 。
    为了方便看清折叠的位置 , 可以使用:set foldcolumn=N命令 , 其中N的取值为0~12 。 这会告诉Vim用从屏幕左边开始的N列来标记折叠 , 其中符号-表示一个打开的折叠 , 符号|表示打开的折叠的内容 , 符号+表示关闭的折叠 。
    输入za可切换折叠状态(打开关闭的折叠或关闭打开的折叠) 。 输入zR和zM分别用于同时打开和关闭所有折叠 。
    将foldmethod设置为自动类型(如indent)会默认将所有文件折叠 。 这只是一种偏好 , 读者也可能会选择在打开新文件时打开折叠 。 在.vimrc文件中添加autocmd BufRead * normal zR会在打开新文件时令折叠处于打开状态 , 即Vim在读取新的缓冲区时执行zR命令(打开所有折叠) 。
    2.折叠的类型
    从某种意义上来说 , Vim在折叠代码方面是比较智能的 , 而且支持多种折叠方式 。 折叠的方法由.vimrc文件中的foldmethod选项来指定 。 Vim支持如下折叠方式 。