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

+ hjkl快速在窗口间跳转 noremap noremap noremap noremap
然后 , 就可以用Ctrl + h组合键跳到左边的窗口 , 用Ctrl + j组合键跳到底部的窗口 , 依此类推 。
读者可以用下列方式来关闭窗口 。

  • 使用Ctrl + w,q组合键关闭当前窗口 。
  • 使用:q命令关闭窗口并卸载缓冲区;不过 , 当只有一个窗口打开的时候 , 这会导致退出Vim 。
  • 使用:bd命令删除当前缓冲区 , 并关闭当前窗口 。
  • 使用Ctrl + w,o组合键(或:only , 或:on命令)关闭除当前窗口之外的所有窗口 。
当打开了多个窗口时 , 可通过:qa命令关闭所有窗口并退出 。 也可以结合:w命令 , 即:wqa , 它会先保存所有打开的文件 , 再退出Vim 。
如果只想关闭缓冲区 , 而保留它所在的窗口 , 则可以在.vimrc文件中加入如下配置 。
" 关闭缓冲区而不关闭窗口command! Bd :bp | :sp | :bn | :bd然后 , 读者就可以使用:Bd来关闭缓冲区 , 而保留分割窗口 。
2.窗口的移动
窗口也可以移动、交换或改变大小 。 因为Vim中没有鼠标拖曳的功能 , 所以只能记住一些命令了 。
读者并不需要记住所有这些命令 , 只要知道Vim支持哪些窗口操作 , 剩下的操作可以通过查看文档 。 使用:help window-moving和:help window- resize打开Vim手册中相应的条目 , 即可找到所有相关的快捷键 。
窗口命令的快捷键都要先按Ctrl + w组合键 , 后面跟一个大写的方向键(H、J、K和L中的一个) , 当前窗口会被移动到相应的位置 。
  • 使用Ctrl + w,H组合键将当前窗口移动到屏幕的最左边 。
  • 使用Ctrl + w,J组合键将当前窗口移动到屏幕的底部 。
  • 使用Ctrl + w,K组合键将当前窗口移动到屏幕的顶部 。
  • 使用Ctrl + w,L组合键将当前窗口移动到屏幕的最右边 。
比如图 7 所示的窗口布局(先打开animal_farm.py , 然后再依次运行:sp animals/cat.py和:vs farm.py , 可得到这个布局) 。
Vim 8文本处理实战:教您得心应手在日常任务中使用Vim文章插图
图7
注意 , 图7中光标位于animals/cat.py文件所在的窗口中 。 通过前面介绍的几个快捷键 , 可以让这个窗口朝不同的方向移动 。
  • 使用Ctrl + w,H组合键将animals/cat.py移动到最左边 , 如图8(a)所示 。
  • 使用Ctrl + w,J组合键将animals/cat.py移动到底部 , 而且左右分割变成了上下分割 , 如图8(b)所示 。
  • 使用Ctrl + w,K组合键将animals/cat.py移动到顶部 , 如图8(c)所示 。
  • 使用Ctrl + w,L组合键将animals/cat.py移动到最右边 , 如图8(d)所示 。

Vim 8文本处理实战:教您得心应手在日常任务中使用Vim文章插图
(a)
Vim 8文本处理实战:教您得心应手在日常任务中使用Vim文章插图
(b)
Vim 8文本处理实战:教您得心应手在日常任务中使用Vim文章插图
(c)
Vim 8文本处理实战:教您得心应手在日常任务中使用Vim文章插图
(d)
图8
若想修改一个窗口的内容 , 则只需要跳转到这个窗口 , 然后用:b命令来选择所需的缓冲区 。 不过 , 也有一些快捷键可以用于交换两个窗口的内容 。
  • 使用Ctrl + w,r组合键将当前行或当前列(行优先于列)中的每个窗口的内容向右或向下移动 。 使用Ctrl + w,R组合键则以相反的方向执行类似的操作 。
  • 使用Ctrl + w,x组合键将当前窗口与下一个窗口的内容交换(如果当前窗口是最后一个 , 则与前一个交换) 。
Vim内部用数字来标识窗口 。 不过 , 与缓冲区不同 , 窗口的编号是随着布局变化而改变的 , 而且并没有直接的方法来修改窗口编号 。 有些窗口管理命令以窗口编号为参数 , 但本书不会涉及这部分内容 。 有一条原则仅供参考 , 窗口编号顺序为由上至下、由左至右递增 。
3.改变窗口的大小
Vim窗口默认的宽高比为50/50 , 这可能并不满足读者的需求 , 因此窗口的大小可以通过一些方法来改变 。
快捷键Ctrl + w,=(按Ctrl+w后再按=键)能够将所有打开窗口的宽和高调整为一致 。 如果不恰当地调整了窗口大小 , 这个命令将非常有用 。
:resize命令会增加或减少当前窗口的高度 , 而:vertical resize将调整窗口的宽度 。 读者还可以使用如下命令 。