Cara berbagi konfigurasi antara vim dan Neovim


23

Saya mulai menggunakan neovim dan memindahkan .vimrcke .config/nvim/init.vimdan hal-hal lain berada di .local/share/nvim.

Apa cara terbaik untuk berbagi konfigurasi atau bahkan plugin antara vim dan Neovim? Symlinks? Bisakah saya mengubah direktori di .vimrc untuk menggunakan hanya satu symlink?

Setelah memigrasikan konfigurasi vim saya ke lokasi default Neovim, sepertinya ini hampir berhasil:

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

Beberapa plugin (menggunakan vim-plug ) tampaknya tidak berfungsi dengan benar. Saya tidak dapat memuat colorchmes khusus atau maskapai vim.


1
Anda dapat menggunakan if has('nvim')hanya untuk perintah
nvim

Jawaban:


37

TL; DR

Anda dapat menggunakan ~/.vimrc, file, dan plugin yang ada di dalamnya ~/.vimtanpa harus menyinkronkan file.

Dan ini sekarang didokumentasikan dalam manual NeoVim, lihat Transisi dari Vim .


Baris di bawah ini akan menambahkan jalur dan ~/.vimrcfile yang ada ke pengaturan nvim Anda.

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

Untuk Linux dan macOS, cukup tambahkan baris di atas ke atas Anda ~/.config/nvim/init.vim, atau %LOCALAPPDATA%\nvim\init.vimuntuk Windows.

Kredit jatuh ke 👉 ini

sorakan 🍻
Chris


8

Setelah konfigurasi Anda di lokasi default Neovim, lakukan hal berikut:

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

Untuk memperbaiki colorscheme saya harus mengatur ke 256 mode warna terminal , yaitu menambahkan ini ke file .vimrc (= init.vim) Anda, yang akan diabaikan oleh nvim :

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

Untuk mendapatkan vim-airline, saya menambahkan cuplikan berikut ke .vimrc:

set laststatus=2

Saya tidak mengerti mengapa hal ini perlu hanya dalam vim dan tidak dalam Neovim, tapi saya tidak satu -satunya satu sandungan atas hal ini.


1
Ini selalu diperlukan dalam vim. Mungkin nvim menetapkan ini sebagai default dan itulah mengapa ia bekerja di sana.
Christian Brabandt

1
@ChristianBrabandt ya, tentu saja Anda yang benar.
lumbric

Saya rasa umumnya orang akan ~/.vimrcberada di folder home, seperti yang ditunjukkan oleh baris sebelumnya ~/.vim.
Konrad

Lebih baik mengikuti jawaban yang lain , sehingga seseorang dapat memiliki nvim konfigurasi tertentu, sementara itu sumber ~/.vimrcsebagai konfigurasi bersama.
ryenus

Sementara Neovim mengabaikan t_xxopsi, saya berpendapat bahwa lebih tepat untuk membungkus sesuatu dengan itu if !has('nvim'), seperti dalam contoh ini . Itu mungkin mengabaikan mereka sekarang, tetapi bagaimana jika itu berubah di masa depan? Ini juga secara implisit menunjukkan bahwa opsi hanya terkait dengan Vim.
ZeroKnight

5

Anda bisa menggunakannya if has('nvim'). Berikut ini contoh lengkapnya:

Konfigurasi hanya untuk Neovim:

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

Konfigurasi hanya untuk Vim

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

1

Metode di sini mencoba symlink ~/.config/nvimke ~/.vim, dan membuat conf kompatibel dengan 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

Setelah pengaturan ini, ~/.config/nvim/init.vimapakah file asli digunakan sebagai conf. ~/.vim/vimrchanyalah tautan ke sana.

Sekarang kita perlu membuat manajer plugin vimreuse nvim, plugin, dengan mengubah runtimepathdan packpath. Bahkan, jalur plugin digunakan kembali secara otomatis, perbaikan berikut menggunakan kembali palang 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

Sumber: Bagikan confs antara vim dan nvim


1

Hanya untuk menambahkan jawaban ipatch, yang merupakan jawaban yang benar, jika Anda memiliki pengaturan yang sedikit berbeda dari Vim, Anda mungkin perlu menyesuaikan jalurnya.

Misalnya, di Windows, daripada menggunakan konfigurasi default dengan:

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

Saya menggunakan:

$HOME
   +--vimfiles
          +--vimrc

(Alasannya adalah karena lebih mudah untuk menempatkan direktori tunggal di bawah kendali revisi daripada file dan direktori, terutama ketika file tersebut berada di root direktori home Anda)

Berikut ini berfungsi untuk saya:

set runtimepath^=~/vimfiles runtimepath+=~/vimfiles/after
let &packpath=&runtimepath
source ~/vimfiles/vimrc
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.