මා සතුව වින්යාස ගොනුවක් මා සතුව විවෘතව තබා ඇත, නමුත් සමහර විට එය තැටියේ වෙනස් වේ, මෙම වෙනස්කම් පර්යන්තයේ පිළිබිඹු නොවී. ගොනුව වසා දමා නැවත විවෘත නොකර තිරයේ අන්තර්ගතය නැවුම් කළ හැකිද? එසේ නම්, කෙසේද?
මා සතුව වින්යාස ගොනුවක් මා සතුව විවෘතව තබා ඇත, නමුත් සමහර විට එය තැටියේ වෙනස් වේ, මෙම වෙනස්කම් පර්යන්තයේ පිළිබිඹු නොවී. ගොනුව වසා දමා නැවත විවෘත නොකර තිරයේ අන්තර්ගතය නැවුම් කළ හැකිද? එසේ නම්, කෙසේද?
Answers:
:editවත්මන් ගොනුව නැවත පූරණය කිරීම සඳහා ඔබට ගොනුවේ නමක් සඳහන් නොකර විධානය භාවිතා කළ හැකිය . ඔබ ගොනුවේ වෙනස් කිරීම් සිදු කර ඇත්නම් :edit!, වත්මන් ගොනුව නැවත පූරණය කිරීමට බල කිරීමට ඔබට භාවිතා කළ හැකිය
(ඔබගේ වෙනස් කිරීම් ඔබට අහිමි වනු ඇත).
විධානය :editකෙටියෙන් දැක්විය හැක :e. බල-සංස්කරණය මේ අනුව කළ හැකිය:e!
:e!.
:editසහ :edit!ඔබ භාවිතා කළ හැකිය :eසහ :e!පිළිවෙළින්.
uතීරණාත්මක ලෙස , ඔබට තවමත් එය කළ හැකිය :e!.
:bufdo e
ගොනුව අතින් නැවුම් කිරීමට අමතරව :edit, ඔබට ඔබේ දෑතට දැමිය හැකිය~/.vimrc
:set autoread
Vim විසින් සංස්කරණය නොකළ ඕනෑම ලිපිගොනු ස්වයංක්රීයව නැවුම් කිරීමට. එසේම බලන්න :checktime.
git pullනොදැනුවත්වම තිරයේ ඔබගේ සුරකින ලද වෙනස්කම් ඔබට අහිමි විය හැකිය.
gvimබාහිර විධාන භාවිතා කිරීමට හෝ ක්රියාත්මක කිරීමට සිදුවේ .
:checktime
autoreadකර්සරය චලනය වීම නැවැත්වීමෙන් තත්පර X කට පසු ස්වයංක්රීයව ක්රියාත්මක කළ හැකිය, මෙම පිළිතුර බලන්න .
ඔබේ ජීවිතය යහපත් කර ගැනීම සඳහා එකතු කිරීමට රේඛා වෙත යන Wrap-upමාතෘකාව වෙත යන්න vimrc.
දුවන්න :checktime
Vim වලින් පිටත කිසියම් බෆරයක් වෙනස් කර ඇත්දැයි පරීක්ෂා කරන්න. ඔබ ගොනුවක අනුවාද දෙකකින් අවසන් වන්නේ දැයි මෙය පරීක්ෂා කර අනතුරු අඟවයි.
වෙනස්කම් ස්වයංක්රීයව පැටවීම සඳහා, ඔබගේ vimrc:
Vim වලින් පිටත ගොනුවක් වෙනස් කර ඇති බව අනාවරණය වූ විට සහ එය Vim තුළ වෙනස් කර නොමැති විට, එය ස්වයංක්රීයව නැවත කියවන්න. ගොනුව මකා දැමූ පසු මෙය සිදු නොවේ.
මෙම පිළිතුර අවවාදයක් එක් කරයි:
ඔබ බාහිර විධානය ක්රියාත්මක කිරීම වැනි දෙයක් නොකරන්නේ නම් Autoread ගොනුව නැවත පූරණය නොකරයි (වැනි
!lsහෝ වෙනත්!sh)
විසඳුම් සඳහා කියවන්න.
ඔබගේ vimrc:
au CursorHold,CursorHoldI * checktime
පෙරනිමියෙන්, කර්සරය තත්පර 4 ක් රැඳී සිටීමෙන් පසුව කර්සරය හෝල්ඩ් අවුලුවන අතර යාවත්කාලීන වේලාව හරහා වින්යාසගත කළ හැකිය .
ඔබේ පහත සඳහන් එක් කරන්න vimrcඇවිලවීමට autoreadඅතර අවරෝධක වෙනස් කරන අවස්ථාවේදී ඇතුළත විම්:
au FocusGained,BufEnter * :checktime
ඇති FocusGained(ඉහත බලන්න) සරල විම් වැඩ, පර්යන්ත ප්රොජෙක්ට් (Xterm, tmux, ආදිය) තුල ප්ලගිනය ස්ථාපනය:
විම්-tmux අවධානය--සිද්ධීන්
Tmux අනුවාද>> 1.9 හි, ඔබට එකතු කිරීමට අවශ්ය වන්නේ .tmux.conf:
set -g focus-events on
autoreadප්රේරක ද හැකි විට දැනුම්දීම් .
vimrcඉහත සියල්ල ක්රියාත්මක කිරීමට මගේ රේඛා මෙන්න :
" Triger `autoread` when files changes on disk
" /unix/149209/refresh-changed-content-of-file-opened-in-vim/383044#383044
" /vi/13692/prevent-focusgained-autocmd-running-in-command-line-editing-mode
autocmd FocusGained,BufEnter,CursorHold,CursorHoldI *
\ if mode() !~ '\v(c|r.?|!|t)' && getcmdwintype() == '' | checktime | endif
" Notification after file change
" /vi/13091/autocmd-event-for-autoread
autocmd FileChangedShellPost *
\ echohl WarningMsg | echo "File changed on disk. Buffer reloaded." | echohl None
මාව නිවැරදි දිශාවට යොමු කිරීම ගැන එරිච්බස්චුල්ස්ටau CursorHold ස්තූතියි .
Cmdwin ගැටළුව විසඳීම සඳහා මෙම පිළිතුරට ස්තූතියි .
:h cmdwin) දෝෂ ගැන පුදුම වන අය සඳහා : modeපරීක්ෂා කිරීම ප්රමාණවත් නොවේ, vi.stackexchange.com/q/14315/6891 බලන්න .