vim之python编辑器打造全攻略

寵の児 提交于 2019-12-25 22:15:17


为了简便地在ssh上编辑Python,学习了vim使用及其Python编辑配置,以及在配置过程中出现的一些问题。使用环境是ubuntu Server 18.04 LTS。

参考的文章

这几个人的文章给了我极大的帮助,特别是1和2:
1、再见紫罗兰的 【使用vim打造自己的python编辑器
2、Awakenedy 的 【Vim与Python真乃天作之合:打造强大的Python开发环境
3、weixin_34186128 的 【在Ubuntu 16.04 LTS 下用Vim 打造自己的Python IDE 问题总结】自我摸索了很久,搞定了很多坑才发现有这篇文章,早点没发现,浪费了多少时间啊。但是这篇文章中每个代码片段后面都有莫名其妙的数字,删掉即可。
4、54Fire的【安装YouCompleteMe
配置参阅上述文章即可,在此不在赘述

还需注意的几个问题

1、本文配置主要是python,其他语言可能有所区别,在查阅资料过程有人提到c++的配置,特别是YouCompleteMe插件有区别。
2、YouCompleteMe建议不要使用Vundle插件管理器 来安装,可先手动安装后再配置。因为youcompleteme实在是太慢了,而且经常断掉。断掉就rm后重来。手动安装请参阅54Fire的【安装YouCompleteMe】。注意有的命令中需要空格,不要完全复制,复制来的有些命令没有空格。复制我贴的代码没问题:)
3、在手动安装youcompleteme过程中,必须先安装好Vundle插件管理器,同时准备好工具:

sudo apt-get install build-essential cmake
sudo apt-get install python-dev python3-dev

再进行安装步骤

cd .vim/bundle
git clone https://github.com/Valloric/YouCompleteMe.git
cd YouCompleteMe
git submodule update --init --recursive
./install.py --clang-completer

git submodule update --init --recursive 这个也比较慢,但是仍然比用Vundle插件管理器来安装块的多的多,而且最关键的是,你可以看得安装步骤,起码知道安装过程是不是活的。

我的配置

我对上述的文章在配置文件 .vimrc中进行了归类,插件安装和配置分开,并归类,更加直观方便。

"============开始设置Vundle插件管理,用来管理其他插件==============
set nocompatible              " be iMproved, required
filetype off                  " required
 
" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
 
" let Vundle manage Vundle, required
Plugin 'VundleVim/Vundle.vim'
"安装牛的自动补全插件YouCompleteMe
Plugin 'Valloric/YouCompleteMe' 
"安装python自动缩进插件
Plugin 'vim-scripts/indentpython.vim'
"安装syntastic插件,每次保存文件时Vim都会检查代码的语法:
Plugin 'vim-syntastic/syntastic'
"添加flake8代码风格检查:运行F7就可以进行flake8检查:
Plugin 'nvie/vim-flake8'
"solarized配色方案
Plugin 'altercation/vim-colors-solarized'
"Zenburn配色方案
Plugin 'jnurmine/Zenburn'
"添加树形目录nerdtree插件
Plugin 'scrooloose/nerdtree'
"添加树形目录nerdtree的git支持插件
Plugin 'Xuyuanp/nerdtree-git-plugin'
"添加树形目录nerdtree的tab键插件
Plugin 'jistr/vim-nerdtree-tabs'
"添加美化状态栏vim-powerlien插件,可以显示当前的虚拟环境、Git分支、正在编辑的文件等信息
Plugin 'Lokaltog/vim-powerline'
"缩进指示线插件,个人觉得python必备
Plugin 'Yggdroot/indentLine'
"安装vim-autopep8插件。自动格式化工具,安装后运行:Autopep8就可以自动依照pep8的标准自动格式化代码。先要安装pep8
Plugin 'tell-k/vim-autopep8'
"安装自动补全括号和引号插件auto-pairs
Plugin 'jiangmiao/auto-pairs'
"搜索插件ctrlp.vim,在vim normal模式下,按下ctrl+p,然后输入你要寻找的文件
Plugin 'kien/ctrlp.vim'

" All of your Plugins must be added before the following line
call vundle#end()            " required
filetype plugin indent on    " required

"------------YouCompleteMe插件相关设置--------------
let g:ycm_min_num_of_chars_for_completion = 2  "开始补全的字符数
let g:ycm_python_binary_path = 'python'  "jedi模块所在python解器路径
let g:ycm_seed_identifiers_with_syntax = 1  "开启使用语言的一些关键字查询
let g:ycm_autoclose_preview_window_after_completion=1 "补全后自动关闭预览窗口
"代码跳转:转到定义快捷方式
nnoremap <leader>jd :YcmCompleter GoToDefinitionElseDeclaration<CR> 
"YCM开关
let g:ycm_auto_trigger = 0   "turn off
let g:ycm_auto_trigger = 1   "turn on

"-------------配色方案插件相关设置----------------
"solarized有dark和light两种配色,配置:
"syntax enable
"set background=light or dark
"colorscheme solarized
"根据GUI和终端自动判断,代码如下:
if has('gui_running')
  set background=dark
  colorscheme solarized
else
  colorscheme zenburn
endif

"------------树形目录nerdtree插件设置--------------
"开关快捷键
map <C-n> :NERDTreeToggle<CR>
"设置忽略.pyc等文件:
let NERDTreeIgnore=['\~$', '\.pyc$', '\.swp$']

"-----------缩进指示线插件indentLine设置-----------
"开关命令->:IndentLinesToggle

"-----------vim-autopip8插件设置-------------------
autocmd FileType python noremap <buffer> <F8> :call Autopep8()<CR>
"
"===================插件管理安装结束===================


"#vim配置做些简单的配置:
set nocompatible "关闭与vi的兼容模式
set number "显示行号
set nowrap    "不自动折行
set showmatch    "显示匹配的括号
set scrolloff=3        "距离顶部和底部3行"
set encoding=utf-8  "编码
set fenc=utf-8      "编码
"set mouse=a        "启用鼠标
set hlsearch        "搜索高亮
syntax on    "语法高亮
"set clipboard=unnamed   "在OS X平台上启用系统剪贴板

"为py文件添加下支持pep8风格的配置:
au BufNewFile,BufRead *.py
\ set tabstop=4 |   "tab宽度
\ set softtabstop=4 | 
\ set shiftwidth=4 |  
\ set textwidth=79|  "行最大宽度
\ set expandtab |       "tab替换为空格键
\ set autoindent |      "自动缩进
\ set fileformat=unix |   "保存文件格式
"同理,添加全栈开发的文件类型,vim可根据文件类型自动判断
au BufNewFile,BufRead *.js, *.html, *.css
\ set tabstop=2 |
\ set softtabstop=2 |
\ set shiftwidth=2 |
"标示不必要的空白字符:这会将多余的空白字符标示出来,很可能会将它们变成红色突出。
"highlight BadWhitespace ctermbg=red guibg=darkred
hi BadWhitespace guifg=gray guibg=red ctermfg=gray ctermbg=red
au BufRead,BufNewFile *.py,*.pyw,*.c,*.h match BadWhitespace /\s\+$/

"让新窗口在鱼变或者下方打开:
set splitbelow
set splitright

"粘贴模式的F3快捷键:选择自动缩进后,如果从别处拷贝了一大段代码,粘帖的时候也会自动缩进,这肯定不符合需求,解决的方法可以手动处理或自动处理。
set pastetoggle=<F3>

"在窗口之间切换可以用鼠标,如果不想用鼠标,切换按键如下:
"Ctrl-w-j 切换到下方的分割窗口
"Ctrl-w-k 切换到上方的分割窗口
"Ctrl-w-l 切换到右侧的分割窗口
"Ctrl-w-h 切换到左侧的分割窗口
"按键映射
nnoremap <C-J> <C-W><C-J>
nnoremap <C-K> <C-W><C-K>
nnoremap <C-L> <C-W><C-L>
nnoremap <C-H> <C-W><C-H>

"代码折叠:使用zc按键来创建折叠,使用za来打开或者关闭折叠。za经常会误输入,可以用空格键来替代za:
set foldmethod=indent
set foldlevel=99
nnoremap <space> za

"一键执行python3
map <F5> :call RunPython()<CR>
func! RunPython()
    exec "W"
    if &filetype == 'python'
        exec "!time python3 %"
    endif
endfunc
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!