Vim और Neovim के बीच कॉन्फ़िग को कैसे साझा करें


23

मैंने नवोन्मेष का उपयोग करना शुरू कर दिया और अपने .vimrcको स्थानांतरित कर दिया .config/nvim/init.vimऔर अन्य सामान अंदर स्थित है .local/share/nvim

विम और नियोविम के बीच कॉन्फिग या यहां तक ​​कि प्लगइन्स साझा करने का सबसे अच्छा तरीका क्या है? सिमलिंक? क्या मैं .vimrc में केवल एक सिम्कलिन का उपयोग करने के लिए निर्देशिकाओं को बदल सकता हूँ?

Neimim के डिफ़ॉल्ट स्थान पर मेरे vim विन्यास को माइग्रेट करने के बाद, यह लगभग काम करने लगता है:

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

कुछ प्लगइन्स ( विम-प्लग का उपयोग करके ) सही ढंग से काम नहीं करते हैं। मैं न तो कस्टम कलरस्म्स लोड कर सकता हूं और न ही विम-एयरलाइन।


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

लिनक्स और मैकओएस के लिए, बस उपरोक्त पंक्तियों को अपने शीर्ष पर ~/.config/nvim/init.vim, या %LOCALAPPDATA%\nvim\init.vimविंडोज के लिए जोड़ें।

क्रेडिट 👉 को जाता है इस

चीयर्स 🍻
क्रिस


8

नेओविम के डिफ़ॉल्ट स्थान पर आपके कॉन्फिगर होने के बाद, निम्न कार्य करें:

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.

विम-एयरलाइन पाने के लिए मैंने निम्नलिखित स्निपेट को .vimrc में जोड़ा :

set laststatus=2

मैं काफी समझ में नहीं क्यों यह केवल vim में और नहीं Neovim में आवश्यक है, लेकिन मैं नहीं कर रहा हूँ केवल एक इस बात पर ठोकरें खाते हुए चल।


1
यह हमेशा से ही आवश्यक है। संभवतः nvim इसे डिफ़ॉल्ट रूप में सेट करता है और इसीलिए यह वहां काम कर रहा है।
क्रिश्चियन ब्रेबांट

1
@ChristianBrabandt हाँ, निश्चित रूप से आप कर रहे हैं सही।
लुम्ब्रिक

मुझे लगता है कि आमतौर पर लोग ~/.vimrcहोम फ़ोल्डर में स्थित होंगे , जैसा कि पिछली लाइन इशारा करती है ~/.vim
कोनराड

अन्य उत्तर का पालन करने के लिए बेहतर है , ताकि किसी के पास विशिष्ट कॉन्फ़िगरेशन हो, इस बीच ~/.vimrcसाझा कॉन्फ़िगरेशन के रूप में सोर्सिंग हो सके ।
रेनस

जबकि Neovim t_xxविकल्पों की अनदेखी करता है , मैं तर्क देता हूं कि इस उदाहरणif !has('nvim') में जैसे कि इसके साथ कुछ लपेटना अधिक सही है । यह अब उन्हें अनदेखा कर सकता है, लेकिन अगर भविष्य में यह बदल जाए तो क्या होगा? यह भी स्पष्ट रूप से इंगित करता है कि विकल्प केवल विम से संबंधित है।
ZeroKnight

5

आप उपयोग कर सकते हैं if has('nvim')। यहाँ पूर्ण उदाहरण हैं:

केवल Neovim के लिए कॉन्फ़िगरेशन:

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

केवल विम के लिए कॉन्फ़िगरेशन

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

स्रोत: शेयर वाल्स विम और एनवीएम के बीच


1

सिर्फ ipatch उत्तर जोड़ने के लिए, जो सही उत्तर है, यदि आपके पास विम से थोड़ा अलग सेटअप है, तो आपको पथ को अनुकूलित करने की आवश्यकता हो सकती है।

उदाहरण के लिए, विंडोज पर, डिफ़ॉल्ट कॉन्फ़िगरेशन का उपयोग करने के बजाय:

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

मै इस्तेमाल कर रहा हूँ:

$HOME
   +--vimfiles
          +--vimrc

(कारण यह है कि फ़ाइल और निर्देशिका की अपेक्षा संशोधन नियंत्रण में एकल निर्देशिका को रखना आसान है, विशेषकर तब जब फ़ाइल आपके गृह निर्देशिका के मूल में हो)

निम्नलिखित मेरे लिए तब काम करता है:

set runtimepath^=~/vimfiles runtimepath+=~/vimfiles/after
let &packpath=&runtimepath
source ~/vimfiles/vimrc
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.