मैं आमतौर पर फाइलों पर काम करता हूं जो संस्करण नियंत्रण के माध्यम से फाइल सिस्टम में अपडेट किए जाते हैं। फ़ाइल को फिर से फ़ाइल किए बिना पुनः लोड करने का एक त्वरित तरीका क्या है C-x C-f
और पूछा जा रहा है कि क्या मैं इसे फिर से लोड करना चाहता हूं?
मैं आमतौर पर फाइलों पर काम करता हूं जो संस्करण नियंत्रण के माध्यम से फाइल सिस्टम में अपडेट किए जाते हैं। फ़ाइल को फिर से फ़ाइल किए बिना पुनः लोड करने का एक त्वरित तरीका क्या है C-x C-f
और पूछा जा रहा है कि क्या मैं इसे फिर से लोड करना चाहता हूं?
जवाबों:
M-x revert-buffer
जैसा आप चाहते हैं वैसा ही करेंगे। यह अभी भी पुष्टि के लिए पूछेगा।
एक अन्य विकल्प (मेरा पसंदीदा) निम्न कार्य है:
;; Source: http://www.emacswiki.org/emacs-en/download/misc-cmds.el
(defun revert-buffer-no-confirm ()
"Revert buffer without confirmation."
(interactive)
(revert-buffer :ignore-auto :noconfirm))
(revert-buffer t (not (buffer-modified-p)) t)
।
ऐसा भी है auto-revert-mode
जो इसे स्वचालित रूप से करता है और आपको प्रतिक्रिया देता है।
डॉक्टर स्ट्रिंग से:
auto-revert-mode is an interactive autoloaded compiled Lisp function
in `autorevert.el'.
(auto-revert-mode &optional ARG)
Toggle reverting buffer when the file changes (Auto Revert mode).
With a prefix argument ARG, enable Auto Revert mode if ARG is
positive, and disable it otherwise. If called from Lisp, enable
the mode if ARG is omitted or nil.
Auto Revert mode is a minor mode that affects only the current
buffer. When enabled, it reverts the buffer when the file on
disk changes.
Use `global-auto-revert-mode' to automatically revert all buffers.
Use `auto-revert-tail-mode' if you know that the file will only grow
without being changed in the part that is already in the buffer.
एक अन्य विकल्प, जिसका मैं उपयोग करता हूं, के लिए find-alternate-file
बाध्य है C-x C-v
। यह आपके वर्तमान बफ़र का पुन: उपयोग करने वाली फ़ाइल खोलता है।
डिफ़ॉल्ट रूप से, यह उस फ़ाइल की ओर इशारा करता है, जिस पर आप वर्तमान में हैं, इसलिए आप C-x C-v RET
अपनी फ़ाइल को पुनः लोड करने के लिए टाइप कर सकते हैं । यह तब तक संकेत नहीं देगा जब तक कि आपके बफ़र ने डेटा को सहेज नहीं लिया है।
जैसे कुछ गैर-पाठ मोड image-mode
और (प्रतिपादन चित्र, pdf, SVGs ... आदि के लिए प्रयोग किया जाता) dired
है revert-buffer
करने के लिए बाध्य g
तेज़ पहुंच के लिए।
C-x C-v
।
Emacs यह कहता है reverting
।
आप के साथ वर्तमान फ़ाइल को वापस कर सकते हैं M-x revert-buffer
। यह पुष्टि के लिए संकेत देता है कि फ़ाइल को संशोधित किया गया है या नहीं, केवल चर में सूचीबद्ध पैटर्न से मेल खाने वाली फ़ाइलों को छोड़कर revert-without-query
(विवरण के लिए मैनुअल देखें)। एक और सामयिक झुंझलाहट revert-buffer
यह है कि यह फ़ाइल मोड को डिफ़ॉल्ट पर रीसेट करता है।
मैं फ़ाइलों के एक समूह को नाम देने के लिए निम्नलिखित फ़ंक्शन का उपयोग करता हूं। यदि कोई फ़ाइल कुछ बफ़र में नहीं खोली गई है, तो इसे अनदेखा कर दिया जाता है।
(defun revert-files (&rest files)
"Reload all specified files from disk.
Only files that are currently visited in some buffer are reverted.
Do not ask confirmation unless the buffer is modified."
(save-excursion
(let ((revert-without-query '("")))
(dolist (file-name files)
(message "Considering whether to revert file %s" file-name)
(let ((buf (find-buffer-visiting file-name)))
(when buf
(message "Reverting file in buffer %s" (buffer-name buf))
(set-buffer buf)
(revert-buffer t nil t)))))))
इस फ़ंक्शन के लिए एक विशिष्ट उपयोग का मामला संस्करण नियंत्रण से फ़ाइलों को अपडेट करने के बाद है। अद्यतन की गई सभी फ़ाइलों पर emacsclient
कॉल करने के लिए उपयोग करें revert-files
, या (यह आसान है, और केवल थोड़ा धीमा) अपडेट द्वारा संबंधित है। मैं निम्नलिखित शेल स्क्रिप्ट को कॉल करता हूं, इसे फाइलों को तर्क के रूप में पारित करता हूं:
#! /bin/sh
# Similar to gnuclient, but call `revert-files' on the files.
files=
## Find a way to convert a path to absolute. Bizarre OSes such as Windows
## require special cases. We also try to detect non-filenames such as URIs.
case `uname -s` in
CYGWIN*)
absolute_path () {
cygpath -a -w -- "$1"
};;
*)
wd="`pwd -P 2>/dev/null || pwd`"
absolute_path () {
case "$1" in
/*) printf '%s' "$1";; # ordinary absolute path
*:/*)
if expr "z$1" : 'z[0-9A-Z_a-z][-.0-9@A-Z_a-z]*:/.*'; then
printf '%s' "$1" # URI or machine:/some/path
else
printf '%s' "$wd/$1" # default to a relative path
fi;;
*) printf '%s' "$wd/$1";; # default to a relative path
esac
};;
esac
for x; do
files="$files \"`absolute_path "$x" | sed 's/[\\\\\\\"]/\\\\&/g'`\""
done
exec emacsclient -e "(revert-files$files)"
उपयोग उदाहरण:
svn update
find -name .svn -prune -o -type f -exec emacsclient-revert {} +
आप नीचे दिखाए अनुसार वैश्विक-ऑटो-रिवर्ट-मोड भी सक्षम कर सकते हैं
(global-auto-revert-mode 1)
यह तब मददगार होता है, जब आप अपने js फाइलों की बहुत सारी जाँचें ऑटो-फिक्स मोड से सक्षम करते हैं, जैसे jssc में।
आप उपयोग कर सकते हैं find-alternate-file
, जो C-x C-vडिफ़ॉल्ट रूप से बाध्य है , और RETफ़ाइल को पुनः लोड करने के लिए बस प्रॉम्प्ट पर टाइप करें ।
Spacemacs उपयोगकर्ताओं के लिए: SPC b R
( spacemacs/safe-revert-buffer
)।
पुष्टिकरण को छोड़ देने के लिए, अन्य उत्तर पहले से ही कवर कर लेते हैं, हालांकि मैं दूसरों से सहमत हूं कि यह एक कुंजी को बांधने के लिए एक अच्छा विचार नहीं है।
मैगिट स्वचालित रूप से आपके लिए फ़ाइल रिवर्सल का प्रबंधन करता है, इस प्रकार आपकी मूल समस्या को हल करता है। आप इसकी अन्य विशेषताओं से भी लाभान्वित होते हैं।
यहां उन सेटिंग्स को ट्विक करने के लिए डॉक्स दिए गए हैं जिनमें आप रुचि रखते हैं:
यदि आप मैगिट के साथ चिपके रहते हैं, तो काम खोने से बचने के लिए सभी 3 वैश्विक डब्ल्यूआईपी मोड (वर्क इन प्रोग्रेस) को सक्षम करना सुनिश्चित करें ।
आप इस प्रकार मैगिट के साथ Emacs के अंदर संस्करण-नियंत्रण क्रिया कर सकते हैं और अपनी मूल समस्या से पूरी तरह बच सकते हैं।
misc-cmds.el
:। नहीं यह जटिल है, लेकिन जब आप कुछ नकल वास्तव में यह स्रोत को इंगित करने के आम शिष्टाचार है।