ගොනුවක අන්තර්ගතය බැලීම, ගොනුව බාහිරව යාවත්කාලීන කිරීම, වෙනස් කළ ගොනුව ප්රදර්ශනය කිරීම සහ අවශ්ය විටෙක එය සංස්කරණය කිරීමේ අවස්ථාව මට තිබුණි. මෙම පිළිතුරෙන් දේවානුභාවයෙන් මම එය Vim සේවාදායකය / දුරස්ථ විධාන රේඛා විකල්ප සමඟ විසඳා ගතිමි .
පහත දැක්වෙන විධානයන් සමඟ බාහිර විධානයක් හරහා ගොනුවක් නැවත පූරණය කළ හැකිය. පළමුව, සේවාදායක නිදසුනක් ආරම්භ කරන අතරතුර, Vim සමඟ ඇති ගොනුව විවෘත කරන්න.
vim --servername JABBERWOCKY /tmp/alice.log
ගොනුව බාහිරව වෙනස් කර ඇති බව උපකල්පනය කරමු, උදා echo "Curiouser and curiouser" >> /tmp/alice.log
. අවශ්ය වූ විට, ගොනුව නැවත පූරණය කිරීම සඳහා සේවාදායකයට විධානයක් යවන්න. මෙම විධානය ඉක්මණින් අවසන් වන අතර නව සංස්කාරකයක් බිහි නොවේ.
vim --servername JABBERWOCKY --remote-send ":e<CR>"
විවෘත කරන ලද ගොනුව Vim හා බාහිරව වෙනස් කර ඇත්නම්, නැවත පූරණය කිරීමේදී ගැටුමක් ඇති වේ (අනතුරු ඇඟවීමේ පණිවිඩයක් දිස්වනු ඇත). එවැනි අවස්ථාවකදී තීරණයක් ගත යුතුය: එය අතහැර Vim හි වෙනස්කම් තබා ගන්න, නැතහොත් දේශීය වෙනස්කම් ඉවත දමා නැවත පූරණය කිරීමට බල කරන්න .
--remote-send
ඉහත සඳහන් විධානයට අතින් නැවත පූරණය කිරීම අවශ්ය වේ. කෙසේ වෙතත්, එම විධානය සරල ලූපයකට බැඳ තැබිය හැකිය , බාෂ්ගේ for
/ while
භාවිතා කරමින් හෝ ලිනක්ස් / යුනික්ස් හි හැක් ලයිනර් භාවිතා කරමින්:
watch -n 1 'vim --servername JABBERWOCKY --remote-send ":e<CR>"'
පරීක්ෂා නොකළද, පවර්ෂෙල් හි ද මෙවැනි දෙයක් අවබෝධ කර ගත හැකි බව මට විශ්වාසයි.
ලිනක්ස් / යුනික්ස් හි සිදුවීම් පද්ධති ප්රවේශයක් සාක්ෂාත් කරගත හැකිය. උදා: inotify පුස්තකාලය භාවිතා කරමින් ගොනු පද්ධති සිදුවීම් වලට සවන්දීමෙන් ඔබ පිස්සු ගොනු පද්ධති භාවිතා නොකරන්නේ නම්. පුද්ගලිකව මම මෙවලම භාවිතා වැනි entr ප්රධාන Linux බෙදාහැරීම් ඇතුළත් කර ඇති බව පෙනේ ඇති අතර, එය ගොඩක්. එවිට මට ලැබෙන්නේ:
echo /tmp/alice.log | entr vim --servername JABBERWOCKY --remote-send ":e<CR>"
" Compare buffer with saved version
nnoremap gd :DiffSaved<CR>