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

: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。我没有使用过这个插件,有兴趣你可以试试。

转载自易水博客 [ http://easwy.com/blog/ ]

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

转载于:https://blog.51cto.com/sourberry/515285

vi/vim: 文件浏览和缓冲区浏览相关推荐

  1. vi/vim使用进阶: 文件浏览和缓冲区浏览

    原文:https://blog.easwy.com/archives/advanced-vim-skills-netrw-bufexplorer-winmanager-plugin/ 本节所用命令的帮 ...

  2. Linux vi/vim 文件编辑保存及退出

    进入文件 vi /file/path/filename.suffix 或者 vim /file/path/filename.suffix 进入编辑模式 vi/vim进入文件后,默认是不可编辑的,要进入 ...

  3. Linux文件管理(基础):文件的时间、文件的扩展名、系统目录结构与作用、绝对路径与相对路径、文件管理、vi\vim

    文章目录 一. Linux系统的单根目录结构 文件的时间 文件的扩展名 二. 系统目录结构与作用 三. 绝对路径与相对路径 四. 文件管理 4.1 文件管理之:基本命令 4.2 文件管理之:创建/复制 ...

  4. Vi/vim编辑文件无法保存和退出的解决方法

    原因:没有具备root权限 解决方法: 强制退出后,用sudo vi/vim +文件重新编辑,此时便是以root权限进行修改文件,可以正常保存并退出

  5. vi/vim使用进阶: 移动光标操作(一)

    本节所用命令的帮助入口: :help usr_03.txt :help motion.txt :help usr_29.txt :help scroll.txt vim提供的移动方式多如牛毛,但我们并 ...

  6. linux文件浏览 ls,linux浏览文件命令

    在linux下我们要浏览文件的内容,可以通过相关的命令来执行操作,下面由学习啦小编为大家整理了linux下浏览文件命令的相关知识,希望对大家有所帮助! linux浏览文件命令1.cat [功能说明] ...

  7. linux下编辑文件实验,Linux上最常用的文本编辑器vi/vim使用教程

    vi(vim)是上Linux非常常用的编辑器,很多Linux发行版都默认安装了vi(vim).vi(vim)命令繁多但是如果使用灵活之后将会大大提高效率.vi是"visual interfa ...

  8. RHCSA 文件编辑 nano vi vim

    1.vi,vim 1.从shell提示符编辑文本文件:vi编译器 vim是vi的升级版 2.命令:vi [文件名](若文件名存在则打开文件,不存在则创建该文件) vi [文件]:打开文件无颜色标记 v ...

  9. linux 普通用户退出vim,Linux环境下VI/VIM编辑文件时无权限保存的解决方法(普通用户)...

    在Linux环境下,如果直接使用VI/VIM命令编辑没有修改权限的文件时,保存的时候就会提示用户无法进行保存操作,一般的解决方法只能是关闭文件重新以sudo权限打开该文件编辑后再保存(前提是用户具有s ...

最新文章

  1. 一. 对spring boot认识
  2. ddos中的tcp反射攻击技术分析
  3. 简单实现vue验证码60秒倒计时功能
  4. 容器化之后如何节省云端成本?(二十七)
  5. Linux-2.6.25 TCPIP函数调用大致流程
  6. 微信小程序在当前页面设置其他页面的数据
  7. Servlet - 基础
  8. Microsoft Enterprise Library 5.0 系列(二) Cryptography Application Block (初级)
  9. binlog和redo log的区别
  10. angular引用bootstrap_angular怎么引入bootstrap?
  11. 牛客网编程题——字符串_确定两串乱序同构
  12. 安装mysql2005出错_安装mysql出的错误
  13. 高淇Struts2.0教程之视频笔记(4)
  14. Windows Mac 光盘刻录软件
  15. matlab矩阵逆时针旋转90度_matlab矩阵旋转任意角度的函数 imrotate
  16. php实现 合唱队形(算法想清楚在动)
  17. 微信小游戏开发实战教程13-随机生成形状功能的实现
  18. 用python动态演示照片立方体_3分钟在线演示用 python 生成分形图片
  19. 虾皮春节期间的发货问题和物流设置
  20. 二叉排序树详解及实现

热门文章

  1. java解释器怎么写_Java解释器和编译器
  2. gitlab 修改存储为mysql_gitlab仓库存储位置的修改方法
  3. 活动目录中组的类型和可用范围
  4. Go 性能优化技巧 8/10 1
  5. JSON-lib框架,转换JSON、XML不再困难
  6. SAP R3 display Vendor list, MKVZ .
  7. SSH框架下的在线人数统计的一种解决途径
  8. 转载:东拉西扯:产业链
  9. 989. 数组形式的整数加法
  10. OpenResty缓存