效果

今天介绍一下vim的别一个非常好用的插件,启动界面插件 vim-startify。
这个插件有什么用呢,看效果:

启动界面

中间是最近打开的文件,可能通过数字快数打开文件,界面可以设置找开和关闭。

安装配置

1.vim插件安装

1
2
3
call plug#begin('~/.vim/plugged')
Plug 'mhinz/vim-startify'
call plug#end()

2.配置

配置不是必须项目,当然一般情况下,都会习惯自己一的快捷键。
另外书签功能是个很好用的功能,把常用的文件直接加入书签,如果书签加入是个目录,也安装了ranger 插件,可以直接调用 ranger 这个插件。

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
"=========================================
" 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()

脚本中的代码部分是解决,在不同位置启动后,找不到文件时会报错
function!
endfunction 固定一对

内置函数,% 表示当前路径,也表示当前文件路径
expand("%")
call 执行函数

可以自行偿试注释掉脚本部份复现问题。

到这一步vim的IDE进行启动界面就完成了,通过这些插件提高平时写文档的效率是够用的。

书签功能

官方文档

github

https://github.com/mhinz/vim-startify

帮助

:h startify
:h startify-faq

完整配置

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
"=================================
" 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'

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()