Як поділитися конфігурацією між 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 ), здається, не працюють належним чином. Я не можу завантажити власні кольорові кольори, ані vim-airline.


1
ви можете використовувати if has('nvim')для nvim тільки команди
wizzup

Відповіді:


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.vimдля Windows.

Кредит відноситься до 👉 цього

ура! 🍻
Кріс


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
Це завжди було необхідно in vim. Ймовірно, nvim встановлює це за замовчуванням, і саме тому він працює там.
Крістіан Брабандт

1
@ChristianBrabandt так, звичайно , ви в порядку.
мастило

Я вважаю, що зазвичай люди будуть ~/.vimrcрозташовані в домашній папці, як і попередній рядок, що вказує на ~/.vim.
Конрад

Краще дотримуватися іншої відповіді , щоб можна було мати 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, і зробити конф сумісний з 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справжній файл використовується як конф. ~/.vim/vimrcце лише посилання на нього.

Тепер нам потрібно зробити vimповторно використовувати nvimдиспетчер плагінів, плагінів, змінивши runtimepathі packpath. Насправді шляхи плагінів повторно використовуються автоматично, наступне виправлення - повторне використання керованих плагінів.

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


1

Просто додати відповідь на ipatch, що є правильною відповіддю, якщо у вас дещо інша настройка від Vim, можливо, вам знадобиться адаптувати шлях.

Наприклад, в Windows, а не використовувати конфігурацію за замовчуванням з:

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

Я використовую:

$HOME
   +--vimfiles
          +--vimrc

(Причини полягають у тому, що простіше поставити один каталог під контроль редакції, ніж файл і каталог, особливо коли файл знаходиться в корені домашнього каталогу)

Потім для мене працює наступне:

set runtimepath^=~/vimfiles runtimepath+=~/vimfiles/after
let &packpath=&runtimepath
source ~/vimfiles/vimrc
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.