मैं हाल ही में खोली गई फ़ाइलों में स्थानों पर कूदने के लिए निशानों का उपयोग कैसे कर सकता हूं, लेकिन बदला नहीं गया?


11

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

" वर्तमान बफ़र से बाहर निकलने पर कर्सर की स्थिति में। पहली पंक्ति के पहले चरित्र के लिए चूक। देखें | अंतिम स्थिति-कूद | प्रत्येक खोली गई फ़ाइल के लिए इसका उपयोग कैसे करें। केवल एक स्थिति प्रति बफर याद की जाती है, प्रत्येक विंडो के लिए एक नहीं। जब तक बफर एक विंडो में दिखाई देता है तब तक स्थिति को बदला नहीं जाएगा। {वि में नहीं}।

हालाँकि अगर मैं

  • बफ़र दिखा रही सभी विंडो बंद करें (लेकिन बफ़र अभी भी बफ़र सूची में मौजूद है)। या:
  • बफर के सभी उदाहरणों को मार डालो

मार्क अपडेट नहीं होता है, मैं बफर / फ़ाइल में अंतिम कर्सर स्थिति के स्थान पर कूदने के लिए मार्क का उपयोग कैसे कर सकता हूं?


2
मुझे लगता है कि आप देख रहे हैं Ctrl+oऔर Ctrl+i... :h jump-motionsअधिक जानकारी के लिए
संदीप

@spasic एक बुरा सुझाव नहीं है, लेकिन एक बार जब आप कुछ दर्जन छलांग लगाते हैं, तो स्थिति एक विशाल कूद सूची में खो जाएगी। बफ़र के निशान को
हटाकर

यदि आपने इसे पहले से नहीं पढ़ा है, तो मुझे लगता है कि यह टिप दिलचस्प होगा। हो सकता है कि आप अपने tweak करना होगाviminfo
statox

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

जवाबों:


6

यहाँ एक क्लासिक समाधान है: उपयोग

`H

अंतिम HTML फ़ाइल पर जाने के लिए…

augroup VIMRC
  autocmd!

  autocmd BufLeave *.css  normal! mC
  autocmd BufLeave *.html normal! mH
  autocmd BufLeave *.js   normal! mJ
  autocmd BufLeave *.php  normal! mP
augroup END

2
धन्यवाद, ऐसा लगता है कि यह वास्तव में उपयोगी हो सकता है। मैंने इसे आज़माने के लिए इसे अपने vimrc में लोड किया है। जब WinLeaveमैंने देखा BufLeaveहै कि आपने एक विभाजन को बंद कर दिया है और बफर अभी भी कहीं और खुला है, तो मैंने देखा है कि मैंने आटोक्मड में बदल दिया है। मुझे पता है कि यह एक किनारे का मामला है, लेकिन WinLeave"फाइल क्लोजिंग" प्रकार की स्थितियों की एक विस्तृत श्रृंखला पर काम करना लगता है, लेकिन मैं अभी भी परीक्षण कर रहा हूं ...
the_velour_fog

3

मैंने यह विम्सस्क्रिप्ट स्टेटमेंट लिखा, जो काम करने लगता है

autocmd BufLeave * :normal ml

व्याख्या

  • BufLeave ऑटो कमांड: जब आप ट्रिगर करना चाहते हैं
    • दूसरी खिड़की पर जाएँ
    • जब आप बफर को प्रदर्शित करने वाली अंतिम विंडो को बंद करते हैं
    • जब आप बफ़र को स्वयं के साथ बंद करते हैं bd
  • :normal- यह डिफ़ॉल्ट रूप से लगता है, commandऑटोकैड का हिस्सा एक पूर्व कमांड है। तो एक सामान्य मोड कमांड चलाने के लिए विम को बताने के लिए, आपको जोड़ना होगा:normal
  • ml- एक चिह्न सेट करें l(mnemonic: अंतिम )

प्रयोग

पिछली बार जब आप बफर में थे, कर्सर की स्थिति को याद करने के लिए बस हिट करें

'l

या

`l

0

यदि आप अपना कर्सर viminfo के लिए ज्ञात अंतिम स्थिति को पुनर्स्थापित करना चाहते हैं , तो आप उपयोग कर सकते हैं

autocmd BufReadPost * call setpos(".", getpos("'\""))

रोमेनिल का उत्तर मेरे लिए विशेष रूप से उपयोगी रहा है, और मैं इसका बहुत उपयोग कर रहा हूं (क्योंकि मैं एक वेब देव हूं):

augroup VIMRC
    autocmd!
    autocmd BufLeave,WinLeave *.html normal! mH
    autocmd BufLeave,WinLeave *.css normal! mC
    autocmd BufLeave,WinLeave *.js normal! mJ
augroup end

nnoremap <space>h `Hzz
nnoremap <space>c `Czz
nnoremap <space>j `Jzz

अंतिम संभावित उपयोगी चीज विकल्प है :help 'nostartofline:

               *'startofline'* *'sol'* *'nostartofline'* *'nosol'*
'startofline' 'sol' boolean (default on)
            global
            {not in Vi}
    When "on" the commands listed below move the cursor to the first
    non-blank of the line.  When off the cursor is kept in the same column
    (if possible).  This applies to the commands: CTRL-D, CTRL-U, CTRL-B,
    CTRL-F, "G", "H", "M", "L", gg, and to the commands "d", "<<" and ">>"
    with a linewise operator, with "%" with a count and to buffer changing
    commands (CTRL-^, :bnext, :bNext, etc.).  Also for an Ex command that
    only has a line number, e.g., ":25" or ":+".
    In case of buffer changing commands the cursor is placed at the column
    where it was the last time the buffer was edited.
    NOTE: This option is set when 'compatible' is set.
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.