如何在Vim和Neovim之间共享配置


23

我开始使用neovim,并将其移动.vimrc.config/nvim/init.vim,其他内容位于.local/share/nvim

在vim和Neovim之间共享配置甚至插件的最佳方法是什么?符号链接?我可以将.vimrc中的目录更改为仅使用一个符号链接吗?

将我的vim配置迁移到Neovim的默认位置后,这似乎几乎可以工作:

ln -s ~/.local/share/nvim/site ~/.vim 
ln -s .config/nvim/init.vim .vimrc

某些插件(使用vim-plug)似乎无法正常工作。我无法加载自定义colorschmes或vim-airline。


1
if has('nvim')只能将命令用于nvim
wizzup'1

Answers:


37

TL; DR

可以使用现有的~/.vimrc,文件和位于其中的插件,~/.vim而无需符号链接文件。

现在,此信息已记录在NeoVim手册中,请参阅从Vim过渡


以下~/.vimrc几行会将现有路径和文件添加到您的nvim设置中。

set runtimepath^=~/.vim runtimepath+=~/.vim/after
let &packpath=&runtimepath
source ~/.vimrc

对于Linux和macOS,只需将以上行添加到~/.config/nvim/init.vim%LOCALAPPDATA%\nvim\init.vimWindows 的顶部。

幸得👉

干杯🍻
克里斯


8

将配置放在Neovim的默认位置,请执行以下操作:

mkdir -p ~/.local/share/nvim/site
ln -s ~/.local/share/nvim/site ~/.vim 
ln -s .config/nvim/init.vim .vimrc

要解决这个色彩方案我不得不设置为 256色终端模式,即添加到您的.vimrc(= init.vim)文件,该文件会被nvim被忽略

set t_Co=256  " Note: Neovim ignores t_Co and other terminal codes.

为了获得vim-airline,我 .vimrc中添加了以下代码段

set laststatus=2

我不明白为什么这只是VIM,而不是在Neovim必要的,但我不是 唯一 一个在这件事情的绊脚石。


1
这在vim中一直是必需的。大概nvim将此设置为默认值,这就是为什么它在这里工作的原因。
Christian Brabandt

1
@ChristianBrabandt是的,您当然对的。
lumbric'7

我认为通常人们会~/.vimrc位于主文件夹中,如前一行所指向~/.vim
Konrad

最好遵循另一个答案,这样一个人就可以拥有nvim特定的配置,同时采购~/.vimrc为共享配置。
ryenus

虽然Neovim忽略了t_xx选项,但我认为用这样的东西包裹起来更正确if !has('nvim'),例如在这个例子中。现在可能会忽略它们,但是如果将来发生变化,该怎么办?它还隐式表明该选项仅与Vim有关。
ZeroKnight

5

您可以使用if has('nvim')。以下是完整的示例:

仅针对Neovim的配置:

if has('nvim')
        tnoremap <Esc> <C-\><C-n>
endif

仅针对Vim的配置

if !has('nvim')
    set ttymouse=xterm2
endif

1

这里的方法尝试符号链接~/.config/nvim~/.vim,并使conf与兼容vim

# nvim conf dir: ~/.config/nvim
# vim conf dir: ~/.vim
# link the 1st as the 2nd with relative links

# Prepare a vimrc file in ~/.config/nvim folder
ln -sf ./init.vim ~/.config/nvim/vimrc

# Link the whole ~/.config/nvim folder as ~/.vim foler
ln -sf ./.config/nvim ~/.vim

设置完成后,~/.config/nvim/init.vim是将实际文件用作conf。~/.vim/vimrc只是一个链接。

现在,我们需要通过更改和来vim使用复用器nvim的插件管理器。实际上,插件路径会自动重用,以下修复方法是重用插件管理器。runtimepathpackpath

let g:is_nvim = has('nvim')
let g:is_vim8 = v:version >= 800 ? 1 : 0

" Reuse nvim's runtimepath and packpath in vim
if !g:is_nvim && g:is_vim8
  set runtimepath-=~/.vim
    \ runtimepath^=~/.local/share/nvim/site runtimepath^=~/.vim 
    \ runtimepath-=~/.vim/after
    \ runtimepath+=~/.local/share/nvim/site/after runtimepath+=~/.vim/after
  let &packpath = &runtimepath
endif

资料来源:在vim和nvim之间共享confs


1

仅添加到ipatch答案(这是正确的答案)中,如果设置与Vim稍有不同,则可能需要调整路径。

例如,在Windows上,而不是通过以下方式使用默认配置:

$HOME
   +--.vimrc
   +--.vim

我在用:

$HOME
   +--vimfiles
          +--vimrc

(原因是,与文​​件和目录相比,将单个目录置于修订控制之下更容易,尤其是当文件位于主目录的根目录时)

然后,以下对我有用:

set runtimepath^=~/vimfiles runtimepath+=~/vimfiles/after
let &packpath=&runtimepath
source ~/vimfiles/vimrc
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.