最近需要在AArch64下编写代码,sublime text3不支持ARM,支持的一些还用不惯。所以干脆直接用上了万能的VIM,用VIM打造了属于自己的python-IDE,根据自己的喜好进行配置,用起来真的很舒服。不得不说,VIM大法好。
先看下我配置好的基于python的VIM。标签导航、目录树导航、状态栏美化、代码提示和自动补全,可谓应有尽有。
我的配置有:
标签导航(tagbar和ctags)、语法检测(syntastic)、文件搜索(ctrlp)、目录树导航(nerdtree)、状态栏美化(vim-powerline)、主题风格(solarized)、python相关(jedi-vim和python-mode)、括号匹配高亮(rainbow_parentheses)、可视化缩进(vim-indent-guides)。
还有一个最重要的就是插件管理工具vundle。
1
|
git
clone
https
:
/
/
github
.com
/
gmarik
/
vundle
.git
~
/
.vim
/
bundle
/
vundle
|
~/.vimrc是VIM的配置文件,如果这个配置文件不存在,我们可以自行创建。安装好了vundle,需要在~/.vimrc配置文件中添加vundle支持。所以,在~/.vimrc中添加代码如下:
1
2
3
4
5
6
7
|
filetype
off
set
rtp
+=
~
/
.vim
/
bundle
/
vundle
/
call
vundle
#rc()
if
filereadable
(
expand
(
"~/.vimrc.bundles"
)
)
source
~
/
.vimrc
.bundles
endif
|
为了防止配置文件太乱,我们可以通过~/.vimrc.bundles管理我们安装的插件。
首先创建文件~/.vimrc.bundles,然后添加代码如下:
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
|
if
&
compatible
set
nocompatible
end
filetype
off
set
rtp
+=
~
/
.vim
/
bundle
/
vundle
/
call
vundle
#rc()
"
Let
Vundle
manage
Vundle
Bundle
'gmarik/vundle'
"
Define
bundles
via
Github
repos
"
标签导航
Bundle
'majutsushi/tagbar'
Bundle
'vim-scripts/ctags.vim'
"
静态代码分析
Bundle
'scrooloose/syntastic'
"
文件搜索
Bundle
'kien/ctrlp.vim'
"
目录树导航
Bundle
"scrooloose/nerdtree"
"
美化状态栏
Bundle
"Lokaltog/vim-powerline"
"
主题风格
Bundle
"altercation/vim-colors-solarized"
"
python自动补全
Bundle
'davidhalter/jedi-vim'
Bundle
"klen/python-mode"
"
括号匹配高亮
Bundle
'kien/rainbow_parentheses.vim'
"
可视化缩进
Bundle
'nathanaelkane/vim-indent-guides'
if
filereadable
(
expand
(
"~/.vimrc.bundles.local"
)
)
source
~
/
.vimrc
.bundles
.local
endif
filetype
on
|
如上述代码所示,我们通过Bundle指定各个插件在Github的地址,填写规则是"用户名/仓库名"。书写规则有三种,这里使用的是最常见的一种,其它书写方法这里就不说了,可以自行百度。
我们已经指定好了各个插件的路径,接下里就是安装各个插件了。在shell中输入vim,进入命令行模式输入BundleInstall。
运行这个命令就开始自行安装我们之前指定的各个插件了。这个过程需要连网,下载并安装好各个插件之后会提示Done!
注意:由于tagbar依赖于ctags,所以我们还需要用指令安装ctags:
1
|
sudo
apt
-
get
install
ctags
|
已经安装好了各个插件,接下里就可以直接用了吗?答案是否定的,我们还需要继续对自己安装的插件进行配置。配置这里也很简单,下面是我的配置,编写~/.vimrc:
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
|
filetype
off
set
rtp
+=
~
/
.
vim
/
bundle
/
vundle
/
call
vundle
#rc()
if
filereadable
(
expand
(
"~/.vimrc.bundles"
)
)
source
~
/
.
vimrc
.
bundles
endif
" tagbar标签导航
nmap
let g:tagbar_ctags_bin='/usr/bin/ctags'
let g:tagbar_width=30
autocmd BufReadPost *.cpp,*.c,*.h,*.hpp,*.cc,*.cxx call tagbar#autoopen()
let g:jedi#auto_initialization = 1
"
主题
solarized
let
g
:
solarized_termtrans
=
1
let
g
:
solarized_contrast
=
"normal"
let
g
:
solarized_visibility
=
"normal"
" 配色方案
set background=dark
set t_Co=256
colorscheme solarized
"
目录文件导航
NERD
-
Tree
" \nt 打开nerdree窗口,在左侧栏显示
nmap
let NERDTreeHighlightCursorline=1
let NERDTreeIgnore=[ '\.pyc$', '\.pyo$', '\.obj$', '\.o$', '\.so$', '\.egg$', '^\.git$', '^\.svn$', '^\.hg$' ]
let g:netrw_home='~/bak'
"
close
vim
if
the
only
window
left
open
is
a
NERDTree
autocmd
bufenter *
if
(
winnr
(
"$"
)
==
1
&&
exists
(
"b:NERDTreeType"
)
&&
b
:
NERDTreeType
==
"primary"
)
|
q
|
end
" ctrlp文件搜索
"
打开
ctrlp搜索
let
g
:
ctrlp_map
=
'
let
g
:
ctrlp_cmd
=
'CtrlP'
" 相当于mru功能,show recently opened files
map
"
set
wildignore
+=
*
/
tmp
/
*
,
*
.
so
,
*
.
swp
,
*
.
zip
" MacOSX/Linux"
let
g
:
ctrlp_custom_ignore
=
{
\
'dir'
:
'\v[\/]\.(git|hg|svn|rvm)$'
,
\
'file'
:
'\v\.(exe|so|dll|zip|tar|tar.gz)$'
,
\
}
"\ 'link': 'SOME_BAD_SYMBOLIC_LINKS',
let g:ctrlp_working_path_mode=0
let g:ctrlp_match_window_bottom=1
let g:ctrlp_max_height=15
let g:ctrlp_match_window_reversed=0
let g:ctrlp_mruf_max=500
let g:ctrlp_follow_symlinks=1
"
vim
-
powerline美化状态
" let g:Powerline_symbols = 'fancy'
let g:Powerline_symbols = 'unicode'
"
括号匹配高亮
let
g
:
rbpt_colorpairs
=
[
\
[
'brown'
,
'RoyalBlue3'
]
,
\
[
'Darkblue'
,
'SeaGreen3'
]
,
\
[
'darkgray'
,
'DarkOrchid3'
]
,
\
[
'darkgreen'
,
'firebrick3'
]
,
\
[
'darkcyan'
,
'RoyalBlue3'
]
,
\
[
'darkred'
,
'SeaGreen3'
]
,
\
[
'darkmagenta'
,
'DarkOrchid3'
]
,
\
[
'brown'
,
'firebrick3'
]
,
\
[
'gray'
,
'RoyalBlue3'
]
,
\
[
'black'
,
'SeaGreen3'
]
,
\
[
'darkmagenta'
,
'DarkOrchid3'
]
,
\
[
'Darkblue'
,
'firebrick3'
]
,
\
[
'darkgreen'
,
'RoyalBlue3'
]
,
\
[
'darkcyan'
,
'SeaGreen3'
]
,
\
[
'darkred'
,
'DarkOrchid3'
]
,
\
[
'red'
,
'firebrick3'
]
,
\
]
let
g
:
rbpt_max
=
40
let
g
:
rbpt_loadcmd_toggle
=
0
" 可视化缩进
let g:indent_guides_enable_on_vim_startup = 0 "
默认关闭
let
g
:
indent_guides_guide_size
=
1
" 指定对齐线的尺寸
let g:indent_guides_start_level = 2 "
从第二层开始可视化显示缩进
|
你可以根据自己的喜好设置快捷键,
是不是很帅气?
这些基础配置已经完成,但是我想在VIM下像在IDE中一样,按一个键就运行当前编辑的python文件,并查看运行结果,这可以做到吗?
没问题!
在~/.vimrc最后一行追击代码如下:
1
2
|
"
运行文件
map
<
F5
>
:
w
<
cr
>
:
r
!
python3
%
<
cr
>
|
上述代码的意思就是,在VIM的正常模式下,按F5就会保存文件并使用python3运行当前文件,并将结果输出到当前界面。
注意,:!python3表示运行系统命令python3,如果你没有安装python2和python3共存,此处只写python即可。
这样我们就可以边编辑边查看运行结果了:
运行完之后,依然可以在VIM的正常模式下按u,撤回这个输出操作,这样输出结果就撤回了,我们就可以继续编写自己的代码了。
VIM很好用,很强大,用上了有种爱不释手的感觉。插件不用安装太多,适合自己的就行,根据自己的需求进行配置,编辑快捷键,真的很方便。
对于自己增加的需求,如果不知道安装什么插件,可以自行百度,度娘会告诉你想知道的东西,当然在github搜索也很方便。
快来配置一个属于自己的VIM吧!
注意:由于tagbar依赖于ctags,所以我们还需要用指令安装ctags:
1
|
sudo
apt
-
get
install
ctags
|
已经安装好了各个插件,接下里就可以直接用了吗?答案是否定的,我们还需要继续对自己安装的插件进行配置。配置这里也很简单,下面是我的配置,编写~/.vimrc:
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
|
filetype
off
set
rtp
+=
~
/
.
vim
/
bundle
/
vundle
/
call
vundle
#rc()
if
filereadable
(
expand
(
"~/.vimrc.bundles"
)
)
source
~
/
.
vimrc
.
bundles
endif
" tagbar标签导航
nmap
let g:tagbar_ctags_bin='/usr/bin/ctags'
let g:tagbar_width=30
autocmd BufReadPost *.cpp,*.c,*.h,*.hpp,*.cc,*.cxx call tagbar#autoopen()
let g:jedi#auto_initialization = 1
"
主题
solarized
let
g
:
solarized_termtrans
=
1
let
g
:
solarized_contrast
=
"normal"
let
g
:
solarized_visibility
=
"normal"
" 配色方案
set background=dark
set t_Co=256
colorscheme solarized
"
目录文件导航
NERD
-
Tree
" \nt 打开nerdree窗口,在左侧栏显示
nmap
let NERDTreeHighlightCursorline=1
let NERDTreeIgnore=[ '\.pyc$', '\.pyo$', '\.obj$', '\.o$', '\.so$', '\.egg$', '^\.git$', '^\.svn$', '^\.hg$' ]
let g:netrw_home='~/bak'
"
close
vim
if
the
only
window
left
open
is
a
NERDTree
autocmd
bufenter *
if
(
winnr
(
"$"
)
==
1
&&
exists
(
"b:NERDTreeType"
)
&&
b
:
NERDTreeType
==
"primary"
)
|
q
|
end
" ctrlp文件搜索
"
打开
ctrlp搜索
let
g
:
ctrlp_map
=
'
let
g
:
ctrlp_cmd
=
'CtrlP'
" 相当于mru功能,show recently opened files
map
"
set
wildignore
+=
*
/
tmp
/
*
,
*
.
so
,
*
.
swp
,
*
.
zip
" MacOSX/Linux"
let
g
:
ctrlp_custom_ignore
=
{
\
'dir'
:
'\v[\/]\.(git|hg|svn|rvm)$'
,
\
'file'
:
'\v\.(exe|so|dll|zip|tar|tar.gz)$'
,
\
}
"\ 'link': 'SOME_BAD_SYMBOLIC_LINKS',
let g:ctrlp_working_path_mode=0
let g:ctrlp_match_window_bottom=1
let g:ctrlp_max_height=15
let g:ctrlp_match_window_reversed=0
let g:ctrlp_mruf_max=500
let g:ctrlp_follow_symlinks=1
"
vim
-
powerline美化状态
" let g:Powerline_symbols = 'fancy'
let g:Powerline_symbols = 'unicode'
"
括号匹配高亮
let
g
:
rbpt_colorpairs
=
[
\
[
'brown'
,
'RoyalBlue3'
]
,
\
[
'Darkblue'
,
'SeaGreen3'
]
,
\
[
'darkgray'
,
'DarkOrchid3'
]
,
\
[
'darkgreen'
,
'firebrick3'
]
,
\
[
'darkcyan'
,
'RoyalBlue3'
]
,
\
[
'darkred'
,
'SeaGreen3'
]
,
\
[
'darkmagenta'
,
'DarkOrchid3'
]
,
\
[
'brown'
,
'firebrick3'
]
,
\
[
'gray'
,
'RoyalBlue3'
]
,
\
[
'black'
,
'SeaGreen3'
]
,
\
[
'darkmagenta'
,
'DarkOrchid3'
]
,
\
[
'Darkblue'
,
'firebrick3'
]
,
\
[
'darkgreen'
,
'RoyalBlue3'
]
,
\
[
'darkcyan'
,
'SeaGreen3'
]
,
\
[
'darkred'
,
'DarkOrchid3'
]
,
\
[
'red'
,
'firebrick3'
]
,
\
]
let
g
:
rbpt_max
=
40
let
g
:
rbpt_loadcmd_toggle
=
0
" 可视化缩进
let g:indent_guides_enable_on_vim_startup = 0 "
默认关闭
let
g
:
indent_guides_guide_size
=
1
" 指定对齐线的尺寸
let g:indent_guides_start_level = 2 "
从第二层开始可视化显示缩进
|
你可以根据自己的喜好设置快捷键,
是不是很帅气?
这些基础配置已经完成,但是我想在VIM下像在IDE中一样,按一个键就运行当前编辑的python文件,并查看运行结果,这可以做到吗?
没问题!
在~/.vimrc最后一行追击代码如下:
1
2
|
"
运行文件
map
<
F5
>
:
w
<
cr
>
:
r
!
python3
%
<
cr
>
|
上述代码的意思就是,在VIM的正常模式下,按F5就会保存文件并使用python3运行当前文件,并将结果输出到当前界面。
注意,:!python3表示运行系统命令python3,如果你没有安装python2和python3共存,此处只写python即可。
这样我们就可以边编辑边查看运行结果了:
运行完之后,依然可以在VIM的正常模式下按u,撤回这个输出操作,这样输出结果就撤回了,我们就可以继续编写自己的代码了。
VIM很好用,很强大,用上了有种爱不释手的感觉。插件不用安装太多,适合自己的就行,根据自己的需求进行配置,编辑快捷键,真的很方便。
对于自己增加的需求,如果不知道安装什么插件,可以自行百度,度娘会告诉你想知道的东西,当然在github搜索也很方便。
快来配置一个属于自己的VIM吧!