Ubuntu 18.04下使用Vim配置Python开发环境

1、安装 Python

Ubuntu 18.04 LTS 默认安装 python。

2、安装 Vim

Ubuntu 18.04 LTS Desktop初始安装自带了vi,未带 vim 需要安装,已安装的略过。

sudo apt install vim

3、插件安装

标签导航(tagbar和ctags)、语法检测(syntastic)、文件搜索(ctrlp)、目录树导航(nerdtree)、状态栏美化(vim-powerline)、主题风格(solarized)、python相关(jedi-vim和python-mode)、括号匹配高亮(rainbow_parentheses)、可视化缩进(vim-indent-guides)。可谓应有尽有。

还有一个最重要的就是插件管理工具vundle。

安装vundle

git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle

安装好了vundle,需要在~/.vimrc配置文件中添加vundle支持。

配置 vim

vim的配置是在用户主目录下的 ~/.vimrc 文件中完成的,如果没有的话,需要自己新建一下。

编辑 ~/.vimrc 文件,写入以下内容:

filetype off
set rtp+=~/.vim/bundle/vundle/
call vundle#rc()

iffilereadable(expand("~/.vimrc.bundles"))
  source ~/.vimrc.bundles
endif

为了防止配置文件太乱,我们可以通过~/.vimrc.bundles管理我们安装的插件。

.vimrc.bundles配置文件

首先创建文件~/.vimrc.bundles,然后添加代码如下:

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'iffilereadable(expand("~/.vimrc.bundles.local"))
  source ~/.vimrc.bundles.local
endiffiletypeon

如上述代码所示,我们通过Bundle指定各个插件在Github的地址,填写规则是”用户名/仓库名”。书写规则有三种,这里使用的是最常见的一种,其它书写方法这里就不说了。

安装插件

我们已经指定好了各个插件的路径,接下里就是安装各个插件了。在shell中输入vim,进入命令行模式输入BundleInstall。

运行这个命令就开始自行安装我们之前指定的各个插件了。这个过程需要连网,下载并安装好各个插件之后会提示Done!

注意:由于tagbar依赖于ctags,所以我们还需要用指令安装ctags:

sudo apt-get install ctags

插件配置

1、基础配置

已经安装好了各个插件,接下里就可以直接用了吗?答案是否定的,我们还需要继续对自己安装的插件进行配置。配置这里也很简单,下面是我的配置,编写~/.vimrc:

filetype off
set rtp+=~/.vim/bundle/vundle/
call vundle#rc()

if filereadable(expand("~/.vimrc.bundles"))
  source ~/.vimrc.bundles
endif

" tagbar标签导航
nmap <Leader>tb :TagbarToggle<CR>
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 <leader>nt :NERDTree<CR>
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 = '<leader>ff'
let g:ctrlp_cmd = 'CtrlP'
" 相当于mru功能,show recently opened files
map <leader>fp :CtrlPMRU<CR>
" 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  " 从第二层开始可视化显示缩进

你可以根据自己的喜好设置快捷键,<leader>是按键\,根据我的配置。在Vim的正常模式下:

  • 依次按键\tb,就会调出标签导航;
  • 依次按键\ff,就会调出文件搜索;
  • 依次按键\nt,就会调出目录导航。

2、运行配置

这些基础配置已经完成,但是我想在Vim下像在IDE中一样,按一个键就运行当前编辑的Python文件,并查看运行结果,这可以���到吗?

没问题!

在~/.vimrc最后一行追击代码如下:

” 运行文件
map <F5> :w<cr>:r!python3 %<cr>

上述代码的意思就是,在Vim的正常模式下,按F5就会保存文件并使用Python3运行当前文件,并将结果输出到当前界面。

注意,:!python3表示运行系统命令Python3,如果你没有安装Python2和Python3共存,此处只写python即可。

这样我们就可以边编辑边查看运行结果了,见本文最上面截图。

运行完之后,依然可以在Vim的正常模式下按u,撤回这个输出操作,这样输出结果就撤回了,我们就可以继续编写自己的代码了。

总结

Vim很好用,很强大,用上了有种爱不释手的感觉。插件不用安装太多,适合自己的就行,根据自己的需求进行配置,编辑快捷键,真的很方便。

你也来配置一个属于自己的Vim吧!

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/223577.html<

(0)
管理的头像管理
上一篇2025-04-16 00:56
下一篇 2025-04-16 00:57

相关推荐

  • 站群服务器和普通服务器到底哪个更适合GEO,怎么选?

    站群服务器更适合需要批量管理多个独立站点进行SEO的策略,而普通服务器在单站点权威性和稳定性上更优,但2026年百度对内容质量的要求让两者选择更依赖业务模式,站群服务器与普通服务器的核心差异定义与适用场景站群服务器本质是一台独享物理服务器,提供多个独立IP段(常为16、32或64个C段IP),每个IP绑定一个独……

    2026-07-28
    0
  • 物理服务器和云服务器做站群到底选哪个,哪个更稳定?

    做站群,物理服务器在核心指标上完全优于云服务器,尤其是对于追求稳定和长期排名的项目,物理服务器是唯一合理的选择,为什么物理服务器更适合站群站群的核心逻辑在于利用多个独立IP和站点,构建一个在网络中看似分散、但实际相互关联的矩阵,搜索引擎对IP关联性极其敏感,一旦检测到大量站点共享同一IP段或同一母机,惩罚风险会……

    2026-07-28
    0
  • 国内高防服务器哪家防御真实靠谱,怎么选?

    国内高防服务器哪家防御真实靠谱?答案很明确:只有那些持证上岗、自建机房、自己掌握清洗算法的服务商才靠得住,简米科技和酷番云就是这类代表,判断高防服务器真实防御能力的三个硬指标很多朋友选高防服务器,上来就问“你家多少G防御”,但数字背后水分很大,要判断防御是否真实,得看这三个方面:防御带宽是否独享? 有些服务商宣……

    2026-07-28
    0
  • 裸金属服务器和物理服务器有什么区别?,怎么选?

    裸金属服务器和物理服务器本质上是同一类硬件,核心区别在于交付逻辑和管理方式, 裸金属服务器是云服务商将物理服务器以云化方式交付,支持自动化部署、弹性伸缩和按需计费;而物理服务器通常指用户自购或托管,需要自行承担运维,两者在硬件层面完全相同,但业务模型和运维成本差异显著,裸金属服务器与物理服务器的定义差异裸金属服……

    2026-07-28
    0
  • 做GEO站群选哪家服务器服务商靠谱,怎么选?

    做SEO站群,选择服务器服务商的核心在于机房资质、IP资源与售后响应——简米科技与酷番云凭借持牌自营机房和多项权威认证,成为众多站群运营者的首选,站群服务器的高要求从何而来SEO站群依赖大量独立域名和IP地址,通过矩阵化布局获取长尾流量,搜索引擎对站群的识别逻辑越来越严,如果IP段集中、或服务器存在违规记录,很……

    2026-07-28
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注