Vim සමඟ ඇති ඔබේ ගැටලුව නම් ඔබ vi නොරැවටීමයි .
ඔබ කැපීම ගැන සඳහන් කරන yy
අතර ඔබට කිසි විටෙකත් සම්පූර්ණ රේඛා කැපීමට අවශ්ය නැති බවට පැමිණිලි කරයි. ඇත්ත වශයෙන්ම ක්රමලේඛකයින්, මූලාශ්ර කේතය සංස්කරණය කිරීම, බොහෝ විට අවශ්ය වන්නේ සම්පූර්ණ රේඛා, රේඛා පරාසයන් සහ කේත කොටස් මත වැඩ කිරීමට ය. කෙසේ වෙතත්, yy
නිර්නාමික පිටපත් බෆරයට පෙළ යැවීමට බොහෝ ක්රමවලින් එකක් පමණි (හෝ vi හි සඳහන් පරිදි "ලියාපදිංචි වන්න" ).
Vi හි "සෙන්" යනු ඔබ භාෂාවක් කතා කිරීමයි. ආරම්භය y
ක්රියා පදයකි. ප්රකාශය yy
සඳහා සමාන පදයකි y_
. මෙම y
එවැනි පොදු මෙහෙයුම නිසා දක්වා, එය ටයිප් කිරීමට පහසු දෙගුණ වේ.
මෙයද ප්රකාශ කළ හැකිය dd
P
(වත්මන් රේඛාව මකා දමා පිටපතක් නැවත ස්ථානගත කරන්න; පිටපතක් නිර්නාමික ලේඛනයේ අතුරු ආබාධයක් ලෙස තබන්න). මෙම y
සහ d
"ක්රියා පද" ඕනෑම ව්යාපාරයක් සිය ලෙස ගන්න "විෂය." මේ අනුව yW
"කර්සරය) වත්මන් / ඊළඟ (විශාල) වචනයේ අවසානය දක්වා" සහ y'a
"මෙතැන් සිට ' අ ' යන සලකුණ අඩංගු රේඛාවට යොන්ක් වේ ."
ඔබ මූලික, ඉහළ, පහළ, වම් සහ දකුණු කර්සර චලනයන් පමණක් තේරුම් ගන්නේ නම් vi ඔබ වෙනුවෙන් “නොට්පෑඩ්” පිටපතකට වඩා tive ලදායී නොවනු ඇත. (හරි, ඔබට තවමත් සින්ටැක්ස් ඉස්මතු කිරීම සහ ඩොලර් 45KB හෝ ඊට වඩා විශාල ලිපිගොනු හැසිරවීමේ හැකියාව ඇත; නමුත් මා සමඟ මෙහි වැඩ කරන්න).
vi හි "ලකුණු" 26 ක් සහ "රෙජිස්ටර්" 26 ක් ඇත. m
විධානය භාවිතා කර ඕනෑම කර්සර ස්ථානයකට සලකුණක් සකසා ඇත . සෑම සලකුණක්ම කුඩා අකුරකින් නම් කර ඇත. මේ අනුව ma
' a ' සලකුණ වත්මන් ස්ථානයට mz
සකසා ' z ' සලකුණ සකසයි . '
(තනි උපුටා දැක්වීම) විධානය භාවිතා කර ඔබට සලකුණක් සහිත රේඛාවට ගමන් කළ හැකිය . මේ අනුව 'a
' a ' සලකුණ අඩංගු රේඛාවේ ආරම්භයට ගමන් කරයි . `
(Backquote) විධානය භාවිතා කර ඔබට ඕනෑම සලකුණක නිශ්චිත ස්ථානයට යා හැකිය . මේ අනුව `z
' z ' සලකුණෙහි නිශ්චිත ස්ථානයට කෙලින්ම ගමන් කරනු ඇත .
මේවා “චලනයන්” වන බැවින් ඒවා වෙනත් “ප්රකාශ” සඳහා විෂයයන් ලෙස ද භාවිතා කළ හැකිය.
එබැවින්, අත්තනෝමතික පෙළ තෝරා ගැනීමක් කපා දැමීමේ එක් ක්රමයක් වනුයේ සලකුණක් අතහැර දැමීමයි (මම සාමාන්යයෙන් ' අ ' මගේ "පළමු" සලකුණ ලෙසද, ' z ' මගේ ඊළඟ සලකුණ ලෙසද, ' බී ' තවත් සලකුණක් ලෙසද, ' ඊ ' ලෙසද භාවිතා කරමි. තවත් එකක් ( vi භාවිතා කිරීමෙන් වසර 15 ක් තුළ අන්තර්ක්රියාකාරී ලෙස ලකුණු හතරකට වඩා භාවිතා කර ඇති බව මට මතක නැත ; යමෙකුගේ අන්තර්ක්රියාකාරී සන්දර්භයට බාධා නොවන මැක්රෝස් විසින් ලකුණු සහ රෙජිස්ටර් භාවිතා කරන්නේ කෙසේද යන්න පිළිබඳව තමන්ගේම සම්මුතීන් නිර්මාණය කරයි) එවිට අපි යමු අපේ අපේක්ෂිත පා of යේ අනෙක් කෙළවරට; අපට දෙපැත්තෙන්ම ආරම්භ කළ හැකිය, එය කමක් නැත. එවිට අපට සරලව d`a
කැපීමට හෝ y`a
පිටපත් කිරීමට භාවිතා කළ හැකිය . මේ අනුව සමස්ත ක්රියාවලියටම යතුරු 5 ක් ඉහළින් ඇත (හය අපි "ඇතුල් කිරීම ආරම්භ කළහොත්" "ප්රකාරය සහ අවශ්ය වේEscපිටත විධාන මාදිලිය). අපි කපා හෝ පිටපත් කළ පසු පිටපතක ඇලවීම තනි යතුරු පහරකි:p
.
පෙළ කැපීමට හෝ පිටපත් කිරීමට මෙය එක් ක්රමයක් බව මම කියමි. කෙසේ වෙතත්, එය බොහෝ දෙනාගෙන් එකක් පමණි. අපගේ කර්සරය එහා මෙහා ගෙනයාමෙන් හා සලකුණක් අත නොතබා නිතර අපට පෙළ පරාසය වඩාත් සංක්ෂිප්තව විස්තර කළ හැකිය. උදාහරණයක් ලෙස මම පෙළ ඡේදයක් ඉන්නේ නම් මම භාවිතා කළ හැකි {
හා }
පිළිවෙළින් ඡේදය ආරම්භයක් හෝ අවසානයක් කිරීමට ව්යාපාර. එබැවින්, පෙළ ඡේදයක් ගෙනයාමට මම එය කපා {
d}
(යතුරු එබීම් 3). (මම දැනටමත් මා පසුව හුදෙක් භාවිතා කළ හැකි ඡේදය පළමු හෝ අවසාන තුරුම්පුවයි විය සිදු නම් d}
හෝ d{
පිළිවෙළින්.
"ඡේදය" යන සංකල්පය සාමාන්යයෙන් සිතාමතාම සාධාරණ දෙයකට පෙරනිමි. මේ අනුව එය බොහෝ විට කේත මෙන්ම ගද්ය සඳහාද ක්රියා කරයි.
අප උනන්දුවක් දක්වන පෙළෙහි එක් කෙළවරක් හෝ අනෙක් කෙළවර සලකුණු කරන යම් රටාවක් (නිත්ය ප්රකාශනය) අපි නිතර දනිමු. ඉදිරියට හෝ පසුපසට සෙවීම vi හි චලනයන් වේ . මේ අනුව ඒවා අපගේ “ප්රකාශ” වල “විෂයයන්” ලෙසද භාවිතා කළ හැකිය. එබැවින් d/foo
වත්මන් රේඛාවේ සිට "foo" නූල අඩංගු ඊළඟ පේළියට කැපීමට සහ වත්මන් රේඛාවේ සිට y?bar
"තීරුව" අඩංගු නවතම (පෙර) පේළියට පිටපත් කිරීමට මට භාවිතා කළ හැකිය . මට සම්පූර්ණ රේඛා අවශ්ය නොවන්නේ නම්, මට තවමත් සෙවුම් චලනයන් (ඔවුන්ගේම ප්රකාශ ලෙස) භාවිතා කළ හැකිය, මගේ ලකුණු (ය) අතහැර දමා `x
කලින් විස්තර කර ඇති පරිදි විධාන භාවිතා කරන්න .
"ක්රියාපද" සහ "විෂයයන්" වලට අමතරව vi ට "වස්තු" ද ඇත (යෙදුමේ ව්යාකරණමය අර්ථයෙන්). මෙතෙක් මා විස්තර කර ඇත්තේ නිර්නාමික ලේඛනයේ භාවිතය පමණි. කෙසේ වෙතත්, "වස්තු" යොමුව (ද්විත්ව උපුටා දැක්වීමේ විකරණකාරකය) සමඟ උපසර්ග කිරීමෙන් මට "නම් කරන ලද" රෙජිස්ටර් 26 න් ඕනෑම එකක් භාවිතා කළ හැකිය "
. මේ අනුව මම භාවිතා කරන්නේ නම් මම "add
වත්මන් රේඛාව ' අ ' "by/foo
ලේඛනයට කපන අතර මම භාවිතා කරන්නේ නම් මම මෙහි සිට පිටුවේ පිටපතක් "ෆූ" අඩංගු ඊළඟ පේළියට ' බී ' ලේඛනයට යමි . මම හුදෙක් ම විකරණකාරකය අනුක්රමය සමග පාප්ප උපසර්ගය ලේඛනයක් සිට paste කිරීම සඳහා: "ap
මේ 'පිටපතක් පාප්ප වූ ' ලියාපදිංචි '"bP
' b ' සිට වත්මන් රේඛාවට පෙර පිටපතක් අලවන්න .
“උපසර්ග” පිළිබඳ මෙම සංකල්පය අපගේ පා man මය හැසිරවීමේ භාෂාවට ව්යාකරණ “නාමවිශේෂණ” සහ “ඇඩ්වෙයාර්” වල ප්රතිසමයන් ද එක් කරයි. 3J
"ඊළඟ පේළි තුනට සම්බන්ධ වන්න" d5}
යන්නෙහි තේරුම "වත්මන් පේළියේ සිට පස්වන ඡේදයේ අවසානය දක්වා මකා දමන්න" යන්නයි.
මේ සියල්ල අතරමැදි මට්ටම vi . ඒ කිසිවක් Vim විශේෂිත නොවන අතර ඔබ ඒවා ඉගෙන ගැනීමට සූදානම් නම් vi හි වඩා දියුණු උපක්රම තිබේ . ඔබ මෙම අතරමැදි සංකල්ප පමණක් ප්රගුණ කර ඇත්නම්, ඔබට බොහෝ විට මැක්රෝස් ලිවීමට අවශ්ය වන්නේ කලාතුරකිනි, මන්ද පෙළ හැසිරවීමේ භාෂාව ප්රමාණවත් තරම් සංක්ෂිප්ත හා ප්රකාශිත බැවින් සංස්කාරකගේ “ස්වදේශීය” භාෂාව භාවිතා කර බොහෝ දේ පහසුවෙන් කළ හැකිය.
වඩා දියුණු උපක්රම වල නියැදියක්:
:
විධාන ගණනාවක් ඇත , විශේෂයෙන් :% s/foo/bar/g
ගෝලීය ආදේශන තාක්ෂණය. (එය උසස් නොවන නමුත් වෙනත් :
විධානයන් විය හැකිය). සමස්ත :
විධාන මාලාව ed තිහාසිකව උරුම වී ඇත්තේ vi ගේ පෙර අවතාරයන් වන ed (line editor) සහ පසුව හිටපු (දීර් line රේඛා සංස්කාරක) උපයෝගීතා මගිනි. ඇත්ත vi නම් කර ඒ සඳහා දෘශ්ය අතුරුමුහුණත වන නිසා හිටපු .
:
විධාන සාමාන්යයෙන් පෙළ රේඛා ඔස්සේ ක්රියාත්මක වේ. ed සහ ex ලියා ඇත්තේ පර්යන්ත තිර අසාමාන්ය වූ සහ බොහෝ පර්යන්ත "ටෙලි ටයිප්" (TTY) උපාංග වූ යුගයක ය. එබැවින් ඉතා තද අතුරු මුහුණතක් හරහා විධාන භාවිතා කරමින් පෙළෙහි මුද්රිත පිටපත් වලින් වැඩ කිරීම සාමාන්ය දෙයක් විය (පොදු සම්බන්ධතා වේගය බෝඩ් 110 ක් හෝ දළ වශයෙන් තත්පරයට අක්ෂර 11 ක් විය - එය වේගවත් යතුරු ලියනයකට වඩා මන්දගාමී ය; ප්රමාදයන් සාමාන්ය විය. බහු-පරිශීලක අන්තර්ක්රියාකාරී සැසි; මීට අමතරව බොහෝ විට කඩදාසි සංරක්ෂණය සඳහා යම් පෙළඹවීමක් තිබුණි).
එබැවින් බොහෝ :
විධාන වල වාක්ය ඛණ්ඩයට ලිපිනයක් හෝ ලිපින පරාසයක් (රේඛා අංකය) ඇතුළත් වන අතර පසුව විධානයක් ඇත. ස්වභාවිකව එක් ප්රායෝගික තීරු අංක භාවිතා කළ හැකි: :127,215 s/foo/bar
127 සහ එක් අතර 215. එක් එක් රේඛාව මත "බාර්" බවට "foo" පළමු සිදුවීම වෙනස් කිරීමට ද වැනි සමහර කෙටි යෙදුම් භාවිතා කළ හැකි .
හෝ $
පිළිවෙළින් වත්මන් සහ අවසාන පේළි සඳහා. එක් ද සාපේක්ෂ උපසර්ග භාවිතා කළ හැකි +
හා -
පිලිවෙලින් curent රේඛාවට පසුව හෝ ඊට පෙර හිලව් කිරීමට යොමු කිරීමට. මේ අනුව: :.,$j
අර්ථය "වත්මන් රේඛාවේ සිට අවසාන පේළිය දක්වා, ඒවා සියල්ලම එක පේළියකට සම්බන්ධ කරන්න". (සියලු රේඛා) :%
සමඟ සමපාත :1,$
වේ.
මෙම :... g
සහ :... v
විධාන ඔවුන් ඇදහිය නොහැකි තරම් බලවත් ලෙස සමහර පැහැදිලි කිරීමක් දරනවා. :... g
රටාවකට (නිත්ය ප්රකාශනයට) ගැලපෙන සියලුම රේඛාවලට පසු විධාන යෙදීම “ගෝලීයව” සඳහා උපසර්ගයක් වන :... v
අතර, ලබා දී ඇති රටාවට නොගැලපෙන සියලුම රේඛාවලට එවැනි විධානයක් අදාළ වේ (“v” “conVerse” වෙතින්). වෙනත් හිටපු විධානයන් මෙන් මේවා ආමන්ත්රණය / පරාස යොමු කිරීම් මඟින් උපසර්ග කළ හැකිය. මේ අනුව :.,+21g/foo/d
"වත්මන්" foo "නූල අඩංගු ඕනෑම පේළියක් ඊළඟ පේළි 21 හරහා මකන්න" :.,$v/bar/d
යන්නෙහි තේරුම "මෙතැන් සිට ගොනුවේ අවසානය දක්වා" තීරුව අඩංගු නොවන ඕනෑම පේළියක් මකන්න.
පොදු යුනික්ස් විධානය grep ඇත්ත වශයෙන්ම මෙම හිටපු විධානයෙන් ආනුභාව ලත් බව සිත්ගන්නා කරුණකි (එය ලේඛනගත කර ඇති ආකාරයට නම් කර ඇත). මෙම හිටපු විධාන :g/re/p
(සුරකියි) ඔවුන් කෙසේද "ගෝලීය" "මුද්රිත (නැවත) සාමාන්ය ලෙස" "අඩංගු රේඛා" වෙත ලේඛනගත මාර්ගය විය. විට සංස් හා හිටපු භාවිතා කරන ලදී, මේ :p
ආඥාව කිසිවෙකුට දැන ගැනීමට ලැබී ඇති අතර, බොහෝ විට, කිසිදු ගොනු සංස්කරණය කරන විට පළමු එක් විසින් භාවිතා කරන ලද පළමු එකක් විය. එය ඔබ වර්තමාන අන්තර්ගතයන් මුද්රණය කළ ආකාරයයි (සාමාන්යයෙන් වරකට එක් පිටුවක් පමණක් භාවිතා කිරීම :.,+25p
හෝ එවැනි සමහරක්).
:% g/.../d
හෝ (එහි reVerse / conVerse counterpart: :% v/.../d
වඩාත් සුලභ භාවිත රටාවන් බව සලකන්න . කෙසේ වෙතත් ex
මතක තබා ගත යුතු වෙනත් විධාන කිහිපයක් තිබේ:
m
රේඛා එහා මෙහා ගෙනයාමට සහ j
රේඛාවලට සම්බන්ධ වීමට අපට භාවිතා කළ හැකිය . උදාහරණයක් ලෙස ඔබට ලැයිස්තුවක් තිබේ නම් සහ ඒවා ගැලපීමකින් තොරව (හෝ සමහර රටාවන්ට නොගැලපෙන) සියලු දේ වෙන් කිරීමට ඔබට අවශ්ය නම්, ඔබට මෙවැනි දෙයක් භාවිතා කළ හැකිය: :% g/foo/m$
... සහ සියලු "foo" රේඛා වෙත ගෙන යනු ඇත ගොනුවේ අවසානය. (ඔබේ ගොනුවේ අවසානය සීරීම් අවකාශයක් ලෙස භාවිතා කිරීම පිළිබඳ අනෙක් ඉඟිය සටහන් කරන්න). මෙමඟින් සියලුම "foo" රේඛාවල සාපේක්ෂ අනුපිළිවෙල සුරැකෙනු ඇති අතර අනෙක් ලැයිස්තුවෙන් ඒවා උපුටා ගන්නා ලදි. (මෙය මෙවැනි දෙයක් කිරීමට සමාන වේ: 1G!GGmap!Ggrep foo<ENTER>1G:1,'a g/foo'/d
(ගොනුව එහි වලිගයට පිටපත් කිරීම, වලිගය පෙරීම grep
සහ හිසෙන් සියලු දේ මකා දැමීම).
රේඛාවලට සම්බන්ධ වීමට සාමාන්යයෙන් ඒවායේ පූර්වගාමියාට සම්බන්ධ විය යුතු සියලුම රේඛා සඳහා රටාවක් මට සොයාගත හැකිය (උදාහරණයක් ලෙස සමහර වෙඩි නොවදින ලැයිස්තුවේ "^ *" වෙනුවට "^" සමඟ ආරම්භ වන සියලුම රේඛා). එවැනි අවස්ථාවක මම භාවිතා කරමි: :% g/^ /-1j
(ගැලපෙන සෑම රේඛාවක් සඳහාම, එක් පේළියක් ඉහළට ගොස් ඒවාට සම්බන්ධ වන්න). (BTW: වෙඩි උණ්ඩ ලැයිස්තු සෙවීම සඳහා සහ ඊළඟට සම්බන්ධ වීමට උත්සාහ කිරීම හේතු කිහිපයක් නිසා ක්රියා නොකරයි ... එයට එක් උණ්ඩ රේඛාවකට තවත් සම්බන්ධ විය හැකි අතර, එය සියල්ලටම කිසිදු වෙඩි උණ්ඩයකට සම්බන්ධ නොවනු ඇත . එහි අඛණ්ඩතාව; එය ක්රියා කරන්නේ යුගල වශයෙන් පමණි.
ඔබ අපේ පරණ යාළුවා භාවිතා කළ හැකිය සඳහන් කිරීමට තරම් අනවශ්ය s
සමග (ආදේශකයක්) g
සහ v
(ගෝලීය / එපමණක්-global) විධාන. සාමාන්යයෙන් ඔබ එසේ කිරීමට අවශ්ය නොවේ. කෙසේ වෙතත්, ඔබට වෙනත් රටාවකට ගැලපෙන රේඛා මත පමණක් ආදේශනයක් කිරීමට අවශ්ය අවස්ථා සලකා බලන්න. බොහෝ විට ඔබට ග්රහණයන් සහිත සංකීර්ණ රටාවක් භාවිතා කළ හැකි අතර ඔබට වෙනස් කිරීමට අවශ්ය නොවන රේඛාවල කොටස් ආරක්ෂා කර ගැනීම සඳහා පසු යොමු යොමු භාවිතා කළ හැකිය. කෙසේ වෙතත්, බොහෝ විට තරගය :% g/foo/s/bar/zzz/g
ආදේශනයෙන් වෙන් කිරීම පහසු වනු ඇත: - "foo" අඩංගු සෑම පේළියකටම "බාර්" සියල්ලම "zzz" සමඟ ආදේශ කරන්න. (වගේ දෙයක්:% s/\(.*foo.*\)bar\(.*\)/\1zzz\2/g
එකම රේඛාවේ “foo” විසින් නියම කරන ලද “බාර්” අවස්ථා සඳහා පමණක් ක්රියාත්මක වනු ඇත; එය දැනටමත් අශෝභන ලෙස ප්රමාණවත් වන අතර, "බාර්" ට පෙර "ෆූ" ට පෙර ඇති සියලුම සිද්ධීන් අල්ලා ගැනීම සඳහා තව දුරටත් හැසිරවිය යුතුය)
මෙම කරුණ එහි වඩා වැඩි බව ය p
, s
හා d
තුළ මාර්ග ex
විධාන කට්ටලයක්.
මෙම :
ලිපින ද සලකුණු යොමු කළ හැකිය. මේ අනුව ඔබට භාවිතා කළ හැකිය: :'a,'bg/foo/j
' a ' සහ ' b ' ලකුණු අතර ඇති රේඛා අතර පිහිටා තිබේ නම්, foo නූල අඩංගු ඕනෑම පේළියක් එහි පසු පේළියට සම්බන්ධ කිරීම . (ඔව්, පෙර පැවති ex
විධාන උදාහරණ සියල්ලම මෙම ආකාරයේ ලිපින ප්රකාශන සමඟ උපසර්ග කිරීමෙන් ගොනුවේ රේඛාවල උප කුලකවලට සීමා කළ හැකිය).
එය අපැහැදිලි ය (මම පසුගිය අවුරුදු 15 තුළ එවැනි දෙයක් භාවිතා කර ඇත්තේ කිහිප වතාවක් පමණි). කෙසේ වෙතත්, මම බොහෝ විට පුනරාවර්තනයෙන් හා අන්තර්ක්රියාකාරීව දේවල් කර ඇති බව මම නිදහසේ පිළිගනිමි. නිවැරදි ව්යාකූලත්වය ගැන සිතා බැලීමට මා කාලය ගත කළේ නම් වඩාත් කාර්යක්ෂමව කළ හැකිව තිබුණි.
තවත් ඉතා ප්රයෝජනවත් vi හෝ ex විධානයක් වන්නේ :r
වෙනත් ගොනුවක අන්තර්ගතය කියවීමයි. මේ අනුව: :r foo
"foo" ලෙස නම් කර ඇති ගොනුවේ අන්තර්ගතය වත්මන් පේළියට ඇතුල් කරයි.
වඩා බලවත් වන්නේ :r!
විධානයයි. මෙය විධානයක ප්රති results ල කියවයි. එය vi සැසිය අත්හිටුවීම , විධානයක් ක්රියාත්මක කිරීම, එහි ප්රතිදානය තාවකාලික ගොනුවකට හරවා යැවීම, ඔබගේ vi සැසිය නැවත ආරම්භ කිරීම සහ තාවකාලිකව අන්තර්ගතය කියවීම වැනි ය. ගොනුව.
ඊටත් වඩා බලවත් වන්නේ !
(bang) සහ :... !
( ex bang) විධානයන් ය. මේවා බාහිර විධානයන් ක්රියාත්මක කර ප්රති results ල වත්මන් පෙළට කියවයි. කෙසේ වෙතත්, ඔවුන් අපගේ පා of යේ තේරීම් විධානය හරහා පෙරහන් කරයි! මෙය අපගේ ගොනුවේ ඇති සියලුම රේඛා භාවිතා කර වර්ග කළ හැකිය 1G!Gsort
( G
එය vi "ගොටෝ" විධානයයි; එය ගොනුවේ අවසාන පේළියට යාම පෙරනිමිය, නමුත් 1, පළමු පේළිය වැනි පේළි අංකයකින් උපසර්ග කළ හැකිය). මෙය හිටපු ප්රභේදයට සමාන වේ :1,$!sort
. ලේඛකයන් බොහෝ විට !
යුනික්ස් fmt හෝ ගුණයකින් යුත් උපයෝගීතා සමඟ පෙළ තේරීම් ප්රතිසංස්කරණය කිරීම හෝ “වචන එතීම” සඳහා භාවිතා කරයි. ඉතා සුලභ සාර්ව වේ{!}fmt
(වත්මන් ඡේදය නැවත ආකෘතිකරණය කරන්න). ක්රමලේඛකයින් සමහර විට ඉන්ඩෙන්ට් හෝ වෙනත් කේත නැවත ආකෘතිකරණ මෙවලම් හරහා ඔවුන්ගේ කේතය හෝ එහි කොටස් පමණක් ක්රියාත්මක කිරීමට භාවිතා කරයි .
:r!
සහ !
විධාන භාවිතා කිරීම යනු ඕනෑම බාහිර උපයෝගීතාවයක් හෝ පෙරනයක් අපගේ සංස්කාරකයේ දිගුවක් ලෙස සැලකිය හැකිය. මම ඉඳහිට මේවා භාවිතා කර ඇත්තේ දත්ත සමුදායකින් දත්ත ඇදගත් ස්ක්රිප්ට් හෝ වෙබ් අඩවියකින් දත්ත ඇදගත් wget හෝ ලින්ක්ස් විධාන හෝ දුරස්ථ පද්ධති වලින් දත්ත ඇදගත් ssh විධානයන් සමඟ ය.
තවත් ප්රයෝජනවත් හිටපු විධානයක් :so
(කෙටි සඳහා :source
). මෙය ගොනුවක අන්තර්ගතය විධාන මාලාවක් ලෙස කියවයි. ඔබ ආරම්භ කරන විට vi එය සාමාන්යයෙන්, නිසැකයෙන්ම, කාර්ය ඉටු වූ :source
මත ~/.exinitrc
ගොනු (සහ විම් සාමාන්යයෙන් මෙම කරන්නේ ~/.vimrc
ස්වභාවිකව තරම්,). මෙය භාවිතා කිරීම යනු නව මැක්රෝ, සංක්ෂිප්ත සහ සංස්කාරක සැකසුම් සමූහයක් තුළට සරළව පියාසර කිරීමෙන් ඔබේ සංස්කාරක පැතිකඩ වෙනස් කළ හැකිය. ඔබ හොර රහසේ නම්, ඉල්ලුමට අනුව ලිපිගොනු සඳහා අදාළ කර ගැනීම සඳහා හිටපු සංස්කරණ විධානයන් අනුපිළිවෙල ගබඩා කිරීම සඳහා මෙය උපක්රමයක් ලෙස භාවිතා කළ හැකිය .
උදාහරණයක් ලෙස මා සතුව පේළි හතක ගොනුවක් (අක්ෂර 36) ඇති අතර එය ගොනුවක් wc හරහා ධාවනය වන අතර එම වචන ගණන් දත්ත අඩංගු ගොනුවේ ඉහළින් සී-ශෛලීය විවරණයක් ඇතුළත් කරයි. පහත දැක්වෙන විධානයක් භාවිතා කිරීමෙන් මට එම "සාර්ව" ගොනුවකට යෙදිය හැකිය:vim +'so mymacro.ex' ./mytarget
( Vi සහ Vim සඳහා +
විධාන රේඛා විකල්පය සාමාන්යයෙන් භාවිතා කරනුයේ සංස්කරණ සැසිය යම් රේඛා අංකයකින් ආරම්භ කිරීම සඳහා ය. කෙසේ වෙතත් යමෙකුට “ප්රභව” විධානයක් වැනි ඕනෑම වලංගු හිටපු විධානයක් / ප්රකාශනයක් අනුගමනය කළ හැකි බව දන්නා කරුණකි. මම මෙහි කර ඇත; සරල උදාහරණයකට මා සතුව ස්ක්රිප්ට් තිබේ: මගේ SSH දන්නා ධාරක ගොනුවෙන් අන්තර්ක්රියාකාරී නොවන ප්රවේශයක් ඉවත් කිරීමට, මම සේවාදායක කට්ටලයක් නැවත ප්රතිරූපණය කරන අතරතුර).+
vi +'/foo/d|wq!' ~/.ssh/known_hosts
එය සාමාන්යයෙන්, perl බසට ලං, AWK, භාවිතා, එවැනි "මැක්රෝස්" ලියන්න කිරීම වඩා පහසු වේ sed (වගේ, ඇත්තටම, වන අයිතිය සුරකියි ආවේශය උපයෝගිතා සංස් විධාන).
මෙම @
විධානය සමහර විට වඩාත් නොපැහැදිලි වන්නේ vi විධාන. දශකයකට ආසන්න කාලයක් තිස්සේ ඉඳහිට උසස් පද්ධති පරිපාලන පා courses මාලා ඉගැන්වීමේදී මට එය භාවිතා කර ඇති ඉතා සුළු පිරිසක් හමු වී ඇත. @
ලේඛනයක අන්තර්ගතය vi හෝ ex විධානයක් ලෙස ක්රියාත්මක කරයි.
උදාහරණය: මම බොහෝ විට භාවිතා කරන්නේ: :r!locate ...
මගේ පද්ධතියේ යම් ගොනුවක් සොයා ගැනීමට සහ එහි නම මගේ ලේඛනයට කියවීමට. එතැන් සිට මම ඕනෑම බාහිර පහරක් මකා දමමි, මා උනන්දු වන ගොනුවට සම්පූර්ණ මාවත පමණක් ඉතිරි කරමි. වෙහෙස මහන්සි වී වැඩ කරනවාට වඩා, Tabමාර්ගයේ සෑම අංගයක්ම (හෝ ඊටත් වඩා නරක නම්, ටැබ් සම්පූර්ණ කිරීමේ සහාය නොමැතිව යන්ත්රයක සිරවී ඇත්නම්) vi පිටපතෙහි ) මම දැන් භාවිතා කරන්නේ:
0i:r
(වත්මන් රේඛාව වලංගු බවට හැරවීමට : r විධානය),
"cdd
("ඇ" ලේඛනයට රේඛාව මකා දැමීමට) සහ
@c
එම විධානය ක්රියාත්මක කරන්න.
එය යතුරු එබීම් 10 ක් පමණි (ප්රකාශනය "cdd
@c
මට ඇඟිලි සාර්ව වේ, එබැවින් ඕනෑම පොදු අකුරු හයක වචනයක් තරම් ඉක්මනින් එය ටයිප් කළ හැකිය).
විචක්ෂණශීලී සිතුවිල්ලක්
මම vi හි බලයේ මතුපිටට පමණක් සීරීමට ලක් කර ඇති අතර මා මෙහි විස්තර කර ඇති කිසිවක් vim නම් කර ඇති "වැඩිදියුණු කිරීම්" වල කොටසක් නොවේ! මා මෙහි විස්තර කර ඇති සියල්ලම අවුරුදු 20 ක් හෝ 30 කට පෙර සිට vi හි ඕනෑම පැරණි පිටපතක් මත ක්රියා කළ යුතුය .
වෙන කවරදාටත් වඩා vi හි බලය සැලකිය යුතු ලෙස භාවිතා කළ අය සිටිති .