mac vim with python3_一文配置全面而强大的vim

▼更多精彩推荐,请关注我们▼

开发工作中往往会用到Linux系统,如果直接使用桌面版还好,但是如果使用putty或MobaXterm此类工具远程服务器必然会少不了和vim打交道,如果在windows下开发好再用sftp或git、svn远程到服务器需要多余的操作比较麻烦,合理利用vim能够极大提高开发效率。推荐理由:丰富而高效的命令;简单、便捷;配合插件能够自动补全、自动缩进等,而且对于Python第三方库的补全速度远超vs code等IDE;

1f728e6acfb50851b8b095392f272e2f.gif

常用命令

我觉得vim命令是一个让人又爱又恨的东西,突然从Windows下的鼠标操作切换到vim的Linux操作会感觉很不方便,有的时候甚至会误操作导致很大的坑。但是用习惯后再回到window下回发现会不自觉的使用这些命令,可见,这些命令的确带来了便携性,vim命令有很多,一下子也记不完,这里我就总结一些我个人常用的命令。

注释

手动输入注释符:

1单行注释:可以直接在行前添加注释符比如 #2多行注释:ctrl+v 进入视图模式, 然后shift+i,输入注释符,最后按Esc

也可以使用替换命令,详细的请看第3条:

1# 注释,以Python为例2:m,ns/^/#/g                     # 注释m到n行3# 解除注释4:m,ns/^#//g      5# 注释整个文档6:1,$s/^/#/g7# 还有更高效快速的方法8:%s/^/#/g
多窗口

写代码过程中要打开多个窗口,如果反复关闭开启会很麻烦,vim可以使用多窗口

直接打开多个文件:

1# 纵向分割窗口2vim -On file1 file2 ...3# 横向分割窗口4vim -on file1 file2 ...

已经打开一个文件之后再大开一个文件:

1# 可以打开本地文件2:e file  3# 也可以打开远程文件4:e ftp://host/*

多窗口切换文件:

1下一个文件:bn2上一个文件:bp

在另一窗口分割打开文件:

1:split file

多窗口之间的切换:

1# 依次切换2ctrl+w+w         # 双击w3# 指定方向切换4先ctrl+w,按上下左右键选择

调整窗口尺寸:

1# 增大或减小窗口宽度2ctrl+w,     # 也可以ctrl+w, n,    其中n是增大或减小的n行3# 增大或减小窗口高度4ctrl+w, +\-    # 也可以ctrl+w, n,+\-    其中n是增大或减小的n列
查找与替换
 1# 查找字符串 2/str 3 4# 替换 5# 替换当前行,其中g是替换标志,代表global的意思,也可以换成c:需要确认;i:大小写不敏感;I:大小写敏感 6:s/old/new/g  7# 全局替换 8:%s/old/new/g 9# 替换特定行10:m,ns/old/new/g11# 选择区域替换12:'>s/old/new/g                #先visual模式下选择要替换的区域 
Shell交互

临时退出:ctrl+z

回到vim:fg

执行shell命令:

1# 命令模式下2:! ls ./ 
插入
 1# 在当前行首插入 2I         # 也就是shift+i 3# 在当前位置行尾插入 4A 5# 在当前字符所在位置插入 6i 7# 在当前字符之后插入 8a 9# 在当前行的前一行插入10O          # shift+ o11# 在当前行的后一行插入12o
撤销和重做
1# 撤销操作2u 3# 撤销对整行的操作4U5# 重做(把撤销的动作撤销)6ctrl+r
移动
1# 移动到文本头部 2gg 3# 移动到尾部 4G                  #Windows下同shift+g 5# 向前移动一个单词 6w                   # 2w移动两个单词 7# 向后移动一个单词 8b 9# 移动到行首10011# 移动到行尾12$13# 移动到段落头部14(15# 移动到段落尾部16)17# 将当前行移动到屏幕中间18zz19# 到屏幕尾行20L21# 到屏幕中间22M23# 到屏幕首行24H
对比差异

这一点和beyond compare类似:

1vim -diff file1 file2

属性设置

可以对vim属性设置,使得每次打开vim时都能起作用,基本的属性设置比如高亮、缩进等,先贴上我的设置:

  • 进入home路径下

1cd ~
  • 创建.vimrc文件

1touch .vimrc2vim .vimrc
  • 粘贴以下内容

1set nocompatible 2set number 3set ic 4set hlsearch 5set encoding=utf-8 6set fileencodings=utf-8,ucs-bom,GB2312,big5 7set autoindent 8set smartindent 9set scrolloff=210set showmatch11set shiftwidth=412set tabstop=413set showmatch14set cursorline15set autoread16syntax on

这样保存退出后就生效了,网上有很多这一类的教程,创建.vimrc的作用是保证每次启动vim都可以起作用。

插件

工欲善其事必先利其器,无论是做Python还是c++开发,如果有一个好的IDE,那么效率将会得到大大的提升,如果想把vim用于轻量级IDE,那么插件是必不可少的,以下以vim配置Python3为例。

检查vim版本是否符合
1vim --version

在输出的信息检查以下是否有'+python3'字眼,如果没有说明vim版本太低不支持,需要卸载重新安装vim。

安装Vundle插件管理器

vim插件管理器有很多,vundle、vim-plug、pathogen、vim addon manager等等,每一个都用过,也都对比过,vundle在高阶插件方面的确存在不足,但是基本使用大同小异,我觉得满足我使用足够了,而且我觉得使用比较简洁方便,各位看到的可以根据自己的需求选择插件管理器。

个人认为Vundle 就如同maven之于Java、npm之于js、pip之于Python,安装了Vundle后方便后续安装插件。

首先克隆到指定目录:

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

其次在vimrc中加入如下内容:

1set nocompatible              " required 2filetype off                  " required 3" set the runtime path to include Vundle and initialize 4set rtp+=~/.vim/bundle/Vundle.vim 5call vundle#begin() 6" alternatively, pass a path where Vundle should install plugins 7"call vundle#begin('~/some/path/here') 8" let Vundle manage Vundle, required 9Plugin 'gmarik/Vundle.vim'10" Add all your plugins here (note older versions of Vundle used Bundle instead of Plugin)11121314" All of your Plugins must be added before the following line15call vundle#end()            " required16filetype plugin indent on    " required

上述 Add all your plugins here ( note older versions of Vundle used Bundle 

instead of Plugin)下面的一段空白处是用于添加其他插件。

YouCompleteMe

首推YouCompleteMe,这个插件用于自动补全,速度补全速度可以达到pycharm的级别,简单的安装方式在vimrc中加入下面语句:

1Plugin 'Valloric/YouCompleteMe'

保存退出重新打开,在命令模式下输入:PluginInstall即可安装,左下角显示Done!即为完成,可以在紧接着下面添加如下设置:

1let g:ycm_global_ycm_extra_conf = "~/.vim/bundle/YouCompleteMe/cpp/ycm/.ycm_extra_conf.py"2let g:ycm_key_invoke_completion = ''3let g:ycm_min_num_identifier_candidate_chars = 24let g:ycm_goto_buffer_command = 'horizontal-split'5let g:ycm_seed_identifiers_with_syntax=16map  :YcmCompleter GoTo                           # 按F2跳转到定义处7let g:ycm_error_symbol = '>>'8let g:ycm_warning_symbol = '>*'

但是由于网络等问题,上述方式往往会发生失败,因此,可以选择源码安装的方式,由于比较麻烦,所以详细介绍一下,

  • 进入目录

1cd ~/.vim/bundle
  • 克隆源码

1./install.py需要克隆,不能直接下载zip压缩包2git clone https://github.com/Valloric/YouCompleteMe.git
  • 进入目录执行下面命令

1cd YouCompleteMe2git submodule update --init --recursive
  • 安装

安装支持Python的版本,

1./install.py

安装支持C语言家族的版本:

1./install.py --clang-completer

安装支持go语言的版本:

1./install.py --go-completer

安装支持Js、Java、Python、go所有语言的版本:

1./install.py --all
Autoformat

Autoformat这是一个自动格式化代码的工具,事先需要安装pep8:

1pip install autopep8

其次在vimrc空白处添加:

1Plugin 'Chiel92/vim-autoformat'2nnoremap  :Autoformat   # 按F6自动格式化3let g:autoformat_autoindent = 04let g:autoformat_retab = 05let g:autoformat_remove_trailing_spaces = 0
nerdtree

nerdtree这是一个目录树插件,可以给代码添加目录:

1Plugin 'https://github.com/scrooloose/nerdtree'2nnoremap  :NERDTreeToggle                          # 按F3显示或隐藏目录3autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif
indentLine

indentLine是一个缩进线插件,对于Python这种缩进要求很严格的语言来说很重要:

1Plugin 'Yggdroot/indentLine'2let g:indentLine_char='┆'3let g:indentLine_enabled = 1

保存并退出,重新进入vim,命令模式下输入:PluginInstall

snippets

这是一个代码块补全插件,和YCM有本质区别,snippets补全代码中常用的模块,比如Python中的main模块,

1if __name__ == '__main__':

只需要输入main即可补全,

1Plugin 'honza/vim-snippets'2Plugin 'github.com/SirVer/ultisnips'

注意:把上述内容添加到vimrc后需要关闭后重新打开,在命令模式下输入:PluginInstall,也可以用:Plugin '插件',例如:Plugin 'Yggdroot/indentLine'

1f728e6acfb50851b8b095392f272e2f.gif

d0b76ba0e162c7ffe29b3d992179e8e3.png

扫码关注我们!

 往期回顾 

◀Python调试神器之PySnooper

◀学习资源:图像处理从入门到精通

◀一文教你配置得心应手的Python

·end·

—如果喜欢,快分享给你的朋友们吧—

我们一起愉快的玩耍吧

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值