为了简便地在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
来源:CSDN
作者:pyjavacsql
链接:https://blog.csdn.net/m0_46078030/article/details/103705317