vim
उत्पादकता को बढ़ावा देने के लिए टिप्स और ट्रिक्स
खोज…
वाक्य - विन्यास
- : रिलेटिवनंबर सेट करें
- : संख्या निर्धारित करें
- : सेट नॉनंबर /: सेट नोनू
- : लोक निर्माण विभाग
टिप्पणियों
यह स्वचालित पुनः लोड केवल तभी होगा जब आप अपने vimrc
संस्करण को vim के पूर्ण संस्करण में संपादित करते हैं जो autocmd
का समर्थन करता है।
त्वरित "थ्रोअवे" मैक्रोज़
इसे अपने vimrc में जोड़ें:
nnoremap Q @q
"थ्रोअवे" मैक्रो की रिकॉर्डिंग शुरू करने के लिए, qq
उपयोग करें। रिकॉर्डिंग हिट को समाप्त करने के लिए q
(दोनों के लिए सामान्य मोड में)।
रिकॉर्ड किए गए मैक्रो को निष्पादित करने के लिए, Q
उपयोग करें।
यह मैक्रोज़ के लिए उपयोगी है जिसे आपको एक पंक्ति में कई बार दोहराने की आवश्यकता है लेकिन बाद में फिर से उपयोग करने की संभावना नहीं होगी।
विम के अंदर पथ पूरा करने की सुविधा का उपयोग करना
यह बहुत आम है, आप किसी फ़ाइल या फ़ोल्डर के लिए एक पथ याद करते हैं, आप विम खोलते हैं और जो आपने अभी याद किया है उसे लिखने की कोशिश करते हैं, लेकिन आप 100% सुनिश्चित नहीं हैं कि यह सही है, इसलिए आप संपादक को बंद करते हैं और शुरू करते हैं।
जब आप पथ पूरा करने की सुविधा चाहते हैं, और आपके पास एक फ़ाइल /home/ubuntu/my_folder/my_file
और आप पिछले एक के पथ के लिए एक और फ़ाइल संदर्भित संपादित कर रहे हैं:
इन्सर्ट मोड डालें: इंसर्ट करें या जैसा चाहें वैसा करें। अगला, लिखना /h
। जब कर्सर h
नीचे है, तो Ctrl x दबाएं और फिर Ctrl f करें ताकि संपादक इसे /home/
पूरा कर /home/
क्योंकि पैटर्न /h
अद्वितीय है
अब, मान लीजिए कि आपके पास दो फ़ोल्डर हैं /home/ubuntu/
my_folder_1
my_folder_2
कहा जाता है
और आप पथ /home/ubuntu/my_folder_2
हमेशा की तरह:
इन्सर्ट मोड डालें
लिखने /h
और Ctrl x दबाएँ और फिर Ctrl f । अब आपके पास /home/
नेक्स्ट u u after / home / है और Ctrl x और फिर Ctrl f दबाएं । अब, आपके पास /home/ubuntu/
क्योंकि वह मार्ग अद्वितीय है। अब, my
/home/ubuntu/
लिखने के बाद Ctrl x दबाएं और फिर Ctrl f करें । संपादक my_folder_
तक आपके शब्द को पूरा कर देगा और आप डायरेक्टरी ट्री देखेंगे, ताकि आप जो चाहते हैं उसे चुनने के लिए तीर कुंजियों का उपयोग करें।
सापेक्ष रेखा संख्याओं को चालू करें
पाठ की कुछ पंक्तियों को हटाने के लिए जब आप लाइनों को हटाने के लिए सटीक संख्या नहीं जानते हैं, तो आप 10dd
, 5dd
, 3 3dd
कोशिश करते हैं जब तक कि आप सभी लाइनों को हटा नहीं देते।
सापेक्ष पंक्ति संख्या इस समस्या को हल करती है, मान लें कि हमारे पास एक फ़ाइल है:
sometimes, you see a block of
text. You want to remove
it but you
cannot directly get the
exact number of
lines to delete
so you try
10d , 5d
3d until
you
remove all the block.
नोर्मल मोड डालें: Esc
अब, निष्पादित करें :set relativenumber
। एक बार फ़ाइल के रूप में प्रदर्शित किया जाएगा:
3 sometimes, you see a block of 2 text. You want to remove 1 it but you 0 cannot directly get the 1 exact number of 2 lines to delete 3 so you try 4 10d , 5d 5 3d until 6 you 7 remove all the block.
जहां 0
वर्तमान लाइन के लिए लाइन नंबर है और यह सापेक्ष संख्या के सामने वास्तविक लाइन नंबर भी दिखाता है, इसलिए अब आपको वर्तमान लाइन से लाइनों की संख्या को काटने या हटाने या उन्हें खराब करने के लिए अनुमान लगाने की आवश्यकता नहीं है एक - एक करके।
अब आप अपने सामान्य कमांड को 6dd
तरह निष्पादित कर सकते हैं और आप लाइनों की संख्या के बारे में सुनिश्चित हैं।
आप एक ही कमांड के संक्षिप्त रूप का भी उपयोग कर सकते हैं :set rnu
रिश्तेदार संख्याओं को चालू करने के लिए :set nornu
और उसी को बंद करने के लिए :set nornu
।
यदि आप भी :set number
या है :set number
पर पहले से ही, आप लाइन की लाइन नंबर प्राप्त करेंगे जिसमें कर्सर है।
3 sometimes, you see a block of 2 text. You want to remove 1 it but you 4 cannot directly get the 1 exact number of 2 lines to delete 3 so you try 4 10d , 5d 5 3d until 6 you 7 remove all the block.
लाइन नंबर देखना
डिफॉल्ट व्यू एंटर से लाइन नंबर देखने के लिए
:set number
लाइन नंबर छिपाने के लिए
:set nonumber
ऊपर के लिए एक शॉर्टकट भी है। nu
number
समान है।
:set nonu
लाइन नंबर छिपाने के लिए, हम भी उपयोग कर सकते हैं
:set nu!
इन्सर्ट मोड से बाहर आने के लिए मैपिंग
बहुत सारे विम उपयोगकर्ता Esc तक पहुंचने में बहुत मुश्किल पाते हैं, और होम मैप से पहुंचने के लिए एक और मैपिंग ढूंढना आसान बनाते हैं। ध्यान दें कि Ctrl - [ अंग्रेजी कीबोर्ड पर Esc के समतुल्य हो सकता है, और पहुंचने में बहुत आसान है।
जे के
inoremap jk <ESC>
यह एक ट्रिगर करने के लिए वास्तव में आसान है; बस एक ही समय में घर की पंक्ति पर अपनी पहली दो उंगलियों को तोड़ें। गलती से भी ट्रिगर करना मुश्किल है क्योंकि "jk" कभी भी किसी भी अंग्रेजी शब्द में दिखाई नहीं देता है, और यदि आप सामान्य मोड में हैं तो यह कुछ भी नहीं करता है। यदि आप "लाठी" टाइप नहीं करते हैं, तो inoremap kj <ESC>
जोड़ने पर भी विचार करें, ताकि आपको दो चाबियों के समय के बारे में चिंता करने की आवश्यकता न हो।
कैप्स लॉक
लिनक्स
लिनक्स पर, आप कैप्स लॉक को Esc के समान कार्य करने के लिए xmodmap
का उपयोग कर सकते हैं। इसे एक फ़ाइल में रखें:
!! No clear Lock
clear lock
!! make caps lock an escape key
keycode 0x42 = Escape
फिर xmodmap file
चलाएँ। यह कैप्स लॉक को Esc में बदल देता है ।
खिड़कियाँ
विंडोज पर आप SharpKey या AutoHotkey का उपयोग कर सकते हैं।
मैक ओ एस
यदि आपके पास macOS 10.12.1 या बाद में है, तो आप सिस्टम प्रेफरेंस का उपयोग करके एस्केप से कैप्स लॉक को रिमैप कर सकते हैं। कीबोर्ड का चयन करें, कीबोर्ड टैब पर जाएं, और संशोधक कुंजी पर क्लिक करें।
निर्देशिका और / या आपके द्वारा संपादित की जा रही फ़ाइल का पथ कैसे जानें
आपकी फ़ाइल जिस निर्देशिका में है, उसका पथ जानने के लिए आप इसका उपयोग कर सकते हैं:
कमांड मोड में प्रवेश करने के लिए Esc
:pwd
यह इस तरह से संपादक के तल पर निर्देशिका के लिए मार्ग प्रिंट करेगा
I'm a ninja
~
~
~
~
~
/home/ubuntu/myfolder 1,5 All
अब, यदि आप उस फ़ाइल का नाम जानना चाहते हैं जिसे आप अपेक्षाकृत कार्यशील निर्देशिका में संपादित कर रहे हैं, तो आप उपयोग कर सकते हैं:
कमांड मोड CTRL G दर्ज करने के लिए Esc
I'm a ninja
~
~
~
~
~
"myfile"[Modified][New file] 1 line --100%-- 1,5 All
अंत में आप जिस फ़ाइल को संपादित कर रहे हैं, उसका पूर्ण पथ प्राप्त करने के लिए उपयोग करें
कमांड मोड में प्रवेश करने के लिए Esc ,
1 और फिर CTRL जी
I'm a ninja
~
~
~
~
~
"~/myfolder/myfile"[Modified][New file] 1 line --100%-- 1,5 All
एक फ़ंक्शन ब्लॉक में खोजें
कर्सर के आसपास एक {}
ब्लॉक के भीतर पाठ foo
खोज करने के लिए निम्नलिखित कमांड का उपयोग करें ( <ESC>
- एस्केप कुंजी, <CR>
- कुंजी दर्ज करें):
vi{<ESC>/\%Vfoo<CR>
अब आप n
और p
दबाकर ब्लॉक के भीतर मैचों के बीच कूद सकते हैं। यदि आपके पास hlsearch
विकल्प सक्षम है तो यह सभी मैचों को उजागर करेगा। \%V
एक विशेष खोज पैटर्न हिस्सा है, जो विम को केवल चुने हुए क्षेत्र में खोज करने के लिए कहता है। आप इस तरह से एक मैपिंग भी कर सकते हैं:
:vnoremap g/ <ESC>/\%V
इसके बाद उपरोक्त कमांड को निम्नलिखित के लिए छोटा कर दिया गया है:
vi{g/foo<CR>
एक अन्य उपयोगी चाल पैटर्न वाली सभी लाइनों को प्रिंट करना है:
vi{
:'<,'>g/foo/#
'<,'>
सीमा स्वचालित रूप से डाली जाती है।
देखें :help range
और :help :g
।
पाए गए लाइन को कॉपी करें, स्थानांतरित करें या हटाएं
बहुत सारे उपयोगकर्ता खुद को ऐसी स्थिति में पाते हैं जहां वे केवल एक पंक्ति को कॉपी करना, स्थानांतरित करना या हटाना चाहते हैं और वापस उसी स्थान पर लौट जाते हैं जहां वे थे।
आम तौर पर, यदि आप एक ऐसी पंक्ति को आगे बढ़ाना चाहते हैं जिसमें वर्तमान रेखा के नीचे lot
शब्द हो तो आप कुछ इस तरह लिखेंगे:
/lot<Esc>dd<C-o>p
लेकिन उत्पादकता बढ़ाने के लिए आप इन मामलों में इस शॉर्टकट का उपयोग कर सकते हैं:
" It's recommended to turn on incremental search when doing so
set incsearch
" copy the found line
cnoremap $t <CR>:t''<CR>
" move the found line
cnoremap $m <CR>:m''<CR>
" delete the found line
cnoremap $d <CR>:d<CR>``
तो इस तरह एक खोज:
/lot$m
जब आप खोज शुरू करते हैं तो लाइन आपके कर्सर से lot
नीचे होती है।
एक फ़ाइल लिखें अगर आप vim शुरू करने से पहले `sudo` को भूल जाते हैं
यह कमांड sudo अधिकारों के साथ खुली फाइल को बचाएगा
:w !sudo tee % >/dev/null
तुम भी w!!
नक्शा कर सकते हैं w!!
किसी फ़ाइल को रूट के रूप में लिखने के लिए
:cnoremap w!! w !sudo tee % >/dev/null
स्वचालित रूप से सहेजें पर vimrc पुनः लोड करें
सहेजने पर स्वतः vimrc
पुनः लोड करने के लिए, अपने vimrc
में निम्नलिखित जोड़ें:
if has('autocmd') " ignore this section if your vim does not support autocommands
augroup reload_vimrc
autocmd!
autocmd! BufWritePost $MYVIMRC,$MYGVIMRC nested source %
augroup END
endif
और फिर आखिरी बार, टाइप करें:
:so $MYVIMRC
अगली बार जब आप अपने vimrc
सेव करेंगे, तो यह अपने आप लोड हो जाएगा।
यदि आप विम-एयरलाइन का उपयोग कर रहे हैं तो nested
उपयोगी है। एयरलाइन को लोड करने की प्रक्रिया कुछ ऑटोकॉमंड को ट्रिगर करती है, लेकिन जब से आप एक ऑटोकेमैंड को निष्पादित करने की प्रक्रिया में होते हैं, तो वे छोड़ देते हैं। nested
नेस्टेड ऑटोकॉमैंड को ट्रिगर करने की अनुमति देता है और एयरलाइन को ठीक से लोड करने की अनुमति देता है।
कमांड लाइन पूरी
कमांड लाइन के लिए पूर्ण सुझाव देने के लिए wildmenu
सेट करें।
निम्नलिखित को निष्पादित करें
set wildmenu
set wildmode=list:longest,full
अब अगर आप कहते हैं :color
टैब ,
आपको मिलेगा
256-jungle Benokai BlackSea C64 CandyPaper Chasing_Logic ChocolateLiquor :color 0x7A69_dark