让自己的vim丰富起来

参考链接:http://codingpy.com/article/vim-and-python-match-in-heaven/

首先给大家推荐一个技术网站,里面的文章我个人认为写的很好(编程派)。

    在编程工具方面,我用过nodepad++,sublime, pycharm等等,现在主要使用pycharm,毕竟IDE集成方便,省了不少烦恼。换了在OS 工作之后,总是需要用vim操作,因为很多操作、快捷键什么的,都不懂用起来很笨拙。但是vim的配置确实是初学者有点头疼,所以,今天特意整理一下,仅供参考,具体的大家可以去原作者那里看看。

一、vim的基本操作

普通模式下:

(1)、^符号可以回到行首,$可以回到行尾

(2)、G可以回到文章末尾,gg可以回到文章首部

(3)、D可以删除单个字符,dd可以删除整行

(4)HJKL分别表示左下上右

其他的,请读者自行google,看看youtube上的教学视频,学的更快

二、修改配置文件

1、查看是否已安装vim

vim --version

如果已经安装,会出现如下的情况:

在这一步,需要保证下面两点要求:

(1)、vim编辑版本应该大于7.3

(2)、支持python语言,你可以搜索一下,确保有python

2、OSX上面vim的安装,首先保证你已经安装了homebrew

brew update

brew install vim

其他系统,请自行google

3、vim的扩展

vim可以通过扩展使vim获得现代集成开发环境的特性,而vim的扩展通常也被成为bundle或者插件

vundle

vim有多个扩展管理器,但是文章推荐vundle。可以把它想象成vim的pip。有了它,安装和更新包就很容易了,安装命令,前面是git地址,后面是本机文件夹

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

该命令将下载vundle插件管理器,并将它放置在你的vim编辑器bundles文件夹中。然后我们就可以通过.vimrc(~/.vimrc)管理我们的扩展了。然后把下面的vundle配置添加到.vimrc中

set nocompatible     " required

filetype off     " required

" set the runtime path to include Vundle and initialize

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

call vundle#begin()

" alternatively, pass a path where Vundle should install plugins

"call vundle#begin('~/some/path/here')

" let Vundle manage Vundle, required

Plugin 'gmarik/Vundle.vim'

" Add all your plugins here (note older versions of Vundle used Bundle instead of Plugin)

" All of your Plugins must be added before the following line

call vundle#end() " required

filetype plugin indent on " required

这样就完成了vundle前的设置。之后,就可以在配置文件中添加希望安装的插件,然后通过vim命令打开Vim编辑器,运行下面的命令:

:PluginInstall

这个命令告诉vundle自动下载所有的插件,并为你进行安装和更新

三、打造IDE

1、代码折叠

在.vimrc中添加下面的代码

" Enable folding

set foldmethod=indent

set foldlevel=99

这样,手动输入za来折叠(和取消折叠)。不过,使用空格键会是更好的选择。所以可以在配置文件中加上下面的话

" Enable folding with the spacebar

nnoremap za

折叠有专门的插件,加上下面的代码

Plugin 'tmhedberg/SimpylFold'

⚠️:记得执行:PluginInstall

2、代码缩进

我们希望vim中的缩进能做到下面两点:

》首先,缩进要符合PEP8标准

》其次,更好地处理自动缩进

要支持pep8,需要在配置文件里面加上如下的配置:

au BufNewFile,BufRead *.py

\ set tabstop=4

\ set softtabstop=4

\ set shiftwidth=4

\ set textwidth=79

\ set expandtab

\ set autoindent

\ set fileformat=unix

这些配置将让vim中的tab键就相当于4个标准的空格符,确保每行代码长度不超过80个字符,并且会以unix格式储存文件。

另外,对于全栈开发,可以设置针对每种文件类型设置au命令:

au BufNewFile,BufRead *.js, *.html, *.css

\ set tabstop=2

\ set softtabstop=2

\ set shiftwidth=2

3、自动缩进

Plugin 'vim-scripts/indentpython.vim'

4、标示不必要的空白字符

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

这会将多余的空白字符标示出来,很可能会将他们变成红色突出

4、支持UTF-8

set encoding=utf-8

5、自动不全

支持python自动补全的最好的插件是YouCompleteMe。使用vundle安装:

Bundle 'Valloric/YouCompleteMe'

YouCompleteMe插件其实底层使用了一些不同的自动补全组件。另外要安装一些C库才能正常工作,插件官方文档提供了很好的安装指南,请读者按步骤安装。

安装完成后,还需要一些调整:

let g:ycm_autoclose_preview_window_after_completion=1

map g :YcmCompleter GoToDefinitionElseDeclaration

6、支持virtualenv虚拟环境

"python with virtualenv support

py << EOF

import os

import sys

if 'VIRTUAL_ENV' in os.environ:

     project_base_dir = os.environ['VIRTUAL_ENV']

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

    execfile(activate_this, dict(__file__=activate_this))

EOF

7、语法高亮/检查

Plugin 'scrooloose/syntastic'

Plugin 'nvie/vim-flake8'

let python_highlight_all=1

syntax on

8、配色方案

Plugin 'jnurmine/Zenburn'

Plugin 'altercation/vim-colors-solarized'

if has('gui_running')

    set background=dark

    colorscheme solarized

else

    colorscheme Zenburn

endif

上面安装的solarized方案同时提供了暗色调和轻色调两种主题,可以设置F5作为切换按钮

call togglebg#map("F5")

9、文件浏览

如果想要一个不错的文件树形结构,可以使用NERDTree

Plugin 'scrooloose/nerdtree'

Plugin 'jistr/vim-nerdtree-tabs'

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

10、超级搜索

想要在vim中搜索任何文件,可以使用ctrlP插件,使用ctrl+P就可以搜索

Plugin 'kien/ctrlp.vim'

开启显示行号:

set nu

11、要在vim中执行基本的git 命令,可以使用vim-fugitive插件

Plugin 'tpope/vim-fugitive'

11、Powerline状态栏

powerline是一个状态栏插件,可以显示当前的虚拟环境、git分支、正在编辑的文件等信息

Plugin 'Lokaltog/powerline', {'rtp': 'powerline/bindings/vim/'}

12、系统剪切板

可以通过下面的代码访问你的系统剪切板

set clipboard=unnamed

13、shell开启vim编辑模式

可以在~/.inputrc中添加下面的代码

set editing-mode vi

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,761评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,953评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,998评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,248评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,130评论 4 356
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,145评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,550评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,236评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,510评论 1 291
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,601评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,376评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,247评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,613评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,911评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,191评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,532评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,739评论 2 335

推荐阅读更多精彩内容

  • 一、前言 环境: ubuntu16.04 vim7.4 python3.5 最终效果预览 如果想充分地利用好本文,...
    MiracleJQ阅读 4,454评论 0 11
  • 安装依赖库(支持Python 3、Lua、Ruby) sudo apt-get install libncurse...
    Cyfeng阅读 2,090评论 0 2
  • 主要为大家介绍一下vim的安装、配置及python3开发环境配置,文中经验一部分取自网上,一部分为自己的经验。希望...
    zhengjie阅读 13,336评论 6 35
  • macvim配置 最终效果如下: 系统环境 macos10.12.4 homebrew1.2.1 python3....
    Like_eb56阅读 69,180评论 5 65
  • 俗话说,想要学会Java不是那么容易,当然也不是那么的难;首先我们肯定要下载一个Jdk; 1:要下载jdk...
    _4444qx_阅读 182评论 0 0