把vim配置成顺手的python轻量级IDE(一)

把vim配置成顺手的python轻量级IDE(一)

Linux云计算和Python推动市场提升的学习研究者。
分享一篇文章,正好最近正在折腾VIM,原文在把vim配置成顺手的python轻量级IDE。
网上已经有很多很好的vim使用和配置教程。但每个人都有自己的习惯,因此教程仅作参考,只有在使用过程中才能体会到具体的问题,然后解决问题才能把vim调教的顺手。本文不再赘述vim的操作,直接从配置开始。

一、配置文件
- 基础配置
vim的所有配置都是在 ~/.vimrc 这个文件中完成。默认是没有的需要自己新建:
cd ~
touch .vimrc
vim .vimrc
以下是我个人的.vimrc文件的基础配置部分,双引号内为注释内容:
"去掉vi的一致性"
set nocompatible
"显示行号"
set number
" 隐藏滚动条"
set guioptions-=r
set guioptions-=L
set guioptions-=b
"隐藏顶部标签栏"
set showtabline=0
"设置字体"
set guifont=Monaco:h13
syntax on "开启语法高亮"
let g:solarized_termcolors=256 "solarized主题设置在终端下的设置"
set background=dark "设置背景色"
colorscheme solarized
set nowrap "设置不折行"
set fileformat=unix "设置以unix的格式保存文件"
set cindent "设置C样式的缩进格式"
set tabstop=4 "设置table长度"
set shiftwidth=4 "同上"
set showmatch "显示匹配的括号"
set scrolloff=5 "距离顶部和底部5行"
set laststatus=2 "命令行为两行"
set fenc=utf-8 "文件编码"
set backspace=2
set mouse=a "启用鼠标"
set selection=exclusive
set selectmode=mouse,key
set matchtime=5
set ignorecase "忽略大小写"
set incsearch
set hlsearch "高亮搜索项"
set noexpandtab "不允许扩展table"
set whichwrap+=<,>,h,l
set autoread
set cursorline "突出显示当前行"
set cursorcolumn "突出显示当前列"
- 一键执行python代码
其他常用的编辑器都有很方便的一键执行的功能或插件,例如Sublime Text的command+b、Atom的script插件。vim实现这个功能只需要在.vimrc中添加如下代码就可以实现F5一键执行python代码,而且由于是调用了vim的quickfix功能,因此还支持如果出现错误,跳转到错误行。
"按F5运行python"
map <F5> :Autopep8<CR> :w<CR> :call RunPython()<CR>
function RunPython()
let mp = &makeprg
let ef = &errorformat
let exeFile = expand("%:t")
setlocal makeprg=python\ -u
set efm=%C\ %.%#,%A\ \ File\ \"%f\"\\,\ line\ %l%.%#,%Z%[%^\ ]%\\@=%m
silent make %
copen
let &makeprg = mp
let &errorformat = ef
endfunction

执行代码
但是这个一键执行有一个小问题,由于quickfix的原因,不支持标准输入input()和raw_input(),只要代码中有这两个函数,100%卡死,目前这个问题貌似还无解。如果不用quickfix就可以支持输入,但是在终端中使用的话就是跳回终端输入和输出;使用macvim的话又会出现输出数据很多时就无法查看全部。由于我在写python是标准输入用的较少,就决定放使用quickfix来保证实用和美观。
二、插件
先上我的插件目录,本文只着重介绍Vundle和YouCompleteMe两个插件因为这两个插件的安装过程比较复杂一些,而其他插件的安装几乎可以算是傻瓜式的:
Plugin 'VundleVim/Vundle.vim'
Plugin 'Valloric/YouCompleteMe'
Plugin 'Lokaltog/vim-powerline'
Plugin 'scrooloose/nerdtree'
Plugin 'Yggdroot/indentLine'
Plugin 'jiangmiao/auto-pairs'
Plugin 'tell-k/vim-autopep8'
Plugin 'scrooloose/nerdcommenter'
杀手级插件。这是唯一一个需要手动安装的插件。有了这个,安装其他插件就方便很多。
- 1、安装
首先需要从github上得到项目的源码,在终端下的命令如下(请自备git):
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
若提醒目录不存在请先自行新建目录:
cd ~
mkdir .vim
cd .vim
mkdir bundle
然后需要在.vimrc文件中添加一些配置才能生效:
filetype off
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
Plugin 'VundleVim/Vundle.vim'
Plugin '你的插件'
call vundle#end()
filetype plugin indent on
- 2、使用
Vundle安装插件的方法非常简单,只需要两步。先在.vimrc文件中添加Plugin命令:
“这是安装Github上的插件”
Plugin 'Lokaltog/vim-powerline'

引号的内容
下面是安装在vim-script上的插件的方法,引号里为插件名称,其他插件安装方法请自行查看项目主页:
Plugin 'L9'
在添加完.vimrc的的配置后,:wq保存并退出vim,重启vim并输入下面的命令后,vim就会自动下载并安装插件了
:PluginInstall
当看到命令行出现Done!就代表所有插件安装完成啦!

插件安装界面
杀手级插件。vim上的自动补全神器,能够提供类似IDE的自动补全体验,还能和Syntastic配合提供实时语法检查。YouCompleteMe与其他插件不同的地方在于不仅需要安装,还需要自己手动编译,而且还需要在.vimrc中配置。

盗一张官网的效果图
YouCompleteMe支持的语言有:
C、Objectiv-c、C#、C++、Objectiv-C++、Php、Javascript、Typescript、python、Go、Rust
- 安装只需要一条命令:
Plugin 'Valloric/YouCompleteMe'
- 编译的命令:
cd ~/.vim/bundle/YouCompleteMe
./install.py --clang-completer
参数 --clang-completer是为了加上C系列语言的自动补全,如果不需要可以不加,它同时还支持其他语言的补全,详细请看
官方文档。
- YouCompleteMe涉及到的配置选项有很多,笔者也没有完全了解,此外,个人觉得Syntactic的提示略丑陋,因此没有安装。此处指列出笔者在使用的,详细请查看官方文档:
"默认配置文件路径"
let g:ycm_global_ycm_extra_conf = '~/.ycm_extra_conf.py'
"打开vim时不再询问是否加载ycm_extra_conf.py配置"
let g:ycm_confirm_extra_conf=0
set completeopt=longest,menu
"python解释器路径"
let g:ycm_path_to_python_interpreter='/usr/local/bin/python'
"是否开启语义补全"
let g:ycm_seed_identifiers_with_syntax=1
"是否在注释中也开启补全"
let g:ycm_complete_in_comments=1
let g:ycm_collect_identifiers_from_comments_and_strings = 0
"开始补全的字符数"
let g:ycm_min_num_of_chars_for_completion=2
"补全后自动关机预览窗口"
let g:ycm_autoclose_preview_window_after_completion=1
" 禁止缓存匹配项,每次都重新生成匹配项"
let g:ycm_cache_omnifunc=0
"字符串中也开启补全"
let g:ycm_complete_in_strings = 1
"离开插入模式后自动关闭预览窗口"
autocmd InsertLeave * if pumvisible() == 0|pclose|endif
"回车即选中当前项"
inoremap <expr> <CR> pumvisible() ? '<C-y>' : '\<CR>'
"上下左右键行为"
inoremap <expr> <Down> pumvisible() ? '\<C-n>' : '\<Down>'
inoremap <expr> <Up> pumvisible() ? '\<C-p>' : '\<Up>'
inoremap <expr> <PageDown> pumvisible() ? '\<PageDown>\<C-p>\<C-n>' : '\<PageDown>'
inoremap <expr> <PageUp> pumvisible() ? '\<PageUp>\<C-p>\<C-n>' : '\<PageUp>'
用于美化状态栏,原生的状态栏略丑而且显示的信息很少,因此这款好看又实用的状态栏就派上用场啦。开箱即用,方便快捷。

Normal模式

Insert模式
至于官网上的三角形效果需要安装额外的字体,笔者表示折腾很久没配置成功,而就这样不影响使用,视觉效果也还不错,因此就懒得折腾了。
给vim添加一个树形目录,更方便的查看和切换文件。

NERDTree
- .vimrc中的配置:
"F2开启和关闭树"
map <F2> :NERDTreeToggle<CR>
let NERDTreeChDirMode=1
"显示书签"
let NERDTreeShowBookmarks=1
"设置忽略文件类型"
let NERDTreeIgnore=['\~$', '\.pyc$', '\.swp$']
"窗口大小"
let NERDTreeWinSize=25
indentLine是一款缩进指示线,由纯字符实现,效果比较完美。由于python是靠代码缩进来判断代码块的,因此缩进指示的功能有多方便就不言而喻了。indentLine默认是关闭的,因此需要在.vimrc中配置才能看到效果。

indentLine
autopep8是一款自动格式化工具,安装后在Normal模式输入:Autopep8或按F8就可以自动依照pep8的标准自动格式化代码。
以下是个人针对它们的配置,其他配置请参考项目主页:
"缩进指示线"
let g:indentLine_char='┆'
let g:indentLine_enabled = 1
"autopep8设置"
let g:autopep8_disable_show_diff=1
这两款插件让写代码更方便。auto-pairs主要功能是括号和引号自动补全,输入左引号和左括号自动补全另外一半。
nerdcommenter和上面的NERDTree是同一作者,主要功能是方便的写注释具体用法请参考项目主页。需要注意的是nerdcommenter的leader默认为”\“,一般可以用下面的命令更改:
let mapleader=','
一般IDE和很多编辑器都提供command+/快速添加(取消)注释,但是vim添加注释和取消注释需要不同的快捷键,而且多行注释就是泪啊,各种折腾后发现了nerdcommenter的ci命令,只需要在.vimrc文件中添加一条设置就可以一键注释和反注释:
map <F4> <leader>ci <CR>
多行注释只需要在normal模式下按v并移动光标选择需要注释的行,再按F4就可以为所有选中的行添加注释。
结语
至此,所有配置结束,就可以用vim愉快的和python玩耍啦。
水平有限,如有错误,欢迎指正。
把vim配置成顺手的python轻量级IDE(一)的更多相关文章
- 将VIM配置成强大的IDE(二)
将VIM配置成强大的IDE(二) 前面我们已经安装好了vundle这一款强大的插件管理工具. 下面,当然是配置我们需要的插件了. 在VIM下面通过命令 help vundle 我们可以知道,VUNDL ...
- 将VIM配置成强大的IDE(三)
上一节,我们知道了,我们了解了怎么配置插件的下下载. 现在,我们就可以去DIY我们的IDE了,主要介绍taglist插件和NERDTree插件,最终的结果是: 1.安装Taglist插件. Tagli ...
- vim配置成c++IDE
mv ~/.vimrc ~/.vimrcbak mv ~/.vim ~/.vimbak git clone https://github.com/handy1989/vim.git mv vim/.v ...
- Linux下新手怎样将VIM配置成C++编程环境(能够STL自己主动补全)
~ 弄拉老半天,最终弄的几乎相同啦,果然程序猿还是须要有点折腾精神啊. 首先你要安装vim,命令:sudo apt-get install vim vim它仅仅是一个编辑器,它不是IDE(比方code ...
- Pyzo -- 好用的 Python 轻量级 IDE
近期 yvivid 使用 Python 进行科学计算类应用(如matlab部分应用场景) 比较好的 发行版本为 Anaconda: A free distribution for the SciPy ...
- 将vim配置成一个轻量的IDE开发工具
1.插件管理工具 2.安装插件 3.配置.vimrc 1.插件管理工具 vim的插件有很多,为了后面方便添加新的插件,我们需要一个插件管理工具来帮我们管理安装的插件,这里使用的是vim-pathoge ...
- Thonny -- 简洁的 python 轻量级 IDE
Thonny目前是 树莓派 上 默认的 Python 开发环境. 该 IDE 是 Institute of Computer Science of University of Tartu (爱沙尼亚 ...
- emacs配置详解及C/C++IDE全功能配置演示(附配置文件)
我的emacs插件下载地址: http://pan.baidu.com/share/link?shareid=4196458904&uk=3708780105 说明: 1.为什么使用emacs ...
- vim配置轻量级IDE
安装VIM 安装YouCompleteMe的时候, 需要VIM的版本比较高, 一般一些Linux长期支持版的Vim包就比较老, 所以可能需要编译安装. 卸载之前系统中安装的版本: CentOS/Fed ...
- Vim配置(python版)
由于马上将用到django框架,需要有一个好的ide来coding,之前做C的开发时候体会到了vim的强大,所以编写python也决定采用vim. PS:除了vim,一般浏览代码多用atom和subl ...
随机推荐
- Educational Codeforces Round 158 (Rated for Div. 2)C. Add, Divide and Floor(思维/数学)
C. Add, Divide and Floor 这里我们选择固定最小数不变,然后每次让其他数向最小数靠近,模拟一下可以发现,只要最大值变为和最小值一样,其他都会和最小值一样. #include &l ...
- 在vue3中使用openlayers3实现track轨迹动画
网上太多资料代码,抄来抄去,而且版本也是v5.x版本的,部分API已经弃用 基础知识不多说,直接讲重点 三个关键变量 // 记录开始动画的时间 const startTime = ref(0); // ...
- DOSBox0.74使用Debug时p命令报错
环境 操作系统:Windows 10 DOSBox 0.74 DEBUG.EXE 从 Windows XP 或其他复制到的DOSBox下 问题 在学习到 王爽的<汇编语言>时,第 4章,第 ...
- Nacos服务跨分组调用
一. 问题背景 nacos有两种服务隔离的机制,一个是空间namespace,一般我们用namespace区分环境,另外一个是分组group,nacos的默认调用机制是同namespace下的同gro ...
- Neural Dynamics on Complex Networks-KDD20
一.摘要 学习复杂网络上的连续时间动态对于理解.预测和控制科学和工程中的复杂系统至关重要.然而,由于高维系统结构中的组合复杂性.它们难以捉摸的连续时间非线性动力学以及它们的结构-动力学依赖性,使得这项 ...
- 修改阿里云DNS 解决蓝奏云无法访问问题
某些地区的宽带连接不上蓝奏云服务器,需要手动改一下DNS配置,改为阿里云的即可 PS:阿里云DNS服务器地址为223.5.5.5 和 223.6.6.6 下面以win10系统为例,具体步骤如下 1.进 ...
- 3DCAT+上汽奥迪:打造新零售汽车配置器实时云渲染解决方案
在 5G.云计算等技术飞速发展的加持下,云渲染技术迎来了突飞猛进的发展.在这样的背景下,3DCAT应运而生,成为了业内知名的实时云渲染服务商之一. 交互式3D实时云看车作为云渲染技术的一种使用场景,也 ...
- 智慧公安!3DCAT实时云渲染助力某公安机关打造数字孪生可视化系统
近年来,随着大数据.数字孪生.云计算.人工智能等技术的飞速发展,数字化浪潮席卷全国各地公安系统.2022年全国公安工作会议中也提到,数字化改革是推动公安工作创新发展的大引擎.培育战斗力生成新的增长点. ...
- 使用 LogProperties source generator 丰富日志
Nuget包 Microsoft.Extensions.Telemetry.Abstractions 包含的新的日志记录source generator,它支持使用[LogProperties]将整个 ...
- logback 日志输出配置
application.properties文件中 logging.config=classpath:logback-spring-dev.xml logback-spring-dev.xml &l ...