Args के आधार पर चलाने के लिए vimenter autocmd का चयन करें


1

मैं उन चीजों की संख्या को कम करने की कोशिश कर रहा हूं जो मुझे वीआईएम खोलने पर करने की आवश्यकता है। मेरे पास निम्नलिखित तीन परिदृश्य हैं, जिन्हें मैं देखना चाहता हूं:

1. निर्दिष्ट निर्देशिका के साथ ओपन विम

vim .

इस मामले के लिए, मैं NERDTree को खोलना चाहूंगा, इस के साथ मेरे में ~/.vimrc:

autocmd vimenter * NERDTree


2. एक बड़े मॉनिटर पर निर्दिष्ट निर्देशिका के साथ ओपन विम

vim . --large

यहाँ मैं NERDTree खोलने के साथ-साथ कुछ स्क्रीन स्प्लिट्स करना चाहता हूँ:

autocmd vimenter * NERDTree
autocmd vimenter * wincmd w
autocmd vimenter * wincmd v
autocmd vimenter * wincmd v


3. एक विशिष्ट फ़ाइल नाम के साथ ओपन विम

vim ~/vimrc

इस मामले के लिए, मैं उनमें से किसी भी एक को नहीं चलाना चाहूंगा autocmdजिसका मैंने ऊपर उल्लेख किया है।


संपादित करें - अंतिम कार्यान्वयन

FDinoff के जवाब के लिए धन्यवाद।

if argc() == 1 && arv(0) == '.' " `vim .` called
  autocmd vimenter * NERDTree   " Start up NERDTree
  autocmd vimenter * wincmd w   " Jump to split that file is open in

  if !empty($L)
    autocmd vimenter * wincmd v
    autocmd vimenter * wincmd v
  endif
endif

और इसके साथ चलाने L=t vim ., vim .याvim specific_file

जवाबों:


2

आप अपने vimrc में vim करने के लिए तर्कों का उपयोग कर सकते हैं argc()और argv()तदनुसार ऑटोकैम सेट कर सकते हैं। तो पहले वाले के लिए आप ऐसा कुछ कर सकते हैं केवल NERDTree खोलें यदि पहला तर्क है.

if argc() == 1 && argv(0) == '.'
    autocmd vimenter * NERDTree
endif

बड़े मॉनिटर के लिए मुझे लगता है कि शेल वेरिएबल का उपयोग करना ऐसा करने का सही तरीका होगा क्योंकि vim को लगता है कि आपके स्क्रिप्ट में नहीं होने के तर्क --largeमें vim --largeहै। मुझे नहीं पता कि इसके आसपास कोई रास्ता है या नहीं।

आप ऐसा कुछ कर सकते हैं, vim -- . --largeलेकिन फिर विम एक फ़ाइल के लिए एक बफर खोलता है --largeजो संभवतः वह नहीं है जो आप चाहते हैं।


धन्यवाद! मैं अपने अंतिम कार्यान्वयन के साथ प्रश्न को अपडेट कर रहा हूं।
रयानबी

@RyanB आप बस Lअपने bashrc में भी परिभाषित कर सकते हैं ताकि आपको इसे हर बार टाइप न करना पड़े।
22
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.