Cách chia sẻ cấu hình giữa vim và Neovim


23

Tôi bắt đầu sử dụng neovim và chuyển .vimrcđến .config/nvim/init.vimvà những thứ khác được đặt ở .local/share/nvim.

Cách tốt nhất để chia sẻ cấu hình hoặc thậm chí các plugin giữa vim và Neovim là gì? Liên kết? Tôi có thể thay đổi các thư mục trong .vimrc để chỉ sử dụng một symlink không?

Sau khi di chuyển cấu hình vim của tôi đến vị trí mặc định của Neovim, điều này dường như hoạt động gần như:

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

Một số plugin (sử dụng vim-plug ) dường như không hoạt động chính xác. Tôi không thể tải màu sắc tùy chỉnh cũng như vim-hãng hàng không.


1
bạn có thể sử dụng if has('nvim')cho các lệnh chỉ
nvim

Câu trả lời:


37

TL; DR

Bạn có thể sử dụng các ~/.vimrctệp, plugin và plugin hiện có của mình ~/.vimmà không cần phải liên kết các tệp.

Và điều này hiện được ghi lại trong hướng dẫn sử dụng NeoVim, xem phần Chuyển đổi từ Vim .


Các dòng dưới đây sẽ thêm các đường dẫn và ~/.vimrctệp hiện có vào thiết lập nvim của bạn.

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

Đối với Linux và macOS, chỉ cần thêm các dòng trên vào đầu ~/.config/nvim/init.vimhoặc %LOCALAPPDATA%\nvim\init.vimcho Windows.

Tín dụng đi đến 👉 này

chúc mừng 🍻
Chris


8

Để cấu hình của bạn ở vị trí mặc định của Neovim, hãy làm như sau:

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

Để sửa màu sắc , tôi phải đặt thành chế độ màu đầu cuối 256 , tức là thêm phần này vào tệp .vimrc (= init.vim) của bạn, sẽ bị nvim bỏ qua :

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

Để có được vim-Airlines, tôi đã thêm đoạn mã sau vào .vimrc:

set laststatus=2

Tôi hoàn toàn không hiểu tại sao điều này là cần thiết chỉ trong vim và không có trong Neovim, nhưng tôi không phải là người duy nhất một trở ngại khi điều này.


1
Điều này luôn luôn cần thiết trong vim. Có lẽ nvim đặt cái này làm mặc định và đó là lý do tại sao nó hoạt động ở đó.
Christian Brabandt

1
@ChristianBrabandt vâng, tất nhiên bạn đúng.
thắt lưng

Tôi nghĩ rằng mọi người thường sẽ ~/.vimrcnằm trong thư mục nhà, như dòng trước đó chỉ đến ~/.vim.
Konrad

Tốt hơn là làm theo câu trả lời khác , để người ta có thể có cấu hình cụ thể nvim, trong khi tìm nguồn cung ứng ~/.vimrcnhư cấu hình được chia sẻ.
ryenus

Trong khi Neovim bỏ qua t_xxcác tùy chọn, tôi cho rằng sẽ đúng hơn khi bọc thứ gì đó tương tự if !has('nvim'), chẳng hạn như trong ví dụ này . Nó có thể bỏ qua chúng bây giờ, nhưng nếu điều đó thay đổi trong tương lai thì sao? Nó cũng ngầm chỉ ra rằng tùy chọn này chỉ liên quan đến Vim.
ZeroKnight

5

Bạn có thể sử dụng if has('nvim'). Dưới đây là ví dụ đầy đủ:

Cấu hình chỉ dành cho Neovim:

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

Cấu hình chỉ dành cho Vim

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

1

Phương pháp ở đây cố gắng liên kết ~/.config/nvimtới ~/.vimvà làm cho conf tương thích với 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

Sau khi thiết lập này, ~/.config/nvim/init.vimlà tập tin thực sự được sử dụng như conf. ~/.vim/vimrcchỉ là một liên kết đến nó.

Bây giờ chúng ta cần tạo vimlại nvimtrình quản lý plugin, plugin, bằng cách thay đổi runtimepathpackpath. Trong thực tế, các đường dẫn plugin được sử dụng lại tự động, cách khắc phục sau đây là sử dụng lại trình quản lý plugin.

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

Nguồn: Chia sẻ confs giữa vim và nvim


1

Chỉ cần thêm vào câu trả lời ipatch, đó là câu trả lời đúng, nếu bạn có một thiết lập hơi khác với Vim, bạn có thể cần phải điều chỉnh đường dẫn.

Ví dụ: trên Windows, thay vì sử dụng cấu hình mặc định với:

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

Tôi đang dùng:

$HOME
   +--vimfiles
          +--vimrc

(Lý do là việc đặt một thư mục dưới sự kiểm soát sửa đổi dễ dàng hơn so với tệp và thư mục, đặc biệt khi tệp nằm ở thư mục gốc của thư mục chính của bạn)

Sau đây là công việc cho tôi:

set runtimepath^=~/vimfiles runtimepath+=~/vimfiles/after
let &packpath=&runtimepath
source ~/vimfiles/vimrc
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.