这又是一个非常好用的插件,可以快速的浏览本地文件打开本地文件。如果是不同类型的文件如pdf,会调用本地系统的应用打开,就是这么好用,在习惯了vim后有个毛病,就是想要什么都可能通过命令行去操作,如果你也是这样,那这个插件非常适合你。

老规距,先上效果图

ranger效果

安装

需要先安装到系统中,首次安装不需要初始化也能使用,但是会比较丑,也没有预览功能,所以安装完成后,需要一些配置。

验证安装效果

brew install ranger

iterm2插件

mac 我使用的是 iter2 来使用nvim,所以能不能预览需要iterm2的支持,iterm2官方可以支持。
添加图片插件

curl https://iterm2.com/utilities/imgcat > imgcat
chmod +x imgcat
mv imgcat /usr/local/bin

这步是装上iterm2的图片预览插件,还需要配置 ranger 的预览功能。

初始化

如何果不初始化将没有图片预览、边框等。

生成配置

ranger --copy-config=all

~/.config/ranger 目录生成以下5个文件:

  1. commands.py 与以下命令一起启动的命令
  2. commands_full.py 全套命令
  3. rc.conf 配置和绑定
  4. rifle.conf 文件关联(用于打开文件的程序)
  5. scope.sh 负责各种文件预览

图片预览

修改 rc.conf,ranger 将可以直接在终端预览图片

set preview_images true
set preview_images_method iterm2

ranger图片预览

操作

:help 里有所有快捷键
l 进入当前当标目录
h 后退
回车 打开应用

g 快速跳转

gh 跳至home
gd
gu

vim 集成

添加插件:

Plug 'francoiscabrol/ranger.vim'

执行:

1
:PlugInstall 进行安装

安装完成后,验证一下,调用ranger:

输入

1
2
# 首字母大写
:Ranger

也可以通过快捷键就行调用:
\ + f
这个操作就是先按一下 \ 后放开,再按一下f。

vim 对应插件官网: https://github.com/francoiscabrol/ranger.vim

当前完整配置

vim-IDE已经进化到了这一阶段,完成了:

  1. 系统基础环境安装
  2. vim 安装、基本配置
  3. 左侧文列表
  4. 状态栏
  5. 模糊搜索
  6. 文件浏览

对于文本编辑是完全够用了。

完整配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
"=================================
" VIM 自身配置
"=================================
" 编码设置
set fileencodings=utf-8,gb2312,gb18030,gbk,ucs-bom,cp936,latin1
set enc=utf8
set fencs=utf8,gbk,gb2312,gb18030

" 启用插件
set nocompatible
filetype on
filetype plugin indent on

" Tab 转空格
set tabstop=4
set shiftwidth=4
set softtabstop=4
set expandtab

" 列高亮
set cursorcolumn

" 记录上次光标位置
au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif

" 分屏设置
" 向右分屏并把光标移动向右边
map td :set splitright<CR>:vsplit<CR>
" 向右分屏并把光标移动向左边
map ta :set nosplitright<CR>:vsplit<CR>
" 向下分屏并把光标移动向上边
map ts :set nosplitbelow<CR>:split<CR>
" 向下分屏并把光标移动向下边
map tw :set splitbelow<CR>:split<CR>

" 替换方向键为调节分屏大小
map <M-up> :res -5<CR>
map <M-down> :res +5<CR>
map <M-left> :vertical resize-5<CR>
map <M-right> :vertical resize+5<CR>

" 按键映射
map W :w<CR>
map Q :wq<CR>
map tq :q!<CR>
map te :terminal<CR>

" 设置 buff、空白字符的视觉提示
set list listchars=extends:❯,precedes:❮,tab:▸\
" 这个提示在复制的时候是个问题
" set list listchars=extends:❯,precedes:❮,tab:▸\,trail:˽

" 其他的一些配置
syntax on " 语法高亮
set number " 显示行号
"set relativenumber " 相对行号
set wildmenu " 让vim命令可用Tab补全
set hlsearch " 变输入搜索词边高亮
set incsearch " 光标自动跳转到搜索结果上
set t_ut= "防止vim背景颜色错误

" 复制系统到 vim
vnoremap <C-y> "+y
nnoremap <C-p> "*p

"=================================
" 插件部分--开始
"=================================
" 插件
call plug#begin('~/.vim/plugged')

" NERDTree
Plug 'scrooloose/nerdtree'
Plug 'Xuyuanp/nerdtree-git-plugin'
Plug 'mhinz/vim-startify'

# ranger 插件
Plug 'francoiscabrol/ranger.vim'
call plug#end()
"=================================
" 插件部分--结束
"=================================

"=================================
" NERDTree
"=================================

" 打开关闭 NERDTree
map tt :NERDTreeToggle<CR>

" 打开vim时自动打开NERDTree
autocmd vimenter * NERDTree

" \ + r 定位当前文件所在目录,这个很有用
" 当前从左树进入,又要将当前目录定位到当前位置用这个
map <leader>r :NERDTreeFind<cr> <C-w><C-w>

"显示书签"
let NERDTreeShowBookmarks=1
" 是否显示隐藏文件
let NERDTreeShowHidden=1

" 忽略一下文件的显示
let NERDTreeIgnore=['\.pyc','\~$','\.swp']

let g:NERDTreeGitStatusIndicatorMapCustom = {
\ "Modified" : "✹",
\ "Staged" : "✚",
\ "Untracked" : "✭",
\ "Renamed" : "➜",
\ "Unmerged" : "═",
\ "Deleted" : "✖",
\ "Dirty" : "✗",
\ "Clean" : "✔︎",
\ 'Ignored' : '☒',
\ "Unknown" : "?"
\ }
" }}}

"=========================================
" Startify 设置
"=========================================
" 修改其中的内容去获得更好的体验。
"设置书签
let g:startify_bookmarks= [
\ '~/workspaces/',
\ '~/.config/nvim/init.vim',
\]
"起始页显示的列表长度
let g:startify_files_number = 10
"自动加载session
let g:startify_session_autoload = 1
"过滤列表,支持正则表达式
let g:startify_skiplist = [
\ '^/tmp',
\ ]
"自定义Header和Footer
let g:startify_custom_header = [
\ '+------------------------------+',
\ '| |',
\ '| Still waters run deep! |',
\ '| |',
\ '+----------------+-------------+',
\]
let g:startify_custom_footer = [
\ '+------------------------------+',
\ '| Keep an open mind! |',
\ '+----------------+-------------+',
\]

" 自己完成的脚本,判断打开文件是否存在。
function! SomeCheck()
if filereadable(expand("%"))
echo "SpecificFile exists"
else
autocmd VimEnter * Startify
endif
endfunction

call SomeCheck()

"==============================================================================
" ranger 插件
"==============================================================================
" 设置 leader 打开
let g:ranger_map_keys = 0

map <leader>f :Ranger<CR>

" bclose 插件
let g:NERDTreeHijackNetrw = 0 " add this line if you use NERDTree
let g:ranger_replace_netrw = 1 " open ranger when vim open a directory

总结

到这一步,可以有完成日常文件编译、脱离鼠标的大部份操作,但是对于开发来说还是不够的,尤其每一种编程语言的特点还不太相同。
相信大部分使用vim的朋友都是IT领域的从业人员,小部分是出于真爱使用vim,那是真爱。有很大一部份是为了装X。
但是如果能坚持研究到这一步,也是从路人到喜欢。

后面开始向着编程IDE方向继续进化,演示如何集成各种编程需要的插件,还可以开发自己的插件。
目前工作中大部分时间都是使用vim,已经完成能胜任90%的工作需要。