把vim配置成顺手的python轻量级IDE(一)
admin
2023-07-30 20:47:53
0

网上已经有很多很好的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  :Autopep8 :w :call RunPython()
    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\'

Vundle

杀手级插件。这是唯一一个需要手动安装的插件。有了这个,安装其他插件就方便很多。

  • 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!就代表所有插件安装完成啦!

    插件安装界面

YouCompleteMe

杀手级插件。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         pumvisible() ? \'\' : \'\\\'     
    \"上下左右键行为\"
    inoremap       pumvisible() ? \'\\\' : \'\\\'
    inoremap         pumvisible() ? \'\\\' : \'\\\'
    inoremap   pumvisible() ? \'\\\\\\\' : \'\\\'
    inoremap     pumvisible() ? \'\\\\\\\' : \'\\\'

vim-powerline

用于美化状态栏,原生的状态栏略丑而且显示的信息很少,因此这款好看又实用的状态栏就派上用场啦。开箱即用,方便快捷。


Normal模式


Insert模式

至于官网上的三角形效果需要安装额外的字体,笔者表示折腾很久没配置成功,而就这样不影响使用,视觉效果也还不错,因此就懒得折腾了。

NERDTree

给vim添加一个树形目录,更方便的查看和切换文件。


NERDTree

  • .vimrc中的配置:
    \"F2开启和关闭树\"
    map  :NERDTreeToggle
    let NERDTreeChDirMode=1
    \"显示书签\"
    let NERDTreeShowBookmarks=1
    \"设置忽略文件类型\"
    let NERDTreeIgnore=[\'\\~$\', \'\\.pyc$\', \'\\.swp$\']
    \"窗口大小\"
    let NERDTreeWinSize=25

indentLine、vim-autopep8

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

这两款插件让写代码更方便。auto-pairs主要功能是括号和引号自动补全,输入左引号和左括号自动补全另外一半。
nerdcommenter和上面的NERDTree是同一作者,主要功能是方便的写注释具体用法请参考项目主页。需要注意的是nerdcommenter的leader默认为”\\“,一般可以用下面的命令更改:

let mapleader=\',\'

一般IDE和很多编辑器都提供command+/快速添加(取消)注释,但是vim添加注释和取消注释需要不同的快捷键,而且多行注释就是泪啊,各种折腾后发现了nerdcommenter的ci命令,只需要在.vimrc文件中添加一条设置就可以一键注释和反注释:

map  ci 

多行注释只需要在normal模式下按v并移动光标选择需要注释的行,再按F4就可以为所有选中的行添加注释。

结语

至此,所有配置结束,就可以用vim愉快的和python玩耍啦。

水平有限,如有错误,欢迎指正。

相关内容

热门资讯

Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
Apache Doris 2.... 亲爱的社区小伙伴们,我们很高兴地向大家宣布,Apache Doris 2.0.0 版本已于...
python清除字符串里非数字... 本文实例讲述了python清除字符串里非数字字符的方法。分享给大家供大家参考。具体如下: impor...