1、手动安装vim

原因:构建出支持python的vim。

wget https://github.com/vim/vim/archive/master.zip

unzip master.zip

cd vim-master/

./configure --with-features=huge --enable-pythoninterp --enable-rubyinterp --with-python-config-dir=/usr/lib/python2.7/config-x86_64-linux-gnu --enable-gui=gtk2 --enable-cscope --prefix=/usr

说明:

/usr/lib/python2.7/config-x86_64-linux-gnu是python-dev(ubuntu叫python-dev,其他系统可能叫python-devel,区别所在)安装后的路径。cd 到自己的python安装目录下,看下config*形式的基本就是。

–enable-pythoninterp、–enable-rubyinterp、–enable-perlinterp、–enable-luainterp 等分别表示支持 ruby、python编写的插件,–enable-gui=gtk2 表示生成采用 GNOME2 风格的 gvim,–enable-cscope 支持 cscope。

执行上述命令,会提示系统缺失哪些必要环境。如我的:

checking for tgetent in -ltinfo... no

checking for tgetent in -lncurses... no

checking for tgetent in -ltermlib... no

checking for tgetent in -ltermcap... no

checking for tgetent in -lcurses... no

no terminal library found

checking for tgetent()... configure: error: NOT FOUND!

You need to install a terminal library; for example ncurses.

Or specify the name of the library with --with-tlib.

说我缺失tgetent,举例说ncurses是一种tgetent,那么我就安装它,百度后知道ncurses-devel包即可,ubuntu的命名规则自然使用:

sudo apt-get install ncurses-dev

然后再继续刚才的安装步骤,执行:

sudo make

sudo make install

构建完成之后执行:

vim

:echo has('python')

若输出 1 则表示构建出的 vim 已支持 python,反之,0 则不支持。

2、vim的配置

vim的配置主要包括2个内容:

- .vimrc 文件

- .vim文件夹

是在用户目录下的2个隐藏文件。.vimrc 主管配置,是控制 vim 行为的配置文件,位于 ~/.vimrc,不论 vim 窗口外观、显示字体,还是操作方式、快捷键、插件属性均可通过编辑该配置文件将 vim 调教成最适合你的编辑器。

.vimrc 常用的几类基本配置:

文件类型侦测。允许基于不同语言加载不同插件(如,C++ 的语法高亮插件与 python 的不同):

" 开启文件类型侦测

filetype on

" 根据侦测到的不同类型加载对应的插件

filetype plugin on

快捷键。把 vim(非插件)常用操作设定成快捷键,提升效率:

" 定义快捷键到行首和行尾

nmap LB 0

nmap LE $

" 设置快捷键将选中文本块复制至系统剪贴板

vnoremap y "+y

" 设置快捷键将系统剪贴板内容粘贴至 vim

nmap p "+p

" 定义快捷键关闭当前分割窗口

nmap q :q

" 定义快捷键保存当前窗口内容

nmap w :w

" 定义快捷键保存所有窗口内容并退出 vim

nmap WQ :wa:q

" 不做任何保存,直接退出 vim

nmap Q :qa!

" 依次遍历子窗口

nnoremap nw

" 跳转至右方的窗口

nnoremap lw l

" 跳转至左方的窗口

nnoremap hw h

" 跳转至上方的子窗口

nnoremap kw k

" 跳转至下方的子窗口

nnoremap jw j

" 定义快捷键在结对符之间跳转

nmap M %

其他。搜索、vim 命令补全等设置:

" 开启实时搜索功能

set incsearch

" 搜索时大小写不敏感

set ignorecase

" 关闭兼容模式

set nocompatible

" vim 自身命令行模式智能补全

set wildmenu

.vim主要是存放各种插件。

.vim/ 目录是存放所有插件的地方。vim 有一套自己的脚本语言 vimscript,通过这种脚本语言可以实现与 vim 交互,达到功能扩展的目的。一组 vimscript 就是一个 vim 插件,vim 的很多功能都由各式插件实现。vim.org 和 github.com 有丰富的插件资源,任何你想得到的功能,如果 vim 无法直接支持,那一般都有对应的插件为你服务,有需求时可以去逛逛。

vim 插件目前分为 .vim 和.vba 两类,前者是传统格式的插件,实际上就是一个文本文件,通常 someplugin.vim(插件脚本)与 someplugin.txt(插件帮助文件)并存在一个打包文件中,解包后将 someplugin.vim 拷贝到 ~/.vim/plugin/ 目录,someplugin.txt 拷贝到 ~/.vim/doc/ 目录即可完成安装,重启 vim 后刚安装的插件就已经生效,但帮助文件需执行 :helptags ~/.vim/doc/ 才能生效,可通过 :h someplugin 查看插件帮助信息。

目前插件管理使用的vim的插件管理插件 vundle。

3、插件管理

使用vundle 接管 .vim/ 下的所有原生目录,所以先清空该目录,再通过如下命令安装 vundle:

git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim

接下来在 .vimrc 增加相关配置信息:

" vundle 环境设置

filetype off

set rtp+=~/.vim/bundle/Vundle.vim

" vundle 管理的插件列表必须位于 vundle#begin() 和 vundle#end() 之间

call vundle#begin()

Plugin 'VundleVim/Vundle.vim'

Plugin 'altercation/vim-colors-solarized'

" 插件列表结束

call vundle#end()

filetype plugin indent on

其中,每项

Plugin 'altercation/vim-colors-solarized'

对应一个插件(这与 go 语言管理不同代码库的机制类似),后续若有新增插件,只需追加至该列表中即可。vundle 支持源码托管在 https://github.com/ 的插件,具体而言,仍以 ctrlsf.vim 为例,它在 .vimrc 中配置信息为 dyng/ctrlsf.vim,vundle 很容易构造出其真实下载地址 https://github.com/dyng/ctrlsf.vim.git ,然后借助 git 工具进行下载及安装。

此后,需要安装插件,先找到其在 github.com 的地址,再将配置信息其加入 .vimrc 中的call vundle#begin() 和 call vundle#end() 之间,最后进入 vim 执行

:PluginInstall

要卸载插件,先在 .vimrc 中注释或者删除对应插件配置信息,然后在 vim 中执行:

:PluginClean

即可删除对应插件。插件更新频率较高,差不多每隔一个月你应该看看哪些插件有推出新版本,批量更新,只需执行

:PluginUpdate

4、python IDE的配置

"vundle

set nocompatible

filetype off

set rtp+=~/.vim/bundle/Vundle.vim

call vundle#begin()

Plugin 'VundleVim/Vundle.vim'

"git interface

Plugin 'tpope/vim-fugitive'

"filesystem

Plugin 'scrooloose/nerdtree'

Plugin 'jistr/vim-nerdtree-tabs'

Plugin 'kien/ctrlp.vim'

"html

" isnowfy only compatible with python not python3

Plugin 'isnowfy/python-vim-instant-markdown'

Plugin 'jtratner/vim-flavored-markdown'

Plugin 'suan/vim-instant-markdown'

Plugin 'nelstrom/vim-markdown-preview'

"python sytax checker

Plugin 'nvie/vim-flake8'

Plugin 'vim-scripts/Pydiction'

Plugin 'vim-scripts/indentpython.vim'

Plugin 'scrooloose/syntastic'

"auto-completion stuff

"Plugin 'klen/python-mode'

Plugin 'Valloric/YouCompleteMe'

Plugin 'klen/rope-vim'

"Plugin 'davidhalter/jedi-vim'

Plugin 'ervandew/supertab'

""code folding

Plugin 'tmhedberg/SimpylFold'

"Colors!!!

Plugin 'altercation/vim-colors-solarized'

Plugin 'jnurmine/Zenburn'

call vundle#end()

filetype plugin indent on " enables filetype detection

let g:SimpylFold_docstring_preview = 1

"autocomplete

let g:ycm_autoclose_preview_window_after_completion=1

"custom keys

let mapleader=" "

map g :YcmCompleter GoToDefinitionElseDeclaration

"

call togglebg#map("")

"colorscheme zenburn

"set guifont=Monaco:h14

let NERDTreeIgnore=['\.pyc$', '\~$'] "ignore files in NERDTree

"I don't like swap files

set noswapfile

"turn on numbering

set nu

"python with virtualenv support

py << EOF

import os.path

import sys

import vim

if 'VIRTUA_ENV' in os.environ:

project_base_dir = os.environ['VIRTUAL_ENV']

sys.path.insert(0, project_base_dir)

activate_this = os.path.join(project_base_dir,'bin/activate_this.py')

execfile(activate_this, dict(__file__=activate_this))

EOF

"it would be nice to set tag files by the active virtualenv here

":set tags=~/mytags "tags for ctags and taglist

"omnicomplete

autocmd FileType python set omnifunc=pythoncomplete#Complete

"------------Start Python PEP 8 stuff----------------

" Number of spaces that a pre-existing tab is equal to.

au BufRead,BufNewFile *py,*pyw,*.c,*.h set tabstop=4

"spaces for indents

au BufRead,BufNewFile *.py,*pyw set shiftwidth=4

au BufRead,BufNewFile *.py,*.pyw set expandtab

au BufRead,BufNewFile *.py set softtabstop=4

" Use the below highlight group when displaying bad whitespace is desired.

highlight BadWhitespace ctermbg=red guibg=red

" Display tabs at the beginning of a line in Python mode as bad.

au BufRead,BufNewFile *.py,*.pyw match BadWhitespace /^\t\+/

" Make trailing whitespace be flagged as bad.

au BufRead,BufNewFile *.py,*.pyw,*.c,*.h match BadWhitespace /\s\+$/

" Wrap text after a certain number of characters

au BufRead,BufNewFile *.py,*.pyw, set textwidth=100

" Use UNIX (\n) line endings.

au BufNewFile *.py,*.pyw,*.c,*.h set fileformat=unix

" Set the default file encoding to UTF-8:

set encoding=utf-8

" For full syntax highlighting:

let python_highlight_all=1

syntax on

" Keep indentation level from previous line:

autocmd FileType python set autoindent

" make backspaces more powerfull

set backspace=indent,eol,start

"Folding based on indentation:

autocmd FileType python set foldmethod=indent

"use space to open folds

nnoremap za

"----------Stop python PEP 8 stuff--------------

"js stuff"

autocmd FileType javascript setlocal shiftwidth=2 tabstop=2

在vim中执行:

:PluginInstall

pythonide机制_强化vim打造python的IDE相关推荐

  1. vim 编写python代码_用Vim编写Python代码

    关于vim是什么?vim与Emacs的区别?请见下面的文章 编辑器圣战-神秘的程序员&version=12020010&nettype=WIFI&fontScale=100&a ...

  2. vim-python j教程_实践Vim配置python开发环境

    这段时间一直在用Python自带的IDLE编辑器.可是这IDLE的代码缩进真的让人很受伤.当你用到if:elif:的时候.后一行的elif:不会自动对齐.这让我经常出现在调试的时候才发现代码缩进出现问 ...

  3. 在vim中写python程序_用 Vim 写 Python 的最佳实践是什么?

    先来晒个图:语法检查 如果用 vim8, 那么可以用异步检测的 w0rp/ale 代替 syntastic 了,再也不用羡慕 flycheck, 也不用因为语法检查而卡顿了. 关于 ale 这部分的个 ...

  4. pythonvim编辑教程_使用vim编辑python

    1.vim使用 1.vim进入 vim  1.py         有文件打开无文件新建 2.命令模式 :进入末行模式 3.末行模式 :wq      保存并退出         :q      退出 ...

  5. 用wxpython编写登录界面_用wxPython打造Python图形界面(上)

    本文目录: wxPython入门 安装wxPython GUI的定义 事件循环 创建框架应用程序 小部件 有许多图形用户界面(GUI)工具包可以与Python编程语言一起使用.其中三巨头是Tkinte ...

  6. python图形界面实践_用wxPython打造Python图形界面

    本文目录:绝对定位 分级器(动态分级) 添加一个事件 创建工作应用程序 设计用户界面 创建用户界面 绝对定位 当你为小部件的位置提供精确的坐标时,使用的技术称为绝对定位.大多数GUI工具包都提供了这种 ...

  7. Linux下配置vim配置python轻量级IDE

    前言 个人建议 不是每个帖子都适合你,如果没有你想要的赶紧跳过一个前辈的帖子其实还是有坑,由于时间的原因软件不断更新之类的远缘故所以坑就自然而然的出现了也不是每个人的环境都一样,Enjoy bro h ...

  8. 在vim中写python程序_在Vim中运行Python代码

    在Vim中运行Python代码 我正在使用Vim编写Python代码,每次我想运行我的代码时,我都会在Vim中输入: :w !python 这令人沮丧,所以我一直在寻找一种更快的方法来在Vim中运行P ...

  9. 保姆级教程!将 Vim 打造一个 IDE (Python 篇)

    从上周开始我就开始折腾 ,搞了一下 Vim IDE for Python & Go,我将整个搭建的过程整理成本篇文章分享出来,本篇是 Python 版本的保姆级教程,实际上我还写了 Go 版本 ...

最新文章

  1. Log4Net使用详解(续)
  2. python编程做什么工作-Python能做什么工作?
  3. PE 学习(七)第七章:资源表
  4. java创建多级xml树_月光软件站 - 编程文档 - Java - 用XSL与XML实现多级树形菜单
  5. 中班机器人上课视频_家委会:出班费买智能扫地机器人,不用家长搞卫生了,莫名其妙...
  6. java项目log4j_java项目测试log4j
  7. Normalization的方法
  8. 我的2017:从工作再到学生
  9. Julia :关于函数返回类型::
  10. [密码学复习]Cryptography
  11. 汇编程序——根据开关状态在7段数码管上显示数字或者字符
  12. win 10 安装robomongo(studio 3T)
  13. HTML3D立体城市特效代码
  14. dp(十一)填满背包方案数
  15. 行人重识别(ReID)概述
  16. win10创建Ubuntu16.04子系统,安装常用软件以及图形界面(包括win10远程桌面连接Ubuntu)
  17. ZZULIOJ 2411: 摘柿子
  18. 2022微信支付v3 - Native
  19. Java数据结构-图
  20. 你对未来计算机的展望,未来计算机发展的展望

热门文章

  1. 垃圾邮件分类快速理解机器学习中的朴素贝叶斯(Naive Bayes)
  2. 曲面屏敲代码飞起,包邮送到家!
  3. Spring事务的那些坑,这里都给你总结好了!
  4. 蓝桥杯练习系统习题-算法训练2
  5. 图片按钮ImageButton
  6. 杭电1180java实现(bfs)
  7. jquery入门(一)
  8. php unset 多可以什么_PHP unset() 详解
  9. 当 K8s 集群达到万级规模,阿里巴巴如何解决系统各组件性能问题?
  10. SpringCloud 应用在 Kubernetes 上的最佳实践 — 诊断(线上联调)