Keywords: vim; file manager; netrw; Linux; MacOS; Unix; vifm; mc; nerdtree

 

(在写论文的时候,通常需要在第一句摆明课题的重要性)。 vim 作为上古神器,是一个即提高效率又装逼的工具。不管怎么样,发现有很多人开始使用 vim 来编程或者写论文。但是也发现他们中的一些人喜欢在安装 vim 的时候(或者装好后)花费很多时间去安装插件,摆弄插件,使其更像一个 IDE (高度集成开发环境)。我个人虽不反对这样做,因为工具当然是要自己用着爽才行。但是作为一个极简主义者,我更赞成另外一种方式。

举例子来说,一些人觉得 vim 在多文件编辑与浏览上存在缺陷(或者说不方便),通常有以下一些操作方式:

  1. 编辑好一个文件后,:w 保存退出,然后使用 vifm 或者 mc 进行路径切换,最后再用 vim 打开需要编辑的文件;
  2. 编辑后一个文件后,:w 保存但不推出, 使用 :e + $PATH 来打开新的文件进行编辑;
  3. 或者直接使用 :tabedit + $FILE 进行多标签页编辑;
  4. 或者使用 :vs 等分屏进行编辑,然后使用 crtl+w+w 进行窗口间切换。

不喜欢以上一些操作方式(或者说习惯了 GUI 文件管理)的人,喜欢使用 NERDTree 插件来实现多文件的编辑与切换。然后,这里就有个问题需要回答, What is fucking worng with vim netrw? Why do you want to use NERDTree? 对, vim 自带的 netrw 怎么了,为什么我们就不用它呢? 它其实可以实现跟 NERDTree 一样的文件管理功能啊。

当你在 vim mode 下输入

 :Sex 

对,你没有看错,输入性感 Sex, vim 就会给你一个性感的文件管理器。其实 Sex stands for Sexplore,大白话地说就是会出现2个 vim 窗口(上下堆叠式)其中一个是文件目录。当然,窗口陈列也可以是纵向分布的,只需要在 vim mode 下输入

 :Vexplore 

 

为了让 netrw 实现 NERDTree 类似的功能,需要对 vimrc 配置文件作稍微改变,添加以下内容到 vimrc 文件中,

 let g:netrw_hide = 1
let g:netrw_liststyle = 1
let g:netrw_banner = 0
let g:netrw_browse_split = 4
let g:netrw_winsize = 24
let g:netrw_altv = 1
let g:netrw_chgwin = 2
let g:netrw_list_hide = '.*\.swp$'
let g:netrw_localrmdir = 'rm -rf' 

我稍微对每条命令做些解释(其实高手会通过 :help netrw 来查看所有解释):

  1. g:netrw_altv = 1 将默认的从左侧分裂出一个窗口显示,改成右侧分裂窗口显示;
  2.  g:netrw_banner = 0 将默认的“横幅”显示,设置为不显示;
  3.  g:netrw_browse_split = 2 是用来控制在哪个窗口及位置显示打开的文件,默认为 0 就是在当前窗口中显示(覆盖掉目录现实),这不是我们希望的; 1 代表水平分裂; 2 代表垂直分裂; 3 代表在新 tab 中打开; 4 表示新开窗口覆盖原先窗口
  4.  g:netrw_liststyle = 1 是默认 “一个文件一行”显示的加强版,会有时间戳等详细信息 append 在文件后面; 在 2 模式下,一行会有多个文件显示; 3 代表树 tree 模式显示;
  5.  g:netrw_winsize = 24 告诉 vim 目录显示栏需要占多少宽度;
  6. g:netrw_list_hide = ‘.*\.swp$’ 表示隐藏 swp 后缀名的备份文件
  7. g:netrw_localrmdir = ‘rm -rf’ 表示使用 rm -rf 的命令来执行 vim 中 D 的删除 (其中, d 表示 directory 也就是新建一个目录)

 

如果你需要 vim 的 netrw 目录在你一打开 vim 的时候就出现,并且希望打开后的激活窗口是文件(而不是目录窗口), 你还需要添加以下内容:

 augroup ProjectDrawer
    autocmd!
    autocmd VimEnter * :Vexplore
    autocmd VimEnter * :wincmd p
augroup END 

 

最后附图一张,可以比较直观地显示效果vim_netrw

我使用的是 dwm 的桌面管理系统 (desktop environment),所以请忽略最上面的标题栏。命令行里的 :! scrot 是我的终端截屏工具,也请自动忽略。 vim 中的状态栏使用了 Powerline, 如果你不喜欢也请自动忽略。

最后是一些常用且方便的快捷键,

  1. d: directory 在 netrw 中新建一个目录
  2. D: Del 删除当前文件或者目录 (不用担心会有 pop-up 进行确认)
  3. R: rename 重命名文件
  4. s: sort 在不同的文件排序中切换
  5. gh: 隐藏 dot 开头的文件(夹)
  6. – : 返回上级目录
  7. %: 新建文件

 

愿土地公公保佑你在 vim 的路上越走越远,永远不回头!

 

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s