सरल विम आज्ञाएँ आप चाहते हैं कि आप पहले से जानते थे [बंद]


378

मैं हर समय विम में नई कमांड सीख रहा हूं, लेकिन मुझे यकीन है कि हर कोई एक बार में कुछ नया सीखता है। मैंने अभी हाल ही में इसके बारे में सीखा है:

zz, zt, zb - स्क्रीन के मध्य, ऊपर या नीचे स्थित स्थिति कर्सर

कुछ अन्य उपयोगी या सुरुचिपूर्ण आदेश हैं जो आप चाहते हैं कि आप सदियों पहले सीखे थे?


46
तकनीकी रूप से, zz, zt, zb मध्य / शीर्ष / तल पर कर्सर के साथ स्क्रीन की स्थिति बना रहे हैं । स्थिति के लिए कर्सर बीच / ऊपर / नीचे उपयोग में एम, एच, या एल दोनों आदेशों के सेट उपयोगी होते हैं!
पीटर

1
महीने या एक साल पहले इस पोस्ट को पढ़ने से मुझे हर दिन मदद मिली है। डीएपी एक ऐसी चीज है जिसका उपयोग मैं इस पोस्ट के लिए पैराग्राफ को एक घंटे में कई बार स्थानांतरित करने के लिए करता हूं।
फंककोडायट

33
मैंने कभी किसी पृष्ठ से इतनी सारी तरकीबें नहीं निकाली हैं जिन्हें गैर रचनात्मक के रूप में चिह्नित किया गया है :) धन्यवाद सभी।
टासोस बिट्सियो

जवाबों:


315

मैं वास्तव में चाहता हूं कि मुझे पता है कि आप डालने के मोड से बाहर जाने के CtrlCबजाय उपयोग कर सकते हैं Esc। यह मेरे लिए एक वास्तविक उत्पादकता बढ़ाने वाला रहा है।


93
मैंने अपने कैप्स-लॉक को एक Esc पर रीमैप किया। यह सामान्य Esc और Ctrl-C
Kasper

114
बकवास। 15 साल का vi और मुझे यह कभी पता नहीं चला ...
Chris K

31
एक और लोकप्रिय ESC के लिए 'jj' का उपयोग करना था। मुझे अब तक का यह तरीका पसंद है। :नक्शा! jj <ESC>
क्लेट्रॉन

27
आप CTRL- [(जो मुझे पसंद है क्योंकि यह दोनों छोटी उंगलियां हैं ... दोनों हाथों का थोड़ा रोटेशन) का उपयोग कर सकते हैं।
जेसन डाउन

42
@ क्लेरट्रॉन पर एक संस्करण के रूप में 'जेके' का उपयोग करें। यदि आप अनजाने में पहले से ही INSERT मोड में हैं, तो jk आपको वहीं छोड़ देता है जहाँ आप थे, इसलिए आप इसे कभी भी हिट कर सकते हैं (क्रेडिट: कोई और ... मेरा आइडिया नहीं)।
काइल

197

सबसे हाल ही में "वाह" चाल जो मैंने सीखा है वह जटिल खोज और बदलने का एक तरीका है। काफी बार अतीत में, मैं एक बहुत जटिल regexp था पर प्रतिस्थापन करने के लिए और यह काम नहीं किया है। एक बेहतर रास्ता है:

:set incsearch             " I have this in .vimrc
/my complicated regexp     " Highlighted as you enter characters
:%s//replace with this/    " You don't have to type it again

यहां "ट्रिक" (बेहतर शब्द के लिए) एक ऐसा तरीका है जिससे आप regexp बनाने के लिए खोज का उपयोग कर सकते हैं (और वर्णों को दर्ज करते समय 'इसे खोजते हैं') और फिर प्रतिस्थापन में एक खाली पैटर्न का उपयोग करें: खाली अंतिम खोज पैटर्न में पैटर्न चूक।

उदाहरण:

/blue\(\d\+\)
:%s//red\1/

के बराबर:

:%s/blue\(\d\+\)/red\1/

देख:

:help 'incsearch'
:help :substitute

1
वाह ... मैं कुछ इस तरह की तलाश कर रहा हूं
अंजीर

1
हाँ, मैं चाहता हूँ कि मुझे पता था कि यह जल्दी ही है। लेकिन फिर, मैं जो कुछ भी सीखता हूं उसके बारे में यही कहता हूं जो कि नया है।
रॉबर्ट मैसैओली

26
वास्तव में इसे पसंद करने वाले किसी व्यक्ति के लिए, <Ctrl-R>/अंतिम खोज क्वेरी सम्मिलित करने का प्रयास करें। (देखें :help i_CTRL-R) वास्तव में ऊपर के समान के लिए उपयोगी है, लेकिन आप खोज परिणामों के हिस्से पर कब्जा करना चाहते हैं। (इस तरह: %s:/\\([fF]rank\\) and mary/marie and \1/g)
idbrii

4
:%s//...के साथ भी काम करता है *(खोज शब्द कर्सर के तहत)। विज़ुअल-स्टार-सर्च नामक एक प्लगइन *विजुअल सिलेक्शन के पूरे टेक्स्ट से मेल खाने की कार्यक्षमता को बढ़ाता है, जिससे चयनित टेक्स्ट को खोजना और बदलना आसान हो जाता है, जैसे v3e(विज़ुअली सिलेक्ट 3 शब्द) *(सर्च) और :%s//replacement/g(सभी घटनाओं को प्रतिस्थापित करना ) प्रतिस्थापन ")। मैं इसे इतनी बार उपयोग करता हूं कि मेरे पास वैश्विक प्रतिस्थापन आदेश के लिए एक मानचित्रण है :nmap <Leader>s :%s///g<left><left>:।
पैट्रिक ऑस्सिटी

1
@idbrii पढ़ने के बाद से लोग विम नोबस (मुझे) %s:हो सकते हैं :%s, होना चाहिए , और मेरे सिस्टम के लिए, मुझे इसकी \(\)जगह चाहिए\\(\\)
चार्ली गोरीचानाज़

155

मैंने अपने एक दोस्त के लिए अपनी सबसे अधिक इस्तेमाल की जाने वाली कमांड का यह संदर्भ बनाया:

select                                   v
select row(s)                            SHIFT + v
select blocks (columns)                  CTRL  + v
indent selected text                     >
unindent selected text                   <
list buffers                             :ls
open buffer                              :bN (N = buffer number)
print                                    :hardcopy
open a file                              :e /path/to/file.txt
                                         :e C:\Path\To\File.txt
sort selected rows                       :sort
search for word under cursor             *
open file under cursor                   gf
  (absolute path or relative)
format selected code                     =
select contents of entire file           ggVG
convert selected text to uppercase       U
convert selected text to lowercase       u
invert case of selected text             ~
convert tabs to spaces                   :retab
start recording a macro                  qX (X = key to assign macro to)
stop recording a macro                   q
playback macro                           @X (X = key macro was assigned to)
replay previously played macro *         @@
auto-complete a word you are typing **   CTRL + n
bookmark current place in file           mX (X = key to assign bookmark to)
jump to bookmark                         `X (X = key bookmark was assigned to
                                             ` = back tick/tilde key)
show all bookmarks                       :marks
delete a bookmark                        :delm X (X = key bookmark to delete)
delete all bookmarks                     :delm!
split screen horizontally                :split
split screen vertically                  :vsplit
navigating split screens                 CTRL + w + j = move down a screen
                                         CTRL + w + k = move up a screen
                                         CTRL + w + h = move left a screen
                                         CTRL + w + l = move right a screen
close all other split screens            :only

*  - As with other commands in vi, you can playback a macro any number of times.
     The following command would playback the macro assigned to the key `w' 100
     times: 100@w

** - Vim uses words that exist in your current buffer and any other buffer you may have open for auto-complete suggestions.

आप "~ X" सूची में X नाम के साथ जाने के लिए। यह मेरे लिए काम नहीं करता है - इसके बजाय मैं "X" (एकल उद्धरण) का उपयोग करता हूं।

वाह। आपका बिलकुल सही। जब मैं गाइड टाइप कर रहा था तो मुझे लगता है कि मेरी आँख केवल टिल्ड को देख रही थी और पीछे टिक पर चमक रही थी। मैं उसी हिसाब से अपडेट करूंगा। सर उठाने के लिए धन्यवाद।
ब्रायन न्यूमैन

5
यह सूची अच्छी है, लेकिन मैं वास्तव में जानना चाहता हूं कि आपने यह तालिका कैसे बनाई? VIM के साथ? कौन सा प्लगइन? मैं फिलहाल एक की तलाश में हूं।
केंट

6
मैंने VIM का उपयोग किया, लेकिन कोई प्लगइन नहीं। तथापि; चुनिंदा ब्लॉक फीचर का उपयोग करके इसे अपेक्षाकृत आसान बना दिया गया। खुशी है कि आपको सूची उपयोगी लगी! ~ ब्रायन
ब्रायन न्यूमैन

11
ब्लॉक-चयन के लिए Ctrl-Q mswin.vim की एक विशिष्टता है जो CTRL-V को पेस्ट करने की अनुमति देता है। अधिकांश विम उपयोगकर्ता इस बुराई पर विचार करेंगे और mswin.vim को अक्षम करेंगे। "+ P या Ctrl-R + क्लिपबोर्ड सामग्री सम्मिलित करने के लिए टाइप करने के लिए इतना कठिन नहीं है।
बेनोइट

144

जीआई प्रविष्टि मोड पर स्विच करता है, कर्सर को उसी स्थान पर रखकर जो पहले था।


29
मुझे बहुत खुशी हुई जब मुझे पता चला कि g;अब यह मेरे लिए आंसू
बहाती है

@longdeqidao बिल्कुल नहीं। यह अंतिम सम्मिलन बिंदु पर लौटता है। तो आप अपने दिल की सामग्री को स्क्रॉल कर सकते हैं और यह आपको वापस वहीं खींच देगा जहाँ आप अंतिम बार सम्मिलित हुए थे।
साइबर ओलिवेरा

9
एफवाईआई, जी; (जो @PatrickOscity ऊपर उल्लिखित किया गया है) कर्सर को उस स्थान पर रखता है जहाँ एक संपादन किया गया था। इतिहास में वापस जाने के लिए आप इसका कई बार उपयोग कर सकते हैं। यहाँ यह ध्यान देने योग्य है क्योंकि मेरी व्यर्थ मदद किसी विषम कारण के लिए इसका उल्लेख नहीं करती है।
पोनीएर्स

13
विम का अंतर्द्वंद मुझे प्रभावित करने के लिए कभी नहीं रहता। चूंकि @PonyEars ने उल्लेख किया है कि g;मैंने कोशिश की है कि अगर इसका "विपरीत" होगा g,और लो और निहारना होगा, तो हम आगे और पीछे जा सकते हैं!
साइबर ओलिवेरा

aछोटा है। :) लेकिन giवास्तव में बहुत सहज है, gआमतौर पर एक विपरीत ऑपरेशन होने के साथ ।
एरविन रूइजाक्कर्स

105
: Q!

काश मुझे पता होता कि इससे पहले मैंने पहली बार vi शुरू किया था।


23
एक emacs आदमी के रूप में, यह सबसे मजेदार टिप्पणी है जिसे मैंने पढ़ा है। यकीन नहीं है कि आप हालांकि यह होना चाहिए। तुमने आज मुझे खुश कर दिया।
pjammer

29
मुझे याद है कि उसी दिन पहली बार विम और एमएसीएस की कोशिश करना, न जाने कैसे बाहर निकलना था। मैंने खुद से सोचा कि इन लोगों के साथ क्या गलत है !?
भौतिक विज्ञान

13
+1। पहली बार जब आप विम शुरू करते हैं, तो डिफ़ॉल्ट संदेश "लिखना: q को छोड़ देना चाहिए"। मैं इतना समय बचा सकता था
जोस रामोन

2
@ JoséRamón लेकिन यह करता है डिफ़ॉल्ट रूप से स्क्रीन पर दिखाई देते हैं यदि आप एक फ़ाइल को खोलने के बिना vim दर्ज करें। क्या यह हाल ही में जोड़ा गया था? मैं स्पष्ट रूप से साल पहले की कोशिश कर याद कर सकते हैं और यह वहाँ पहले से ही था। :q!यदि आप बफर को सहेजे बिना छोड़ने का प्रयास करते हैं तो यह आपको उपयोग करने के लिए भी कहता है ।
मचेलिनक्स

5
@ivy_lynx हाँ, आप सही हो सकते हैं, लेकिन केवल अगर आप फ़ाइलों के बिना विम खोलें। आमतौर पर, आप पहली बार विम खोलते हैं क्योंकि आपको यूनिक्स में एक कॉन्फिग फाइल को एडिट करने की जरूरत होती है, इसलिए आप "$ vim फाइल" लिखते हैं और आप अपना रास्ता नहीं खोज सकते। या केवल मैं ही हूं?
जोस रामोन

56

^ XF वर्तमान निर्देशिका से फ़ाइल नाम का उपयोग कर पूरा करता है। टर्मिनल या दर्दनाक डबल चेकिंग से अधिक कॉपी / पेस्ट करना नहीं।

^ XP वर्तमान फ़ाइल में शब्दों का उपयोग कर पूरा करता है

: स्क्रॉलबाइंड सेट करें एक बफर दूसरे के साथ स्क्रॉल करने के लिए मजबूर करता है। उदाहरण के लिए अपनी खिड़की को दो ऊर्ध्वाधर पैन में विभाजित करें। प्रत्येक में एक फ़ाइल लोड करें (शायद एक ही फ़ाइल के विभिन्न संस्करण)। :set scrollbindप्रत्येक में करो । अब जब आप एक में स्क्रॉल करते हैं, तो दोनों पैन एक साथ स्क्रॉल करेंगे। फ़ाइलों की तुलना करने के लिए आदर्श।


स्क्रॉलबाइंड को अक्षम करने के बाद मैंने इसे कैसे सक्षम किया है?
अमिजीठ

2
jinxed_coder : :set noscbइसे बंद करने के :set scbलिए और इसे (नहीं :scrollbind) चालू करने के लिए उपयोग करें । :h scrollbind
jmdeldin

ओह। ': सेट स्क्रॉलबिंड' के लिए ठीक किया गया।
ब्रायन एग्न्यू

7
^ XP फ़ाइल में पिछले शब्दों को वरीयता के साथ पूरा करता है, ^ XN फ़ाइल में अगले शब्दों के लिए प्राथमिकता के साथ।
u0b34a0f6ae

आप फ़ाइल 1 खोलकर और रनिंग के साथ :diffsplit file2या केवल vim शुरू करके फ़ाइलों को अलग कर सकते हैं vim -d file1 file2। विम स्वचालित रूप से दो फ़ाइलों को स्क्रॉल करता है।
ब्रायन मैकूचिऑन

51

आप कोष्ठक / कोष्ठक / उद्धरण चिह्नों / टैग के अंदर पाठ को बदलने के लिए आदेशों के एक पूरे सेट का उपयोग कर सकते हैं। समूह की शुरुआत और समाप्ति का पता लगाने से बचने के लिए यह सुपर उपयोगी है। ci(, ci{, ci<, ci", ci', ctआप किस प्रकार की वस्तु को बदलना चाहते हैं इसके आधार पर प्रयास करें । और ca(, ca{, ...वेरिएंट कोष्ठक / उद्धरण चिह्न भी हटाते हैं।

याद रखने में आसान: एक ब्रैकेटेड स्टेटमेंट के अंदर बदलें / एक ब्रैकेटेड स्टेटमेंट बदलें।


16
यह केवल के लिए नहीं है c। आप इसे dहटाने के लिए कर सकते हैं (उदाहरण के लिए di (या दा), yyank, vका चयन करने के लिए आदि
Nathan Fellman

नमस्कार! मैं यह जानना चाहूंगा कि इसके लिए प्रलेखन क्या उपयोग कर रहा है :help? मेरे द्वारा इसे कहीं भी ढूंढा जा सकता है। > _ <
मेटेज

1
@ मैं पहले उन लोगों की जाँच कर चुका हूँ, लेकिन अजीब "आंतरिक + सीमांकक" व्यवहार का उल्लेख नहीं कर पाया। यह पता चला है :help motion.txt! धन्यवाद!
मटज

2
यह टिप एकमात्र कारण है कि मैंने vi को पहली जगह में स्विच किया :)
जस्टिन एल।

1
यदि आप HTML या XML का संपादन कर रहे हैं, तो आप citवर्तमान टैग की सामग्री को बदलने के लिए उपयोग कर सकते हैं । उदाहरण के लिए <span>Some text</span>, यदि आपका कर्सर "एम" से अधिक है तो आप ditप्राप्त कर सकते हैं <span></span>
जोनाथन पॉटर

47
  1. Escकभी प्रेस मत करो । यह जानने के लिए यह उत्तर देखें कि क्यों । जैसा कि ऊपर उल्लेख किया गया है, Ctrl+ Cएक बेहतर विकल्प है। मैं दृढ़ता Caps Lockसे बचने के लिए आपकी कुंजी मैप करने का सुझाव देता हूं ।

  2. यदि आप एक टैग फ़ाइल और , + , आदि का उपयोग करते हुए एक सीटैग संगत भाषा का संपादन कर रहे हैं, तो कोड को नेविगेट करने का एक शानदार तरीका है, यहां तक ​​कि कई फ़ाइलों में भी। इसके अलावा, टैग फ़ाइल का उपयोग करके + और + पूरा करना कीस्ट्रोक्स पर कटौती करने का एक शानदार तरीका है।:taCtrl]CtrlNCtrlP

  3. यदि आप एक पंक्ति को संपादित कर रहे हैं जो लिपटी हुई है क्योंकि यह आपके बफर की तुलना में व्यापक है, तो आप gk और gj का उपयोग करके ऊपर / नीचे जा सकते हैं।

  4. बुरी आदतों को सीखने से पहले मोशन कमांड के प्रभावी उपयोग पर ध्यान देने की कोशिश करें। समय की xa गुच्छा दबाने के बजाय 'dt' या 'd3w' का उपयोग करने जैसी चीजें। मूल रूप से, किसी भी समय आप अपने आप को एक ही कुंजी को बार-बार दबाते हुए पाते हैं, संभवतः एक ही चीज़ को पूरा करने का एक बेहतर / तेज़ / अधिक संक्षिप्त तरीका है।


11
पलायन का उपयोग न करें? यह विधर्म है। पलायन आपका सबसे अच्छा दोस्त है, दोनों काम पर और बंद।
xcramps

28
अगर यह इतना अच्छा दोस्त है, तो यह कीबोर्ड पर इतनी दूर क्यों है?
एंथनी

क्योंकि 99% लोग इसका उपयोग कभी नहीं करते हैं।
स्टेफानो बोरीनी

5
मेरे कीबोर्ड पर कुछ इंच तक भागने से अन्य कुंजी से अलग हो जाते हैं। आप इसे याद नहीं कर सकते।
ब्रायन कारपर

15
# 3 कमाल है! अभी भी नई चीजें सीख रहे हैं ...
ब्रायन न्यूमैन

45

तारांकन कुंजी, *कर्सर के नीचे शब्द खोजेगी।

[+ Tabआपको अपने कर्सर के अंतर्गत आने वाले C फ़ंक्शन की परिभाषा में ले जाएगा। (यह हमेशा काम नहीं करता है, हालांकि।)


1
'मैन ctags' आज़माएं यदि आप यह जानने के लिए कि "टैग" फ़ाइल बनाने के लिए * nix का उपयोग कर रहे हैं, तो परिभाषा को खोजने के लिए सी के अलावा कई भाषाओं में किसी फ़ंक्शन या चर की परिभाषा कैसे खोजें, vim बताता है। अपने कर्सर के नीचे टोकन, या उपयोग करें: किसी भी टोकन को खोजने के लिए tokenToFind को टैग करें जिसके बारे में वह जानता है। आप उचित फ़ाइल खोलने और कर्सर को आपके द्वारा संपादित किए जाने वाले फ़ंक्शन पर स्थिति में लाने के लिए "vim -t tokenToFind" के साथ vim भी शुरू कर सकते हैं।
एडम लिस

23
# कुंजी कर्सर के नीचे शब्द के लिए रिवर्स दिशा में खोज करेगी
फंककोडैट

github.com/bronson/vim-visual-star-search दृश्य चयन के लिए स्टार खोज को सक्षम करता है। मैं इसे और याद नहीं करना चाहता।
पैट्रिक ऑस्सिटी

[ + Tab जब आप pathआवश्यक फ़ोल्डरों के साथ विस्तार करते हैं तो हमेशा काम करेंगेset path+=path/to/files
dlmeetei

43

ZZ(जैसे काम करता है :wq)

और कर्सर स्थिति के बारे में: मैंने पाया कि एक कर्सर जो हमेशा स्क्रीन के बीच में रहता है वह शांत होता है -

set scrolloff=9999

2
नहीं पता था कि :xके रूप में अच्छी तरह से करता है
sa125

18
पूरी तरह से सही नहीं है। जैसे काम करता है :x, जो परिवर्तन होने पर केवल फ़ाइल को बचाता है, जबकि :wqहमेशा फ़ाइल को बचाता है।
एरिक बी

ZQ (काम करता है: q!)
xialu

42

मेरे विम ब्रेनस्टोर के कुछ नवीनतम जोड़:

  • ^wi: विंडो को विभाजित करके कर्सर के नीचे टैग पर जाएं।
  • cib/ciB: क्रमशः कोष्ठक () या ब्रेस {} के वर्तमान सेट के अंदर पाठ को बदलें।
  • :set listchars=tab:>-,trail:_ list: अन्य स्थानों से अलग टैब / अनुगामी स्थान दिखाएं। यह पायथन कोडिंग के साथ बहुत मदद करता है।

4
इसके लिए और वोट चाहिए! cibमहान है।
मैट पार्कर

यह भी: वर्तमान शब्द (या caw, समान लेकिन केवल बाएं हाथ) को बदलने के लिए ciw को वर्तमान W = o (rd) को बदलने के लिए cWW, c के बजाय v के साथ Sames, बदले की जगह दृश्य में चयन करेगा
lajario

5
cib टाइप करने के बराबर है "ci ("। आप "ci [", "ci {", या (यदि आपका vimrc सही ढंग से सेट है) "ci <", अन्य प्रकार के कोष्ठक के लिए भी कर सकते हैं।
टॉम

2
साथ ही, टैग के अंदर टेक्स्ट को बदलने के लिए "सिट"। XML / HTML के साथ काम करते समय बहुत उपयोगी है।
वाल्टर

यह भी ध्यान देने योग्य है कि आप इसके बजाय डब्ल्यू / क्लोजिंग ब्रेस को दबा सकते हैं, क्या आपको यह पसंद करना चाहिए। इसके अलावा, मैं सिर्फ ci}और cit- वाह के बारे में सीखा है , यह बहुत उपयोगी होने जा रहा है । vi[m]एक बहुत ही रोमांचक कार्यक्रम साबित हो रहा है!
अंडरस्कोर_ड

37

जीवी दृश्य मोड शुरू करता है और स्वचालित रूप से वही चुनता है जो आपने पहले चुना था।


34

: विम से शेल कंसोल लॉन्च करने के लिए शेल। उपयोगी जब उदाहरण के लिए आप विम को छोड़ने के बिना एक स्क्रिप्ट का परीक्षण करना चाहते हैं। जब आप शेल कंसोल के साथ काम करते हैं तो बस ^ d मारा जाता है, और फिर आप विम और अपनी संपादित फ़ाइल पर वापस आते हैं।


मुझे लगता है :!shकि बहुत कठिन था। मैं पसंद करता हूं कि क्योंकि वर्तमान बफर से रजिस्टरों / पूर्णताओं का उपयोग करके कमांड लाइनों को लिखना आसान है या उदाहरण के लिए %/ %:hवर्तमान फ़ाइल नाम / dirname आदि के लिए उपयोग करें
sehe

1
यह एक बहुत अच्छा है। मैं हर दिन इसका इस्तेमाल करता हूं .. इससे पहले कि यह था: wq, cli stuff, reopen vim with same file .. Great optimization
Flashin

7
Ctrl-Z शेल और एफजी पर स्विच करने के लिए <ENTER> विम पर वापस जाने के लिए।
मारियो जी।

map <Esc>! :shell<CR>अपने में रखो .vimrc, और आप शेल को Alt +!, या Alt + Shift + 1 के साथ लॉन्च कर सकते हैं। (मेमानोनिक: शेल के साथ :!{cmd}निष्पादित {cmd}होता है।)
मसिफिल

:shellहालांकि एक नया नेस्टेड शेल स्तर शुरू होगा। जबकि ctrl-zऐसा नहीं है।
समझदार


31

vimcryption

vim -x filename.txt

आपसे पासफ़्रेज़, संपादन और सहेजने के लिए कहा जाएगा। अब जब भी आप vi में फाइल खोलेंगे तो आपको देखने के लिए पासवर्ड डालना होगा।


इसे अपने ड्रॉपबॉक्स के साथ सिंक करें और आपको एक बहुत अच्छा पासवर्ड मैनेजर मिलता है ;-)
लुइस नेल

15
लेकिन ध्यान दें कि जब तक आप set cryptmethod=blowfish(केवल 7.3+ में उपलब्ध) यह हँसी के साथ एक एल्गोरिथ्म का उपयोग करेगा। help encryptionअधिक विस्तार के लिए देखें ।
एबी

3
कृपया विम एन्क्रिप्शन का उपयोग न करें, अच्छा एन्क्रिप्शन नहीं है, और खराब सुरक्षा किसी से भी खराब नहीं है। अधिक जानकारी: github.com/neovim/neovim/issues/694
rodrigoq

2
dgl.cx/2014/10/vim-blowfish मेटा-tldr: "Vim 7.4.399 में तय किया गया है [group.google.com/forum/# ​​.msg/ vim_dev/D8FyRd0EwlE - bkBOo -hzTzoJ ] , पश्चगामी संगतता कारणों के लिए इसे आवश्यक है; एक नया क्रिप्टमिथोड बनना है, इसलिए :set cm=blowfish2"
अंडरस्कोर_ड

28

निर्माण और विम के भीतर से अपने कोड डिबग!

विन्यास

ज्यादा नहीं, सच में। आपको ज़रूरत है एकMakefile वर्तमान निर्देशिका में ।

संकलन करना

जब आप विम में हों, तो :makeशेल टाइप करें और अपना प्रोग्राम बनाएं। चिंता मत करो जब आउटपुट स्क्रॉल करता है; बस दबाओEnterजब वह विम पर वापस आ जाए तो ।

जादू

विम के भीतर वापस, आपके पास अपने निपटान में निम्नलिखित कमांड हैं:

  1. :cl त्रुटियों, चेतावनियों और अन्य संदेशों को सूचीबद्ध करता है।
  2. :ccस्क्रीन के निचले भाग में वर्तमान त्रुटि / चेतावनी संदेश प्रदर्शित करता है और आपके कोड में आक्रामक रेखा पर कूदता है
  3. :cc nnवें संदेश के लिए कूदता है ।
  4. :cn अगले संदेश के लिए अग्रिम।
  5. :cp पिछले संदेश के लिए कूदता है।

और भी हैं; यदि आप रुचि रखते हैं, तो :help :ccविम के भीतर से लिखें ।


1
केवल संकलन कोड से अधिक के साथ काम करता है। किसी भी एक मेकफाइल में लिखे गए किसी भी कार्य के लिए यह एक महान उपयोग है।
ड्वाइट स्पेंसर

25

^ पी और ^ एन

पिछला (^ P) या अगला (^ N) पाठ पूरा करें।

^ O और ^ I

पिछले (^ O - "O" पुराने के लिए) या अगले (^ I - "I" बस "O" के पास) पर जाएं।

जब आप खोज करते हैं, फ़ाइलों को संपादित करते हैं, आदि, तो आप इन "कूद" के माध्यम से आगे और पीछे नेविगेट कर सकते हैं।

निशान

प्रेस मा (एम-मार्क, ए - मार्क का नाम)। बाद में स्थिति में लौटने के लिए, `a टाइप करें ।


1
वाह, मुझे ^ O और ^ I के बारे में नहीं पता था: यह कमाल है। :help jump-motionsयदि कोई व्यक्ति अधिक जानकारी चाहता है तो आपके उत्तर में शामिल होने के लायक हो सकता है ।
DrAl

ShowMarks vim.org/scripts/script.php?script_id=152 देखें । यह आपको याद रखने में मदद करेगा कि आपके सभी निशान कहाँ और क्या हैं। आप
परीक्षक

मुझे ^ P और ^ N ... के बीच अंतर नहीं मिलता है
lajarre

@ लेजार्रे वे विपरीत दिशा में उपलब्ध पूर्णताओं की सूची के माध्यम से चक्र लगाते हैं
पैट्रिक ऑस्सिटी

2
मैं अक्सर ^ O ^ O का उपयोग करता हूं जब विम को खोलने के बाद मैंने देखा कि मैं अंतिम संपादित फ़ाइल को फिर से संपादित करना चाहता हूं। विशाल समय बचाने!
पैट्रिक ऑस्सिटी

24

%जब कर्सर अपने उद्धरण को खोजने के लिए उद्धरण, कोष्ठक, कोष्ठक या ब्रेस पर हो, तो दबाएं ।


20
यदि कर्सर उन में से किसी पर नहीं है, तो यह दाईं ओर शिफ्ट हो जाता है जब तक कि उनमें से कोई एक हिट नहीं करता।
साइबर ओलिवेरा

@ Léo: बोनस टिप के लिए धन्यवाद!
अदम लिस

22

जब तक [चरित्र] ( t)। यह किसी भी कमांड के लिए उपयोगी है जो एक सीमा को स्वीकार करता है। मेरा पसंदीदा है ct;या ct)जो सबकुछ अनुगामी अर्धविराम / समापन कोष्ठक तक हटा देता है और फिर आपको सम्मिलित मोड में रखता है।

इसके अलावा, Gऔर ggउपयोगी हैं (क्रमशः नीचे और ऊपर जाएं)।


यहाँ एक सबसे अच्छा है, हालांकि कुछ अन्य भी उपयोगी हैं, मैं सिर्फ उन्हें पहले से ही जानता था
फंककोडैट

1
इसके fबजाय t, जो उस चरित्र के माध्यम से [क्रिया] करेगा ; उदाहरण के लिए, फ़ंक्शन तर्क की शुरुआत में कर्सर रखने से, df,इसे (उपयुक्त भाषाओं में, निश्चित रूप से) हटा दिया जाएगा।
एक्टरक्लाविलिस

t और f एक कैमसेल चर के संपादन भाग के लिए महान हैं। उदाहरण के लिए, यदि आपने सिर्फ एक पंक्ति को दोहराया है और पहले परिवर्तनीय को दूसरे परिवर्तनीय में बदलने की आवश्यकता है, तो अपने कर्सर को पहली बार शुरू होने की स्थिति में रखें, फिर ctV
ग्रेग

1
टी और एफ भी काम करते हैं, लेकिन विपरीत दिशा में।
फेड जुएल

20

^r^w कमांड मोड में कर्सर के नीचे शब्द पेस्ट करने के लिए।

यह वास्तव में उपयोगी है जब grep का उपयोग करें या कमांड्स को बदलें।


यदि यह एकमात्र ऐसा शब्द है जो आप चाहते हैं, तो * सामान्य मोड में कर्सर के नीचे शब्द खोजेगा।
idbrii

17

उसके बाद एक लाइन नंबर टाइप करना ggआपको उस लाइन पर ले जाएगा।


31
: इसके बाद लाइन नंबर वही करता है: 42 लाइन नंबर 42 पर जाता है
एंटी वीराना

12
G के बाद एक पंक्ति संख्या टाइप करने पर समान प्रभाव पड़ता है।
साइबर ओलिवेरा

3
<number>go<number>फ़ाइल में वें वर्ण पर जाता है ।
एक्टरक्लाविलिस

17

काश मैं बुनियादी दृश्य ब्लॉक मोड सामान पहले जाना जाता है। यहां तक ​​कि अगर आप किसी और चीज के लिए विम का उपयोग नहीं करते हैं, तो यह कुछ ब्लॉक ऑपरेशन के लिए विम में एक फ़ाइल खोलने के लिए एक बड़ा समय बचाने वाला हो सकता है। मुझे पूरा यकीन है कि मैंने इस तरह का काम मैन्युअल रूप से करने में एक टन समय बर्बाद किया है।

उदाहरण के लिए, विशेष रूप से उपयोगी, जब मैं कहता हूं कि प्रतीकात्मक निरंतर नामों की सूचियों को फिर से प्राप्त करना, उदाहरण:

दृश्य अवरोध मोड दर्ज करें ( Ctrl+ Qके बजाय विंडोज पर मेरे लिए Ctrl+ V)

वांछित ब्लॉक को उजागर करने के लिए कर्सर को स्थानांतरित करें।

फिर, I whatever textऔर Escप्रत्येक पंक्ति पर ब्लॉक के सामने पाठ सम्मिलित करने के लिए दबाएँ ।

के Aबजाय का उपयोग करेंIप्रत्येक पंक्ति पर ब्लॉक के बाद पाठ सम्मिलित करने के ।

इसके अलावा - बस एक दृश्य चयन के मामले में भीख माँगना ~एक बड़ा समय बचाने वाला हो सकता है।

और बस कॉलम को हटाना, बहुत, dनिश्चित रूप से।


15

^ y कर्सर के ऊपर वर्ण को कॉपी करेगा।


6
... और ^ E कर्सर के नीचे वर्ण सम्मिलित करेगा
बहुत अधिक php

मेरे लिए काम नहीं करता है, यह सिर्फ पाठ की शुरुआत में एक कर्सर ले जाता है
एलेक्स

14

q <अक्षर> - एक मैक्रो रिकॉर्ड करता है।

तथा

@ <समान-पत्र> - इसे वापस खेलता है।

ये अब तक विम में सबसे उपयोगी कमांड हैं क्योंकि आपके पास कंप्यूटर आपके लिए बहुत सारे काम कर सकता है, और आपको प्रोग्राम या कुछ भी लिखने की ज़रूरत नहीं है।


के उपयोग qसरल मामलों, लेकिन आप इसे उपयोग करने के लिए आवश्यक नहीं हैं: सिर्फ एक नामित बफर आदेश बफर में बचाने "- उदाहरण के लिए, बफर का उपयोग कर a- "ad$...
मेई

@Mei qएक मैक्रो रिकॉर्ड करता है; मैक्रोज़ में कमांड हो सकते हैं, न कि सिर्फ टेक्स्ट, इसलिए इससे "ad$अलग है qa
ब्रायन मैककचटन

@Sortofabeginner यह यहाँ अप्रासंगिक है। कमांड "विज्ञापन $ टेक्स्ट को बफर ए और क्यूए में डालता है।
मेई

2
@Mei qaइसे नहीं चलाती है; qaइसे रिकॉर्ड करता है और @aचलाता है। यह सच है कि आप सादे पाठ में एक मैक्रो लिख सकते हैं, इसे रजिस्टर aकर सकते हैं जैसे कुछ के साथ रजिस्टर करें "ad$, और फिर इसे निष्पादित करें @a, लेकिन यह काफी अधिक काम है। कट-एंड-पेस्ट और रिकॉर्ड-एंड-रन के बीच एक बुनियादी अंतर है।
ब्रायन मैककचटन

रवींद्र! मैं जानता था कि। सुधार के लिए धन्यवाद
मेई

13

टैब का उपयोग करके कई फाइलें खोलना

:tabe filepath

खुली फ़ाइलों के बीच नेविगेट करना

gt and gT or :tabn and :tabp

खुले सत्र को सहेजें ताकि आप बाद में खुली फ़ाइलों की अपनी सूची में वापस आ सकें

:mksession session_file_name.vim

एक बनाया सत्र खोलें

vim -S session_file_name.vim

एक बार में सभी फ़ाइलों को बंद करें

:qa

एक और आदेश जो मैंने हाल ही में सीखा है

autocmd

यह आपको किसी ईवेंट पर कमांड चलाने की अनुमति देता है, इसलिए आप उदाहरण के लिए कमांड बना सकते हैं जब आप किसी फाइल को कुछ इस तरह से सेव करते हैं:

:autocmd BufWritePost *.cpp :make

12

qx कीस्ट्रोक्स रिकॉर्ड करना शुरू कर देगा। आप बहुत अधिक संपादन कार्य कर सकते हैं और विम इसे याद रखता है। जब आप समाप्त कर लें, तब q को फिर से हिट करें, और अपने कीस्ट्रोक को फिर से चलाने के लिए @x दबाएं । यह दोहराए जाने वाले संपादनों के लिए बहुत अच्छा है जो कि मानचित्रण लिखने के लिए बहुत जटिल हैं। आपके पास x के अलावा अन्य वर्ण का उपयोग करके कई रिकॉर्डिंग हो सकती हैं ।


5
साथ ही समान वर्ण 'x' को 'q' रिकॉर्ड मैक्रो कमांड और नामित क्लिपबोर्ड ("x ...) के बीच साझा किया जाता है। आप अपनी फाइल के आसपास बैठे मैक्रों के स्निपेट्स को छोड़ सकते हैं और उन्हें एक नामित क्लिपबोर्ड (जैसे" xyy) में कॉपी कर सकते हैं। ) और फिर उन्हें (@x) वापस चलाएं।
साइबर ओलिवेरा

और यदि आप कभी भी awesomist मैक्रो बनाते हैं, तो आप उस क्लिपबोर्ड को एक 'let @x = "" "(मैक्रो को" "में डालकर) के साथ अपने _vimrc में चिपका सकते हैं और इसे हमेशा के लिए सहेज सकते हैं!
केर्न्स

11

मुझे यह कहना होगा कि मेरा एक पसंदीदा मदद विंडो को एक नए टैब में डाल रहा है:

:tab help <help_topic>

यह एक नए टैब में मदद को खोलता है और, किसी को जो विम टैब से प्यार करता है, यह हास्यास्पद रूप से उपयोगी है।


2
बफ़र विम के टैब हैं। वे बेहतर vim वर्कफ़्लो द्वारा समर्थित हैं। मुझे संदेह है कि टैब केवल विम में जोड़े गए थे क्योंकि बहुत से लोग बफ़र्स को नहीं समझते थे।
still_dreaming_1

ठीक है बहुत जल्द यह कहने के बाद, मुझे टैब के लिए एक प्रयोग मिला। यह सच है कि यदि आप प्रति टैब एक बफर का उपयोग कर रहे हैं, तो आपको बफ़र्स के बारे में जानने की आवश्यकता है। यह नहीं है कि कैसे टैब का उपयोग करने का इरादा किया गया था। अधिकांश उन्नत विम उपयोगकर्ता बफ़र्स का उपयोग करते हैं जिस तरह से अधिकांश कार्यक्रमों में टैब का उपयोग किया जाता है। बहुत से लोग सोचते हैं कि टैब को विम में लेआउट का नाम दिया जाना चाहिए था। वे ज्यादातर अलग-अलग टैब में खुली खिड़कियों के विभिन्न संग्रह रखने के लिए हैं। आपके पास एक विशिष्ट बफर भी हो सकता है जिसे आप एक टैब में बहुत खुले में वापस जाते हैं, और अन्य सभी बफ़र्स को देखने के लिए दूसरे टैब का उपयोग करें।
still_dreaming_1

9

CW

परिवर्तन शब्द - कर्सर के नीचे शब्द को हटाता है और आपको एक नया टाइप करने के लिए इन्सर्ट मोड में डालता है। बेशक यह अन्य आंदोलन कुंजियों के साथ काम करता है, इसलिए आप लाइन के अंत में बदलने के लिए $ $ जैसी चीजें कर सकते हैं ।

f + वर्ण

वर्तमान लाइन पर चरित्र की अगली घटना को ढूँढता है। तो आप मौजूदा लाइन पर अगले "टी" तक सभी पाठ का चयन करने के लिए vft कर सकते हैं । यह एक और आंदोलन कुंजी है, इसलिए यह अन्य कमांड के साथ भी काम करता है।


9

:b [any portion of a buffer name]बफ़र्स स्विच करने के लिए। इसलिए यदि आपके पास दो बफ़र हैं, "somefile1.txt", और "someotherfile2.txt", तो आप बस दूसरे के साथ स्विच कर सकते हैं ":b 2.t<enter>"। यह टैब पूरा करने का भी समर्थन करता है, हालांकि इसकी आवश्यकता नहीं है।

टैब पूरा होने की बात करें तो सेटिंग :set wildmode=full wildmenuभी बहुत मददगार है। यह कमांड-मोड के लिए पूर्ण टैब को पूरा करने में सक्षम बनाता है, साथ ही साथ इसका उपयोग करते समय सभी संभावित मैचों के एक बहुत ही सहायक ncurses- शैली मेनू।


9

% S, / खोज, / बदलें,

आप /प्रतिस्थापन के लिए अलग-अलग पैटर्न के अलावा (स्लैश) अन्य वर्णों का उपयोग कर सकते हैं । इस तरह से आपको फ़ाइल पथ के स्लैश से बचना नहीं है।


2
अरे नरक हाँ। मुझे पता sedथा कि यह नहीं है vim। जितना अधिक आप जानते हैं
बीयरबाजे
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.