يمكن أن أرى التغييرات قبل حفظ الملف في همة?

StackOverflow https://stackoverflow.com/questions/749297

  •  09-09-2019
  •  | 
  •  

سؤال

يمكنني استخدام Vim.لقد فتح ملف.أنا تحريره وأريد أن أرى ما كنت تحريرها من قبل حفظه.

كيف يمكنني أن أفعل هذا في همة?

هل كانت مفيدة؟

المحلول

http://vim.wikia.com/wiki/diff_current_buffer_and_the_original_file.

فيما يلي وظيفة وأمر لرؤية فرق بين الملف المحرر حاليا وإصداره غير الموصوف في نظام الملفات. فقط ضع هذا في VIMRC الخاص بك أو في دليل البرنامج المساعد، افتح ملف، وجعل بعض التعديلات دون حفظها، والقيام به :DiffSaved.

function! s:DiffWithSaved()
  let filetype=&ft
  diffthis
  vnew | r # | normal! 1Gdd
  diffthis
  exe "setlocal bt=nofile bh=wipe nobl noswf ro ft=" . filetype
endfunction
com! DiffSaved call s:DiffWithSaved()

للخروج من عرض فرق يمكنك استخدام :diffoff أمر.

فيما يلي وظيفة مماثلة، تتكيف مع تحاكي 'cvs diff' أمر...

نصائح أخرى

:w !diff % -

لأن بعض الناس سئل عن تفسير الأمر

:w !diff % -

هنا هو بلدي محاولة كتابة إجابة أكثر تفصيلا:

أنا على افتراض أن كنت تعمل على نظام cat و echo تثبيت (على سبيل المثالأي ما يقرب من جنو/لينكس, نظام التشغيل Mac OS, BSD وغيرها من أنظمة يونكس مثل).

الأمر أعلاه يعمل على النحو التالي:

  1. بناء الجملة من أجل حفظ الملف في همة هو:

    :w <filename>
    
  2. بناء الجملة من أجل تنفيذ shell في همة هو:

    :!<command>
    
  3. داخل قذيفة البيئة الصادرة عن همة % يحدث أن المرحلة الحالية اسم الملف.يمكنك التحقق من ذلك عن طريق تنفيذ ما يلي:

    :!echo %
    

    هذا يجب إخراج الملف (أو خطأ ، إذا همة كان تشغيل بدون اسم).

    استخدام القط يمكننا أيضا إنتاج محتوى الملف:

    :!cat %
    

    يجب إرجاع الملفات المحتوى في آخر الدولة حفظها أو خطأ إذا لم يتم حفظها.

  4. برنامج مهرجان دبي السينمائي الدولي قادرا على قراءة من الإدخال القياسي (stdin).رجل الصفحة التالية:

    [...] إذا كان ملف '-', قراءة الإدخال القياسية.[...]

  5. تنفيذ الأمر حفظ من دون اسم بل الأمر shell وراء ذلك أسباب همة لكتابة ملفات المحتوى ستدين من قذيفة بدلا من حفظه في ملف فعلي.يمكنك التحقق من ذلك عن طريق تنفيذ

    :w !cat
    

    هذا ينبغي دائما طباعة ملفات المحتوى الحالي (التي كانت مكتوبة إلى ملف بدلا من ذلك).

وضعه معا (أو tl;dr):الملف هو "الخلاص" إلى ستدين مهرجان دبي السينمائي الدولي هو تشغيل مع الملف و ستدين كإدخال.

هذا مع العلم يمكن أيضا مقارنة الملفات مع vimdiff تفعل شيئا مثل هذا هو مجرد فكرة كنت لا تريد أن تفعل هذا:

:w !cat > /tmp/tempFile && vimdiff /tmp/tempFile % && rm /tmp/tempFile

(ثم فتح للقراءة فقط وإغلاق vimdiff باستخدام :qall)

أنا دائما أحب diffchanges. - لطيفة وبسيطة، يعمل.

من vimrc_example.vim:

" Convenient command to see the difference between the current buffer and the
" file it was loaded from, thus the changes you made.
if !exists(":DiffOrig")
  command DiffOrig vert new | set bt=nofile | r # | 0d_ | diffthis
          \ | wincmd p | diffthis
endif

مصدر ما يلي واستخدام: أمر فرق

function! s:diff()
    let tmpa = tempname()
    let tmpb = tempname()
    earlier 100h
    exec 'w '.tmpa
    later 100h
    exec 'w '.tmpb
    update
    exec 'tabnew '.tmpa
    diffthis
    vert split
    exec 'edit '.tmpb
    diffthis
endfunction
command! -nargs=0 DIFF call <SID>diff()

ليس بالضبط ما تبحث عنه ولكن scmdiff.vim. هو رائع حقا. كيك إسباني واحد، ويبرز ملفك الحالي مع مراجعة الرأس في Repo تحكم مصدر. من المفترض أن تعمل مع العديد من SCMS. أنا استخدمها مع perforce.

هناك مكون إضافي، بناء على إجابات مختلفة هنا: https://github.com/gangleri/vim-diffsaved.

إنه يوفر :w !diff % - الطريقة والمشاركة diffthis واحد.

بعيدا عن هذا Unterree. يسمح بذلك أيضا، ولكن أيضا أكثر من ذلك بكثير (ينقسم بين نقاط التفتيش المختلفة التراجع). مشابه ل غوندو.

أستطيع أن أوصي histwin. توصيل في.

في حين أنه لا ينبع الحالية المحفوظة نسخة من الملف (مثل الإجابات الأخرى)، يمكن يتغير Vimdiff منذ أن بدأت في الخضار, ، وحتى اعادته التغييرات الخاصة بك في النظام. يظهر الفرق إذا حفظت وسيطا.

بالإضافة إلى ذلك، يعرض قائمة جميع فروع التراجع عن التاريخ ويسمح لك بالتبديل أو فرق بينهما.

ملاحظة: في حين أن البرنامج المساعد لا يتقبط لحظات تلقائيا في سجل تحرير لأن كل تغيير ملف، فيمكنك صراحة "العلامة" في اللحظة التي تقوم فيها بحفظ الملف بحيث يمكنك لاحقا VIMDIFF معها، إذا كنت تريد ذلك. ربما هذا يمكن أن يكون الآلي؟

إذا كنت ترغب في استخدام VIM للمقارنة مثل VIMDIFF، فيمكنك فعل شيء مثل هذا:

تحرير .vimrc وإضافة:

nmap <F8> :w !vim -M -R - -c ":vnew % \| windo diffthis"<CR><CR>

من هناك سترى تغييراتك ويمكن أن يتم إنهاء عرض Diff باستخدام qall مثل في Vimdiff عن طريق الضغط على F8 في وضع الأوامر. استبدل F8 مع أي مفتاح تريده.

تحرير: تمت إضافة -M إلى عدم السماح بأي تعديل، لأنه لا يتم حفظه.

اتبع ما سبق يشير إلى أنني استخدم GIT Diff الذي يعجبني كثيرا:

:w !git diff  % -
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top