vim
विम को कॉन्फ़िगर करना
खोज…
Vimrc फ़ाइल
.vimrc
फ़ाइल (उच्चारण Vim-wreck) एक विम कॉन्फ़िगरेशन फ़ाइल है। यह आज्ञाओं को रखता है जो कि हर बार शुरू होने पर विम द्वारा निष्पादित किया जाएगा।
डिफ़ॉल्ट रूप से फ़ाइल खाली है या गैर-मौजूद है; आप इसे अपने विम वातावरण को अनुकूलित करने के लिए उपयोग कर सकते हैं।
यह जानने के लिए कि विम कहाँ संग्रहीत होने की अपेक्षा करता है, विम खोलें और चलाएं:
:echo $MYVIMRC
यूनिक्स: मैक या लिनक्स जैसे यूनिक्स सिस्टम पर आपका vimrc .vimrc
कहा जाएगा और आमतौर पर यह आपके होम डायरेक्टरी ( $HOME/.vimrc
) में स्थित होगा।
विंडोज़: विंडोज पर इसे _vimrc
कहा जाएगा और यह आपके होम डायरेक्टरी ( %HOMEPATH%/_vimrc
) में स्थित होगा।
स्टार्टअप पर, विम एक vimrc फ़ाइल के लिए कई स्थानों पर खोज करेगा। पहले जो मौजूद है उसका उपयोग किया जाता है, दूसरों को नजरअंदाज किया जाता है। पूर्ण संदर्भ के लिए :h $MYVIMRC
प्रलेखन लेख देखें।
मैं किन विकल्पों का उपयोग कर सकता हूं?
यदि आप नहीं जानते हैं कि आपको किन विकल्पों का उपयोग करना चाहिए, तो आपको इसमें रुचि हो सकती है :options
कमांड।
यह सूचीबद्ध सभी विम विकल्पों के साथ और उनके वर्तमान मूल्य के साथ एक विभाजन को खोल देगा। सभी विकल्पों को प्रदर्शित करने के लिए 26 खंड हैं जिन्हें आप आज़मा सकते हैं।
जैसे
4 displaying text
scroll number of lines to scroll for CTRL-U and CTRL-D
(local to window)
set scr=20
scrolloff number of screen lines to show around the cursor
set so=5
wrap long lines wrap
set nowrap wrap
...
एक मूल्य रेखा (उदाहरण के लिए set nowrap
) पर आप मान को टॉगल करने के लिए CR को दबा सकते हैं (यदि यह एक बाइनरी मान है)। एक विकल्प लाइन पर (उदाहरण के लिए wrap long line wrap
) आप इस विकल्प के लिए प्रलेखन तक पहुंचने के लिए सीआर दबा सकते हैं।
फाइलें और निर्देशिका
जो भी आप Vim को कस्टमाइज़ करने के लिए करते हैं, यह $HOME
बाहर होना चाहिए:
- Linux, BSD और Cygwin पर,
$HOME
आमतौर पर/home/username/
, होता है - Mac OS X पर,
$HOME
है/Users/username/
, - विंडोज पर,
$HOME
आमतौर परC:\Users\username\
।
आपके vimrc
और आपके vim
निर्देशिका के लिए विहित स्थान उस $HOME
निर्देशिका के मूल में है:
यूनिक्स जैसी प्रणालियों पर
$HOME/.vimrc <-- the file $HOME/.vim/ <-- the directory
विंडोज पर
$HOME\_vimrc <-- the file $HOME\vimfiles\ <-- the directory
उपरोक्त लेआउट को अब और भविष्य में काम करने की गारंटी है।
Vim 7.4 ने आपके vim
निर्देशिका के अंदर अपने प्यारे vimrc
को रखना संभव बना दिया। यह वास्तव में एक अच्छा विचार है, यदि केवल इसलिए कि यह आपके कॉन्फ़िगरेशन को चारों ओर ले जाना आसान बनाता है।
यदि आप 7.4 विशेष रूप से उपयोग करते हैं, तो निम्नलिखित पर्याप्त होगा:
यूनिक्स जैसी प्रणालियों पर
$HOME/.vim/vimrc
विंडोज पर
$HOME\vimfiles\vimrc
यदि आप स्व-निहित vim/
का लाभ चाहते हैं, लेकिन 7.4 और एक पुराने संस्करण, या केवल एक पुराने संस्करण का उपयोग करते हैं, तो सबसे सरल, भविष्य-प्रमाण, समाधान इस लाइन को और केवल इस लाइन को रखना है :
runtime vimrc
इस फाइल में:
यूनिक्स जैसी प्रणालियों पर
$HOME/.vimrc
विंडोज पर
$HOME\_vimrc
और $HOME/.vim/vimrc
या $HOME\vimfiles\vimrc
में अपना कॉन्फ़िगरेशन करें।
विकल्प
तीन प्रकार के विकल्प हैं:
- बूलियन विकल्प,
- स्ट्रिंग विकल्प,
- नंबर विकल्प।
एक विकल्प के मूल्य की जांच करने के लिए,
- उपयोग
:set option?
एक विकल्प के मूल्य की जांच करने के लिए, - उपयोग
:verbose set option?
यह देखने के लिए कि यह अंतिम सेट कहां था।
बूलियन विकल्प सेट करना
set booloption " Set booloption.
set nobooloption " Unset booloption.
set booloption! " Toggle booloption.
set booloption& " Reset booloption to its default value.
स्ट्रिंग विकल्प सेट करना
set stroption=baz " baz
set stroption+=buzz " baz,buzz
set stroption^=fizz " fizz,baz,buzz
set stroption-=baz " fizz,buzz
set stroption= " Unset stroption.
set stroption& " Reset stroption to its default value.
नंबर विकल्प सेट करना
set numoption=1 " 1
set numoption+=2 " 1 + 2 == 3
set numoption-=1 " 3 - 1 == 2
set numoption^=8 " 2 * 8 == 16
मूल्य के रूप में एक अभिव्यक्ति का उपयोग करना
संघटन का उपयोग करना:
execute "set stroption=" . my_variable
का उपयोग कर
:let
:let &stroption = my_variable
देखें :help :set
और :help :let
।
मैपिंग
- मैपिंग के बाद टिप्पणी न करें, यह चीजों को तोड़ देगा।
- उपयोग करें
:map <F6>
<F6>
और किस मोड में मैप किया गया है, यह देखने के लिए<F6>
मैप करें। - का प्रयोग करें
:verbose map <F6>
यह देखने के लिए कि यह अंतिम मैप कहां किया गया था। -
:map
और:map!
बहुत सामान्य हैं। उपयोग करें:n[nore]map
सामान्य मोड मैपिंग के लिए:n[nore]map
:i[nore]map
सम्मिलित मोड के लिए:i[nore]map
:x[nore]map
दृश्य मोड के लिए:x[nore]map
, आदि
पुनरावर्ती मैपिंग
यदि आप अपने मैपिंग में अन्य मैपिंग का उपयोग करने का इरादा रखते हैं तो केवल पुनरावर्ती मैपिंग का उपयोग करें:
nnoremap b B
nmap <key> db
इस उदाहरण में, b
की तरह काम करने के लिए किया जाता है B
सामान्य मोड में। चूंकि हम पुनरावर्ती मैपिंग में b
का उपयोग करते हैं, इसलिए <key>
दबाना dB
तरह काम करेगा, db
तरह नहीं।
गैर-पुनरावर्ती मैपिंग
गैर-पुनरावर्ती मैपिंग का उपयोग केवल तभी करें जब आप अपने मैपिंग में डिफ़ॉल्ट कमांड का उपयोग करने का इरादा रखते हैं, जो लगभग हमेशा वही होता है जो आप चाहते हैं:
nnoremap <key> db
इस उदाहरण में, हम गैर-पुनरावर्ती मैपिंग में b
का उपयोग करते हैं, इसलिए दबाने वाली कुंजी हमेशा db
तरह काम करेगी, चाहे हमने b
रीमैप किया हो या नहीं।
मैपिंग से कमांड को निष्पादित करना
nnoremap <key> :MyCommand<CR>
मैपिंग से कई कमांडों को निष्पादित करना
nnoremap <key> :MyCommand <bar> MyOtherCommand <bar> SomeCommand<CR>
एक मानचित्रण से एक फ़ंक्शन कॉल करना
nnoremap <key> :call SomeFunction()<CR>
मैपिंग एक <Plug>
मैपिंग
map <key> <Plug>name_of_mapping
देखें :help map-commands
:help key-notation
:help <plug>
और :help <plug>
।
वायपर पढ़ने के लिए विम में कुंजी मैपिंग देखें
चर
अधिकांश स्क्रिप्टिंग भाषाओं की तरह, विमस्क्रिप्ट में चर होते हैं।
एक के साथ एक चर को परिभाषित कर सकते हैं :let
आज्ञा :let
:
let variable = value
और इसे हटा :unlet
:
unlet variable
विम में, वेरिएबल्स को एक अक्षर और उनके नाम पर एक बृहदान्त्र को जोड़कर स्कोप किया जा सकता है। प्लगइन लेखक उस सुविधा का उपयोग विकल्पों की नकल करने के लिए करते हैं:
let g:plugin_variable = 1
देखें :help internal-variables
।
आदेश
- अगली बार जब आप अपना vimrc पुनः लोड करते हैं, तो Vim को उस आदेश को अधिलेखित करने की अनुमति देने के लिए धमाका न भूलें।
- कस्टम कमांड को अपरकेस कैरेक्टर से शुरू होना चाहिए।
उदाहरण
command! MyCommand call SomeFunction()
command! MyOtherCommand command | Command | command
- देखें
:help user-commands
।
कार्य
- अगली बार जब आप फ़ंक्शन को परिभाषित करते हैं, तो स्क्रिप्ट को फिर से लोड करने के लिए विम को अनुमति देने के लिए धमाके को न भूलें।
- कस्टम फ़ंक्शंस या तो अपरकेस कैरेक्टर (वैश्विक फ़ंक्शंस) या
s:
(स्क्रिप्ट स्थानीय फ़ंक्शंस) के साथ शुरू होने चाहिए, या उन्हें{&rtp}/autoload/foo/bar.vim
प्लगइन से संबंधित नाम के साथ उपसर्ग करना होगा जहां वे परिभाषित हैं (जैसे{&rtp}/autoload/foo/bar.vim
हमfoo#bar#functionname()
को परिभाषित कर सकते हैं। - फ़ंक्शन में पैरामीटर का उपयोग करने में सक्षम होने के लिए
a:parameter_name
उपयोग करें। वैरिएडिक कार्यों को दीर्घवृत्त के साथ परिभाषित किया जा सकता है...
, मापदंडों का उपयोगa:000
(सभी मापदंडों की सूची), याa:0
(len(a:000)
बराबर पैरामीटर की संख्या),a:1
पहला अनाम मापदंडों, और इतने पर। - कार्यों को इस तरह कहा जा सकता है
:call MyFunction(param1, param2)
- किसी फ़ंक्शन में प्रत्येक पंक्ति निहित रूप से a
:
शुरू होती है, इस प्रकार सभी कमांड कोलन कमांड होते हैं - फ़ंक्शन को त्रुटि के मामले में अपने निष्पादन को जारी रखने से रोकने के लिए, यह फ़ंक्शन हस्ताक्षर को
abort
साथ एनोटेट करने के लिए सबसे अच्छा है
उदाहरण
function! MyFunction(foo, bar, ... ) abort
return a:foo . a:bar . (a:0 > 0 ? a:1 : '')
endfunction
स्क्रिप्ट कार्य
यदि आप केवल उस फ़ाइल में अपने फ़ंक्शन का उपयोग करने की योजना बनाते हैं, जहां यह परिभाषित किया गया है (या तो क्योंकि आपने छोटे भागों में एक बड़ा फ़ंक्शन तोड़ दिया है, या क्योंकि आप इसे कमांड, मैपिंग, ... में उपयोग करेंगे), तो आप उपसर्ग कर सकते हैं यह s:
साथ है s:
बेकार के आंतरिक कार्यों के साथ अपने वैश्विक नाम स्थान को गंदे करने से बचें:
function! s:my_private_function() " note we don't need to capitalize the first letter this time
echo "Hi!"
endfunction
एस का उपयोग करना: मैपिंग से कार्य
यदि आपकी स्क्रिप्ट स्थानीय फ़ंक्शन का उपयोग मैपिंग में करने जा रही है, तो आपको विशेष <SID>
उपसर्ग का उपयोग करके इसे संदर्भित करना होगा:
nnoremap <your-mapping-key> :call <SID>my_private_function()<CR>
देखें :help user-functions
।
हालाँकि, ध्यान दें कि विम 7 के बाद से, यह (फीट) प्लगइन्स में मैपिंग संक्षिप्ताक्षर, कमांड और मेन्यू और ऑटोलैड प्लग इन में फंक्शंस को परिभाषित करने के लिए सबसे अच्छा अभ्यास माना जाता है - फंक्शन को छोड़कर जब प्लग इन को लोड करने की आवश्यकता होती है। इसका मतलब यह है कि आजकल स्क्रिप्टिंग को स्थानीय कार्यों को मैपिंग से बुलाने की जरूरत नहीं है।
ऑटोकॉमैंड समूह
- ऑटोकॉमैंड समूह संगठन के लिए अच्छे हैं लेकिन वे डिबगिंग के लिए भी उपयोगी हो सकते हैं। उन्हें छोटे नामस्थानों के रूप में सोचें जिन्हें आप सक्षम / अक्षम कर सकते हैं।
उदाहरण
augroup MyGroup
" Clear the autocmds of the current group to prevent them from piling
" up each time you reload your vimrc.
autocmd!
" These autocmds are fired after the filetype of a buffer is defined to
" 'foo'. Don't forget to use 'setlocal' (for options) and '<buffer>'
" (for mappings) to prevent your settings to leak in other buffers with
" a different filetype.
autocmd FileType foo setlocal bar=baz
autocmd FileType foo nnoremap <buffer> <key> :command<CR>
" This autocmd calls 'MyFunction()' everytime Vim tries to create/edit
" a buffer tied to a file in /'path/to/project/**/'.
autocmd BufNew,BufEnter /path/to/project/**/* call MyFunction()
augroup END
देखें :help autocommand
।
सशर्त,
if v:version >= 704
" Do something if Vim is the right version.
endif
if has('patch666')
" Do something if Vim has the right patch-level.
endif
if has('feature')
" Do something if Vim is built with 'feature'.
endif
देखें :help has-patch
एंड :help feature-list
।
विकल्प सेट करना
आमतौर पर आप उपयोग करेंगे :set
अपने .vimrc
में अपनी पसंद के विकल्प :set
करने के लिए। कई विकल्प हैं जिन्हें बदला जा सकता है।
उदाहरण के लिए, इंडेंटेशन के लिए रिक्त स्थान का उपयोग करने के लिए:
:set expandtab
:set shiftwidth=4
:set softtabstop=4
वाक्य - विन्यास पर प्रकाश डालना
जब टर्मिनल में रंग हों तो हाइलाइटिंग सिंटैक्स पर
if &t_Co > 2 || has("gui_running")
syntax on
end
व्हाट्सएप और टैब्स को पीछे छोड़ते हुए दिखाएं। मेकफाइल्स में त्रुटियों की तलाश में टैब दिखाना विशेष रूप से उपयोगी हो सकता है।
set list listchars=tab:\|_,trail:.
highlight SpecialKey ctermfg=DarkGray
रंग योजना
विम कई पूर्व-स्थापित रंग योजनाओं के साथ आता है। लिनक्स में, विम के साथ आने वाली रंग योजनाएं /usr/share/vim/vim74/colors/
(जहां 74 आपका संस्करण संख्या, संस अवधि है) में संग्रहीत की जाती हैं; MacVim उन में संग्रहीत करता है /Applications/MacVim.app/Contents/Resources/vim/runtime/colors
।
रंग योजनाएँ बदलना
colorscheme
कमांड वर्तमान रंग योजना को स्विच करता है।
उदाहरण के लिए, रंग योजना को "रोबोकै" पर सेट करना है:
:colorscheme robokai
डिफ़ॉल्ट रंग योजना को रचनात्मक default
नाम दिया गया default
, इसलिए, इसका उपयोग करने के लिए वापस लौटें
:colorscheme default
वर्तमान में स्थापित सभी कलर स्कीमों को देखने के लिए, टाइप करें :colorscheme
और उसके बाद स्पेस या फिर टैब या ctrl d ।
रंग योजनाएं स्थापित करना
उपयोगकर्ता-स्थापित रंग योजनाओं को ~/.vim/colors/
में रखा जा सकता है। इस निर्देशिका में एक रंग योजना जोड़ देने के बाद, यह colorscheme
कमांड के विकल्प के रूप में दिखाई देगा।
नई रंग योजनाओं को खोजने के लिए, विमोलर्स जैसी साइटें हैं जिनमें विभिन्न प्रकार की रंग योजनाएँ हैं। अपने स्वयं के रंग योजनाओं को बनाने में सहायता करने के लिए vim.ink और Vivify जैसे उपकरण भी हैं, या आप उन्हें हाथ से बना सकते हैं।
लाइन को टॉगल करें
सक्षम करने के लिए - टाइप करें:
:set number
या :set nu
।
अक्षम करने के लिए - टाइप करें:
:set nonumber
या :set nonu
।
कर्सर स्थान के सापेक्ष गणना करने में सक्षम करने के लिए - टाइप करें:
:set relativenumber
।
कर्सर स्थान के सापेक्ष गणना करने के लिए अक्षम करें - टाइप करें:
:set norelativenumber
।
नोट: यह बदलने के लिए कि वर्तमान लाइन वास्तविक लाइन नंबर या 0
दिखाती है या नहीं :set number
relativenumber
विशेषता सक्रिय है, जबकि :set number
और :set nonumber
कमांड का उपयोग करें।
प्लगइन्स
विम प्लगइन्स ऐडऑन हैं जिनका उपयोग विम की कार्यक्षमता को बदलने या बढ़ाने के लिए किया जा सकता है।
वाइमवॉच पर प्लगइन्स की एक अच्छी सूची है