原文:https://blog.easwy.com/archives/advanced-vim-skills-netrw-bufexplorer-winmanager-plugin/

本节所用命令的帮助入口:

:help netrw-browse
:help bufexplorer
:help winmanager

[文件浏览]

在开发过程中,经常需要查找某个文件。我们前面在介绍path选项时,介绍过使用find命令查找文件的方法。本节介绍vim的文件浏览插件。

在vim 7.0以前,文件浏览功能由explorer.vim插件提供,在vim 7.0中,这个插件被netrw.vim插件所代替。本文以vim 7.0为例,主要介绍netrw.vim插件。

netrw.vim是vim的标准插件,它已经伴随vim而发行,不需要安装。

我们现在试一下vim文件功能,当你使用vim尝试打开目录时,vim会自动调用netrw.vim插件打开该目录(从操作系统的视角来看,目录其实是一种特殊的文件)。例如,我们在vim中执行命令":e ~/src/vim70/src/",会显示下面的窗口:

这个窗口类似于文件管理器,你可以创建、删除、改名文件或目录;在目录上按回车时,会进入该目录;在文件上按回车时,会使用vim打开该文件;可以更改排序方式、排序风格;隐藏目录或文件(使之不在上述窗口中显示)等等。

Netrw插件中常用键绑定有:

<F1>        显示帮助
<cr> 如果光标下为目录,则进入该目录;如果光标下是文件,则用vim打开该文件
- 返回上级目录
c 切换vim的当前工作目录为正在浏览的目录
d 创建目录
D 删除文件或目录
i 切换显示方式
R 改名文件或目录
s 选择排序方式
x 定制浏览方式,使用你指定的程序打开该文件

其它常用键,诸如使用书签、隐藏符合条件的文件等,请参阅netrw帮助页。

上面我们用":e ~/src/vim70/src/"的方式打开netrw,我们还可以使用":Explore"等Ex命令来打开文件浏览器。我的vimrc中这样配置:

""""""""""""""""""""""""""""""
" netrw setting
""""""""""""""""""""""""""""""
let g:netrw_winsize = 30
nmap <silent> <leader>fe :Sexplore!<cr>

这样,在我输入",fe"时,就会打开一个垂直分隔的窗口浏览当前文件所在的目录,窗口的宽度为30。

浏览本地文件只是netrw插件的一项小功能,netrw插件最主要的功能是支持远程文件读写。利用该插件,你可以通过ftp,ssh,http等多种协议来编辑远程文件,也可以浏览远程机器的目录。

在软件开发过程中不常使用此功能,本文中不再介绍。参阅netrw手册页获取更多信息。

[缓冲区浏览]

在开发过程中,经常会打开很多缓冲区,尤其是使用tag文件在不同函数间跳转时,会不知不觉打开很多文件。要知道自己当前打开了哪些缓冲区,可以使用vim的":ls"Ex命令查看。

开发过程中,又经常需要在不同文件间跳转。我习惯于使用"CTRL-^"来切换文件,这就需要知道文件所在的缓冲区编号。每次都使用":ls"来找缓冲区编号很麻烦,所以我使用BufExplorer插件来显示缓冲区的信息。

BufExplorer插件在此处下载:http://vim.sourceforge.net/scripts/script.php?script_id=42

下载后,把该文件在~/.vim/目录中解压缩,这会在你的~/.vim/plugin和~/.vim/doc目录中各放入一个文件:

plugin/ bufexplorer.vim - bufexplorer插件
doc/ bufexplorer.txt - bufexplorer帮助文件

注:windows用户需要把这个插件解压在你的$vim/vimfiles或$HOME/vimfiles目录。

使用下面的命令生成帮助标签(下面的操作在vim中进行):

:helptags ~/.vim/doc 

然后,就可以使用":help bufexplorer"命令查看BufExplorer的帮助文件了。

BufExplorer功能比较简单,这里就不做介绍了。我的vimrc里这样设置BufExplorer插件:

""""""""""""""""""""""""""""""
" BufExplorer
""""""""""""""""""""""""""""""
let g:bufExplorerDefaultHelp=0 " Do not show default help.
let g:bufExplorerShowRelativePath=1 " Show relative paths.
let g:bufExplorerSortBy='mru' " Sort by most recently used.
let g:bufExplorerSplitRight=0 " Split left.
let g:bufExplorerSplitVertical=1 " Split vertically.
let g:bufExplorerSplitVertSize = 30 " Split width
let g:bufExplorerUseCurrentWindow=1 " Open in new window.
autocmd BufWinEnter \[Buf\ List\] setl nonumber

BufExplorer已经映射了几个键绑定,例如,使用",bv"就可以打开一个垂直分割窗口显示当前的缓冲区。

有一个称为minibufexpl.vim的插件,也可以把缓冲区列表显示出来,这个插件在此处下载:http://vim.sourceforge.net/scripts/script.php?script_id=159

使用这个插件后,屏幕截图看起来是这样,最上面一个窗口就是minibuffer窗口,列出了当前打开的缓冲区:

这个插件没有帮助文件,参考下载页上的说明,以及脚本代码来进行配置。

[winmanager插件]

winmanager插件可以把上面介绍的Explorer插件(vim 7.0以前的文件浏览插件)和BufExplorer插件集成在一起,我们上篇文章中介绍过的taglist插件也提供了对winmanager插件的支持。

Winmanager插件在这里下载:http://vim.sourceforge.net/scripts/script.php?script_id=95

下载后,把该文件在~/.vim/目录中解压缩,这会把winmanager插件解压到~/.vim/plugin和~/.vim/doc目录中:

plugin/winmanager.vim – winmanager插件
plugin/winfileexplorer.vim - 改良的Explorer插件
plugin/wintagexplorer.vim – winmanager提供的tag插件,用处不大
doc/winmanager.txt – 帮助文件

仍然用":helptags ~/.vim/doc"命令来生成帮助标签,然后就可以使用":help winmanager"来查看帮助了。

使用winmanager插件可以控制各插件在vim窗口中的布局显示。我的vimrc中这样设置:

""""""""""""""""""""""""""""""
" winManager setting
""""""""""""""""""""""""""""""
let g:winManagerWindowLayout = "BufExplorer,FileExplorer|TagList"
let g:winManagerWidth = 30
let g:defaultExplorer = 0
nmap <C-W><C-F> :FirstExplorerWindow<cr>
nmap <C-W><C-B> :BottomExplorerWindow<cr>
nmap <silent> <leader>wm :WMToggle<cr>

g:winManagerWindowLayout变量的值定义winmanager的窗口布局,使用上面的设置,我们的窗口布局看起来是这样的:

左边有两个窗口,上面的是BufExplorer窗口,下面是taglist窗口。FileExplorer窗口和BufExplorer共用一个窗口,在BufExplorer窗口中使用"CTRL-N"可以切换到FileExplorer窗口,再使用一次则又切换回BufExplorer窗口。也就是说,在变量g:winManagerWindowLayout中,使用","分隔的插件,在同一个窗口中显示,使用"CTRL-N"在不同插件间切换;使用"|"分隔的插件,则在另外一个窗口中显示。

在屏幕右边的窗口则是主编辑区。

在上面的vimrc设置中,还定义了三个键映射,分别用于跳到左上窗口、左下窗口,以及显示/关闭winmanager窗口。

注:安装后,如果未设置g:winManagerWindowLayout变量,winmanager插件需要与BufExplorer插件一起才能使用。所以需要下载BufExplorer。

http://vim.sourceforge.net/scripts/script.php?script_id=1440有一个winmanager插件的修改版本,如果在FileExplorer中打开文件时,它会使用与该文件相关联的程序来打开该文件,而不是使用vim。我没有使用过这个插件,有兴趣你可以试试。

[参考文档]

<< 返回vim使用进阶: 目录

本文以创作共用版权协议发布,转载本文要求遵循“署名-非商业性使用-相同方式共享3.0”的创作共用协议,并以链接形式指明本文地址。

本文链接地址: https://blog.easwy.com/archives/advanced-vim-skills-netrw-bufexplorer-winmanager-plugin/

文章的脚注信息由WordPress的wp-posturl插件自动生成

vi/vim使用进阶: 文件浏览和缓冲区浏览的更多相关文章

  1. 【转载】vi/vim使用进阶: 指随意动,移动如飞 (二)

    本节所用命令的帮助入口: :help usr_03.txt :help motion.txt :help usr_29.txt :help scroll.txt :help folding 上一篇文章 ...

  2. 【转载】vi/vim使用进阶: 指随意动,移动如飞 (一)

    vi/vim使用进阶: 指随意动,移动如飞 (一) << 返回vim使用进阶: 目录 本节所用命令的帮助入口: :help usr_03.txt :help motion.txt :hel ...

  3. vi/vim使用进阶: 在VIM中使用GDB调试 – 使用vimgdb

    vi/vim使用进阶: 在VIM中使用GDB调试 – 使用vimgdb << 返回vim使用进阶: 目录 本节所用命令的帮助入口: :help vimgdb 在UNIX系统最初设计时,有一 ...

  4. vi/vim使用进阶: 剑不离手 – quickfix

    转载:http://easwy.com/blog/archives/advanced-vim-skills-quickfix-mode/ 本节所用命令的帮助入口: :help quickfix :he ...

  5. vi/vim使用进阶: vimrc初步

    本节所用命令的帮助入口: :help compatible :help mapleader :help map :help autocmd 当vim在启动时,如果没有找到vimrc或gvimrc,它缺 ...

  6. 快速提高 Vi/Vim 使用效率的原则与途径

    Vi/Vim 是所有 Unix/Linux 操作系统默认配备的编辑器.因其强大的功能和高效的操作,Vi/Vim 也成为众多 Unix/Linux 用户.管理员必须掌握并熟练使用的编辑工具之一.尤其是在 ...

  7. 小白学Linux(五)--VI/VIM编辑器

    我们操作文件,终究离不开编辑文件,对文件内容的编辑,Linux系统下,我们通常使用VI/VIM来编辑文件.VI是每个Linux都会自带的文本编辑器,VIM是VI的增强版,可能有些发行版本没有自带,可以 ...

  8. vi / vim 删除以及翻页 其它命令

    vim中翻页的命令 vim中翻页的命令 整页翻页 ctrl-f ctrl-b f就是forword b就是backward 翻半页 ctrl-d ctlr-u d=down u=up 滚一行 ctrl ...

  9. 初识Linux(五)--VI/VIM编辑器

    我们操作文件,终究离不开编辑文件,对文件内容的编辑,Linux系统下,我们通常使用VI/VIM来编辑文件.VI是每个Linux都会自带的文本编辑器,VIM是VI的增强版,可能有些发行版本没有自带,可以 ...

随机推荐

  1. 程序员,不要让自己做兔子(updated) 网上最近流传的一个笑话,关于兔子,狼还有一只老虎的,故事 我就是想打你了,还需要什么理由吗?谁让你是兔子 项目经理是这样当的

    程序员,不要让自己做兔子(updated) 前段时间和一个朋友聊天,酒席间向我抱怨他那段时间的郁闷:项目经理从客户那里拿来一个需求,实际上就是一个ppt描述,我这个朋友拿过来看后刚开始不觉得什么,一个 ...

  2. Linux基本数据类型大小——int,char,long int,long long int

    转自:http://paddy-w.iteye.com/blog/1403217 在Linux操作系统下使用GCC进行编程,目前一般的处理器为32位字宽,下面是/usr/include/limit.h ...

  3. Ubuntu菜鸟入门(十六)—— 安装视频播放器vlc

    sudo add-apt-repository ppa:videolan/master-daily sudo apt-get update sudo apt-get install vlc Ubunt ...

  4. Git 分支(分布式版本控制系统)

    前言 几乎所有的版本控制系统都以某种形式支持分支.使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线.在很多版本控制系统中,这是一个略微低效的过程--常常需要完全创建一个源代码目录的 ...

  5. Android 关于导航栏(虚拟按键)遮挡PopupWindow底部布局的问题

    我们自定义popupWindow的时候,一般会设置这些参数 setContentView(contentView); //设置高度为屏幕高度 setWidth(UIUtils.getScreenHei ...

  6. MyEclipse或Eclipse中project的导入和导出

    project的导入:将project放到对应的目录中--打开MyEclipse--光标定位在PackageExp位置(即project创建位置),右键选中并点击"Import-" ...

  7. Windows键盘消息处理

    原文链接: http://blog.sina.com.cn/s/blog_5f8817250100taab.html 本文大部分来自MSDN和网友的博客,我在实践的基础上再作了一些总结. 1,虚拟键( ...

  8. 跟我学SharePoint 2013视频培训课程——网站导航及页面元素(2)

    课程简介 第2天,介绍SharePoint 2013 网站导航及页面元素 视频 SharePoint 2013 交流群 41032413

  9. wget for windows

    那么,来尝试下wget for windows 吧. 什么是wget? wget是一个强力方便的命令行下的下载工具,可以通过HTTP和FTP协议(两种最广泛的互联网协议)从因特网中检索并获取文件. 此 ...

  10. 服务器保存所有用户的操作指令(history)

    参考地址:https://helpcdn.aliyun.com/knowledge_detail/41210.html #!/bin/bash LOGIP=`who -u am i 2>/dev ...