如果您是系统管理员或软件开发人员,那么你每天都需要使用的工具中一定有一种强健的文本编辑器。您很可能已经使用过vi或vim编辑器,它们已经在Unix和Linux社区中用了几十年了。
虽然vim仍然是处于活跃开发的状态,但它已经包含了大约30万行的C89编码代码。因为Bram Moolenaar是唯一维护其大型代码库的人了,所以现在的vim除了难以维护之外,其问题和新的代码合并取请求都无法很快解决。
由于这些难题和缺乏对如异步插件等所需功能的支持,这促使NeoVim成为vim的一个分支。该项目的主要目标是完全重构vim,以便简化维护,并且实现快速添加新特性并将bug修复添加到源代码中。
在NeoVim分支后的短时间中,其已经实现了两个突出的特性:异步插件和用于编程实现控制NeoVim的远程调用(RPC)API。
异步插件可以在不干扰主编辑器进程的条件下就实现插件后台运行。
RPC API允许GUI图形界面程序(以及使用msgpack-rpc消息传递协议的其他软件)连接到正在运行的NeoVim实例。这意味着您可以将Atom、Visual Studio Code和Sublime Text这样众所周知的文本编辑器与NeoVim集成,并在它们之间进行双向同步修改。以这种方式,您就可以在使用nvim进行远程调用来利用GUI程序的所有特性。
本文将详细说明NeoVim的安装和配置,同时说明两个异步插件nvim-completion-manager
和far.vim
。
sudo
来实现命令。完成“ 保护您的服务器 ”部分以创建标准用户帐户。sudo yum install epel-release -y
sudo yum install wget fuse fuse-libs git ack python34-pip -y
- 在Debian,Ubuntu及其衍生版本中:
sudo apt-get install fuse libfuse2 git python3-pip ack-grep -y
在本教程中,我们通过下载appimage来安装NeoVim,这是一个包含应用程序及其依赖项的二进制文件(没有包含FUSE库文件,它们仍需要单独安装)。此方法与Linux版本无关并且其可以提供最新版本的软件包。
请注意,NeoVim appimage目前仅适用于64位系统。如果您使用的是其他架构系统,或者想要查看NeoVim是否可从您的发行版存储库中获得,则可以参考NeoVim wiki中的安装说明。
虽然FUSE库使得appimage可以由非root用户在它们的主目录运行,但我们通常会将其放入/usr/bin
来时的所有用户都可以使用。这将允许用户使用相同的应用程序的同时,进行单独配置以满足他们的特定需求。
output-document
选项将其重命名为nvim
:
wget --quiet https://github.com/neovim/neovim/releases/download/nightly/nvim.appimage --output-document nvim
root
,并使所有用户都可以访问nvim:
chmod +x nvim
sudo chown root:root nvim
/usr/bin
:
sudo mv nvim /usr/bin
cd ~
mkdir -p .config/nvim
为了更方便安装插件,请使用Vim-plug插件管理器。该插件管理器使用git
来管理大多数插件:
curl -fLo ~/.local/share/nvim/site/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
如果您已经拥有vim配置,那么可以将其重用于nvim。虽然vim和nvim可以共享相同的配置文件,但是为了避免在没有为vim配置Vim-plug
时出错,请为vim创建一个单独的配置文件,:
ln -s ~/.vimrc ~/.config/nvim/init.vim
或者以当前目录路径下创建一个单独的配置文件,使用~/.vimrc
:
cp ~/.vimrc ~/.config/nvim/init.vim
启动nvim,输入:
nvim
如果不保存更改就推出,请按ESC键进入命令模式,之后输入:
:q!
nvim-completion-manager是一个快速、可扩展的完整框架,支持各种编程语言和代码段解决方案。其中一些是开箱即用的,而另一些则需要安装额外的Python 3模块才能工作。在本文中,我们将介绍此插件与UltiSnips的合作使用,后者是一个强健的代码段解决方案。
pip3 install --user neovim
~/.config/nvim/init.vim
文件底部添加以下行,以容纳UltiSnips和vim-snippets提供的代码段:PlugInstall
,更新插件,然后退出:
nvim
:PlugInstall
:UpdateRemotePlugins
:q!
:q!
helloworld.py
的.py
的文件:
nvim helloworld.py
按i进入插入模式,然后输入def
。您应该看到一个类似于下图所示的下拉列表。使用键盘上的向上和向下箭头高亮其中一个选项,然后按Tab键。代码段将插入文件的正文中:far-vim是一个用于对一组文件(通常在同一目录中)执行异步搜索和替换操作的插件。
call plug#end()
中~/.config/nvim/init.vim
:PlugInstall
,更新插件,然后退出。重新启动nvim时,该插件将可用:
nvim
:PlugInstall
:UpdateRemotePlugins
:q!
:q!
Far.vim
,请创建一个名为myproject
的目录并在目录中创建两个文件:
mkdir myproject
cd myproject
:Far name nombre .py$ --source=acknvim
nvim窗口将分为两个窗格。左侧显示文件,如果更改应用于当前目录中的所有.py
文件,右侧则显示相应结果。使用Fardo
应用更改(仍处于命令模式):
:Fardo
如果需要撤消更改:
:Farundo
您可能还想看看neomake,一个类似于vim中syntastics的插件。每当你保存更改,syntastucs在检查大文件的语法时,它可能会假死,neomake在不造成任何中断的情况下实现相同功能。
有超过300名开发人员在GitHub中为NeoVim做出贡献,预计该项目将以比过去更快的速度增长。您可以访问官方GitHub,来查看milestones里程碑事件和下一版本的roadmap蓝图。
有关此主题的其他信息,您可能会需要参考以下资源。虽然我们希望提供的资源是有效的,但请注意,我们无法保证外部托管材料的准确性或及时性。