用于 Python 的 Vim 自动完成
Vim(Vi Improved的缩写)是一款功能强大的文本编辑器,常被作为Python开发环境的首选。本文将探讨Vim及其用于Python的自动补全功能。
Vim和Python
Vim在全球开发者中一直存在,并以其持续不断的技术进步而闻名。Vim遵循一种关于功能的特定思想,最好用"键盘的效率"来解释。
这意味着Vim的设计理念是,就像一个用笔和纸的作家一样,软件开发者应该能够高效地编写代码,而不被其他琐事干扰,比如滚动或查找选项等。对于开发者来说,键盘就是他们的笔。
Vim采用结构化的命令语言,最初在其中操作可能会令人生畏。在真正掌握在像Vim这样的无干扰环境中进行编程的艺术之前,确实需要熟悉许多键盘命令。
然而,这些命令存在于一个逻辑且易于理解的堆栈中,这使得我们更快地适应它们。
Vim的特点
Vim和Python组合起来是一个强大的工具,是许多软件开发者的首选。
Vim易于设置为一个集成开发环境(IDE),提供了许多插件。这些插件可以帮助软件开发者定制Vim,并创建最适合其开发需求的环境。
尽管本文无法涵盖所有可用功能来充分利用Vim作为IDE的功能,但我们可以列出一些最受欢迎的功能:
-
分割布局: 我们可以使用命令
sp <文件名>
在当前文件下方打开一个新文件。 - 代码折叠: 我们可以折叠那些在当前阶段不需要完整查看的类或方法。
- 缓冲区: Vim通过缓冲区方便我们访问最近打开的文件。只需使用b <缓冲区名称或编号>打开文件,使用ls列出所有缓冲区。
- UTF-8支持: 我们可以通过设置UTF-8编码来确保Vim使用UTF-8。可以使用以下脚本进行设置:set encoding=utf-8。
-
标记不必要的空格: 在使用类似Vim这样的编辑器时,开发过程中可能会出现额外的空格。我们可以让Vim标记这些空格,以便轻松发现并删除它们。
au BufRead,BufNewFile *.py,*.pyw,*.c,*.h match BadWhitespace /\s\+$/
-
自动缩进: 在使用Python作为开发语言时,缩进是开发阶段的关键部分。自动缩进功能帮助开发者不必过多担心由于额外或无缩进而导致的错误。
有时,当方法的定义超过一行时,自动缩进可能不起作用。我们可以通过设置indentpython.vim来解决这个问题:
Plugin 'vim-scripts/indentpython.vim'
-
语法检查: 任何现代IDE的一个标志就是它能够保持对任何开发语言的语法检查。我们可以通过添加语法插件和flake8插件来为Vim设置语法检查,以添加pep8功能。
Syntactic插件:
Plugin 'vim-syntastic/syntastic'
Plugin 'nvie/vim-flake8' #添加pep8
- PEP8: 我们可以设置Vim的pep8检查,以保持编码标准的审查。
Vim的Python自动补全
实现Python自动补全的最佳插件是YouCompleteMe。虽然YouCompleteMe使用了其他各种自动补全库(如Jedi),但它是目前最适合最新Python版本的插件。
我们可以使用Vundle在我们的环境中安装和设置YouCompleteMe,如下所示:
Bundle 'Valloric/YouCompleteMe'
关于所有操作系统类型的完整安装说明可以在详尽的文档中找到。
下面是在64位Linux系统上进行设置的步骤:
-
首先,运行以下命令安装所有的自动补全包。下面的命令将通过Vundle安装YCM插件,CMake、Vim和Python。如果您已经安装了这些包,它们将不会被重新安装。
apt install build-essential cmake vim-nox python3-dev
-
接下来,使用以下命令安装mono-complete、go、node、java和npm:
apt install mono-complete golang nodejs default-jdk npm
-
现在,我们只需编译YCM,方法如下:
cd ~/.vim/bundle/YouCompleteMe python3 install.py --all
安装过程非常简单,但我们可以进行自定义配置,如下所示:
let g:ycm_autoclose_preview_window_after_completion=1
map <leader>g :YcmCompleter GoToDefinitionElseDeclaration<CR>
这个脚本确保一旦完成自动补全,窗口就会关闭,并在脚本的第二行创建一个GoTo定义的快捷方式。
相关文章
Python 数独求解器
发布时间:2023/06/21 浏览次数:187 分类:Python
-
本文介绍了我们如何使用 Python 来解决数独问题。 通过适应回溯算法,它可以作为一个准确的数独解算器。
Python Quine 介绍
发布时间:2023/06/21 浏览次数:167 分类:Python
-
一个Quine是一个产生其源代码作为输出的计算机程序。Quine很有趣,因为它们似乎违背了编程的目的,即根据输入生成输出。运行Python Quine
Python 复利计算器
发布时间:2023/06/21 浏览次数:172 分类:Python
-
Python是用于金融分析的优秀语言,其中之一是可以使用Python计算复利。复利是指利息不仅仅在本金(原始金额)上支付,还包括已累计的利息。本文将讨论Python复利函数。
Python中内存缓存的使用
发布时间:2023/06/21 浏览次数:171 分类:Python
-
本文将讨论准备内存缓存操作和主要的 Memcached 用法。 它还将讨论使用 Python 缓存和设置的高级模式。
Python 缓存库
发布时间:2023/06/21 浏览次数:197 分类:Python
-
Python 缓存库是必不可少的,因为它允许系统管理缓存。 缓存库可以通过提供一种访问缓存数据和管理缓存的方法来帮助提高系统性能。
管理 Python 依赖项
发布时间:2023/06/20 浏览次数:110 分类:Python
-
使用 Python 的挑战之一是管理依赖项。 在本文中,我们将讨论和学习 Python 依赖项的管理。
Python 中的语言检测
发布时间:2023/06/20 浏览次数:66 分类:Python
-
本文介绍了我们如何使用 Python 检测语言。 我们可以使用库或 API、语言模型和语言交叉集。 在 Python 中检测语言时,使用 Python 库是一种常用的技术。
在 Python 中创建 SFTP 功能
发布时间:2023/06/20 浏览次数:99 分类:Python
-
本文向您展示如何在 Python 中使用 SFTP 来移动数据和文件。使用 pysftp 在 Python 中创建 SFTP 功能
Python 中的 sscanf() 功能
发布时间:2023/06/20 浏览次数:180 分类:Python
-
这篇 Python 文章将使您更好地理解 sscanf() 必须提供什么以及我们如何在 Python 脚本中模仿它。Python 中的 sscanf() 功能