Vim සමඟ ඔබේ වඩාත් short ලදායී කෙටිමඟ කුමක්ද?


1126

මම Vim ගැන බොහෝ දේ අසා ඇත්තෙමි . වෙනත් සංස්කාරකවරයකුට වඩා ඔබ (සංවර්ධකයෙකු ලෙස) Vim සමඟ වේගයෙන් සිටිය යුතු බව පෙනේ. මම මූලික දේවල් කිහිපයක් කිරීමට Vim භාවිතා කරන අතර මම Vim සමඟ 10 ගුණයකින් අඩු tive ලදායී වෙමි .

ඔබ වේගය ගැන කතා කරන විට ඔබ සැලකිලිමත් විය යුතු එකම කරුණු දෙක (ඔබ ඒවා ගැන ප්‍රමාණවත් සැලකිල්ලක් නොදක්වයි, නමුත් ඔබ කළ යුත්තේ):

  1. යතුරු පුවරුව භාවිතා කිරීමට වේගවත්ම ක්‍රමය විකල්ප වම් සහ දකුණු අත් භාවිතා කිරීමයි.
  2. කිසි විටෙකත් මූසිකය ස්පර්ශ නොකිරීම හැකි තරම් වේගවත් විය හැකි දෙවන ක්‍රමයයි. ඔබේ අත චලනය කිරීමට, මූසිකය අල්ලා ගැනීමට, එය ගෙනයාමට සහ යතුරුපුවරුව වෙත නැවත ගෙන ඒමට ඔබට අවුරුදු ගණනාවක් ගත වේ (තවද ඔබ බොහෝ විට යතුරු පුවරුව දෙස බැලිය යුතුය.

මම Vim සමඟ වඩා less ලදායී නොවන්නේ මන්ද යන්න පෙන්වන උදාහරණ දෙකක් මෙන්න.

පිටපත් කරන්න / කපන්න සහ අලවන්න. මම ඒක හැම වෙලේම කරනවා. සියලුම සමකාලීන සංස්කාරකවරුන් Shift සමඟ ඔබ වම් අතෙන් එබූ අතර, පෙළ තෝරා ගැනීම සඳහා ඔබ කර්සරය ඔබේ දකුණු අතෙන් ගෙන යයි. ඉන්පසු Ctrl+ Cපිටපත්, ඔබ කර්සරය ගෙන Ctrl+ Vපේස්ට් කරන්න.

Vim සමඟ එය භයානක ය:

  • yy එක් පේළියක් පිටපත් කිරීමට (ඔබට කිසි විටෙකත් සම්පූර්ණ පේළියම අවශ්‍ය නොවේ!)
  • [number xx]yyxxරේඛා බෆරයට පිටපත් කිරීමට . නමුත් ඔබට අවශ්‍ය දේ තෝරාගෙන ඇත්දැයි ඔබ හරියටම දන්නේ නැත. මම බොහෝ විට කළ යුත්තේ [number xx]ddඉන් uඅහෝසි කිරීමට!

තවත් උදාහරණයක්? සොයන්න සහ ප්‍රතිස්ථාපනය කරන්න.

  • දී PSPad : Ctrl+ fපසුව මාධ්ය ඔබ සෙවීමට අවශ්ය දේ ටයිප්, පසුව Enter.
  • Vim හි:, /පසුව ඔබට සෙවීමට අවශ්‍ය දේ ටයිප් කරන්න, ඉන්පසු එක් එක් විශේෂ අක්ෂර \ඉදිරියේ විශේෂ අක්ෂර කිහිපයක් තිබේ නම්, ඔබන්න .Enter

Vim සමඟ ඇති සෑම දෙයක්ම එසේ ය: එය නිවැරදි ආකාරයෙන් හැසිරවිය යුතු ආකාරය මා නොදන්නා බව පෙනේ.

සැ.යු: මම දැනටමත් විම් වංචා පත්‍රය කියවා ඇත්තෙමි :)

මගේ ප්‍රශ්නය:

සමකාලීන සංස්කාරකවරයකුට වඩා ඔබ වඩාත් tive ලදායී වන Vim භාවිතා කරන ආකාරය කුමක්ද?


"යතුරු පුවරුව භාවිතා කිරීමට වේගවත්ම ක්‍රමය විකල්ප වම් සහ දකුණු අත් භාවිතා කිරීමයි." මට නොවේ, අමුතුයි. මට එක අතකින් වචනයක් ටයිප් කළ හැකි විට, මම වඩා වේගවත් බව මට පෙනේ.
බෙන් මොර්දෙකයි

Answers:


2859

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/bar127 සහ එක් අතර 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 පිටපතෙහි ) මම දැන් භාවිතා කරන්නේ:

  1. 0i:r(වත්මන් රේඛාව වලංගු බවට හැරවීමට : r විධානය),
  2. "cdd ("ඇ" ලේඛනයට රේඛාව මකා දැමීමට) සහ
  3. @c එම විධානය ක්‍රියාත්මක කරන්න.

එය යතුරු එබීම් 10 ක් පමණි (ප්‍රකාශනය "cdd @cමට ඇඟිලි සාර්ව වේ, එබැවින් ඕනෑම පොදු අකුරු හයක වචනයක් තරම් ඉක්මනින් එය ටයිප් කළ හැකිය).


විචක්ෂණශීලී සිතුවිල්ලක්

මම vi හි බලයේ මතුපිටට පමණක් සීරීමට ලක් කර ඇති අතර මා මෙහි විස්තර කර ඇති කිසිවක් vim නම් කර ඇති "වැඩිදියුණු කිරීම්" වල කොටසක් නොවේ! මා මෙහි විස්තර කර ඇති සියල්ලම අවුරුදු 20 ක් හෝ 30 කට පෙර සිට vi හි ඕනෑම පැරණි පිටපතක් මත ක්‍රියා කළ යුතුය .

වෙන කවරදාටත් වඩා vi හි බලය සැලකිය යුතු ලෙස භාවිතා කළ අය සිටිති .


440
ශුද්ධ කේත වඳුරන්, .. එය එක් ගැඹුරු පිළිතුරකි. විශිෂ්ට දෙය නම් ඔබ බොහෝ විට යතුරු පැදි 10 කින් පමණ ලියා ඇති බවයි.
EightyOne Unite

48
AhWahnfieden - grok යනු මා අදහස් කළ දෙයමයි: en.wikipedia.org/wiki/Grok (පෙනෙන විදිහට එය OED තුළ පවා ඇත - අපට ඇන්ග්ලොෆෝන්වලට කැනොනිකල් ශබ්දකෝෂයකට ආසන්නතම). සංස්කාරකවරයකු “විහිළුවට” ලක් කිරීම යනු එහි විධාන චතුර ලෙස භාවිතා කරන බව සොයා ගැනීමයි ... ඒවා ඔබේ ස්වාභාවික භාෂාව මෙන් ය.
ජිම් ඩෙනිස්

22
වාව්, ඉතා හොඳින් ලිඛිත පිළිතුරක්! මට @විධානය විශාල වශයෙන් භාවිතා කළද (ඊට වඩා q:
රෙකෝඩ්

63
ඇත්තෙන්ම බිහිසුණු ප්‍රශ්නයක් මුළුමනින්ම මුදවා ගන්නා විශිෂ්ට පිළිතුර. මම මෙම ප්‍රශ්නය ඉහළට ඔසවා තැබීමට යන්නෙමි, සාමාන්‍යයෙන් මම පහත් කොට සලකමි, එවිට මෙම පිළිතුර සොයා ගැනීම පහසු වේ. .
බ්‍රැන්ඩන් රෝඩ්ස්

8
ඔබට වෙබ් අඩවියක් සාදා මෙම නිබන්ධනය එහි තැබිය හැකිද, එබැවින් එය මෙහි ස්ටක් ඕවර් ප්‍රවාහයේ තැන්පත් නොවේ. Vi ට වඩා හොඳ හැඳින්වීමක් මම තවම කියවා නැත.
මාකෝ

504

ඔබ කතා කරන්නේ පෙළ තෝරා ගැනීම සහ පිටපත් කිරීම ගැන ය, මම සිතන්නේ ඔබ Vim දෘශ්‍ය ප්‍රකාරය දෙස බැලිය යුතු බවයි .

දෘශ්‍ය මාදිලියේදී, ඔබට Vim විධාන භාවිතයෙන් පෙළ තෝරා ගත හැකිය, එවිට ඔබට තේරීම සමඟ ඔබට අවශ්‍ය ඕනෑම දෙයක් කළ හැකිය.

පහත දැක්වෙන පොදු අවස්ථා සලකා බලන්න:

ඊළඟට ගැලපෙන වරහන් සඳහා ඔබ තෝරා ගත යුතුය.

ඔබට කළ හැකිය:

  • v% කර්සරය ආරම්භක / අවසන් වරහන් තුළ තිබේ නම්
  • vib කර්සරය වරහන් අවහිරය තුළ තිබේ නම්

උපුටා දැක්වීම් අතර පෙළ තෝරා ගැනීමට ඔබට අවශ්‍යය:

  • vi " ද්විත්ව මිල ගණන් සඳහා
  • තනි උපුටා දැක්වීම් සඳහා vi '

ඔබට රැලි සහිත වරහන් බ්ලොක් එකක් තෝරා ගැනීමට අවශ්‍යයි (සී-විලාසිතාවේ භාෂාවල ඉතා සුලභයි):

  • viB
  • vi{

ඔබට සම්පූර්ණ ගොනුව තෝරා ගැනීමට අවශ්‍යයි:

  • ggVG

දෘශ්‍ය වාරණ තේරීම තවත් ප්‍රයෝජනවත් අංගයකි, එය ඔබට සෘජුකෝණාස්රාකාර පෙළක් තෝරා ගැනීමට ඉඩ සලසයි, ඔබට එය එබිය යුතුය Ctrl- Vඑය ආරම්භ කිරීමට, ඉන්පසු ඔබට අවශ්‍ය පෙළ වාරණය තෝරාගෙන යෑන්ක්, මකන්න, පේස්ට්, සංස්කරණය, ආදිය තීරු දිශානත පෙළ සංස්කරණය කිරීම සතුටක් .


2
සෑම සංස්කාරකවරයකුටම මේ වගේ දෙයක් තිබේ, එය නිශ්චිතව දක්වා නැත.
finnw

22
ඔව්, නමුත් එය පෝස්ටරයේ නිශ්චිත පැමිණිල්ලක් විය. දෘශ්‍ය මාදිලිය යනු සෘජු පෙළ තෝරා ගැනීම සහ හැසිරවීමේ Vim හි හොඳම ක්‍රමයයි. Vim හි ස්වාරක්ෂක ගමන් ක්‍රම විශිෂ්ට බැවින්, පෙළ තේරීම ඉතා ප්‍රියජනක බව මට පෙනේ.
තුවක්කු

9
බ්ලොක් එකක් තෝරා ගැනීම සඳහා Ctrl-V සඳහන් කිරීම වටී යැයි මම සිතමි - එනම් අත්තනෝමතික පෙළ සෘජුකෝණාස්රයකි. ඔබට එය අවශ්‍ය වූ විට එය ජීවිතාරක්ෂකයෙකි.
හාමිෂ් ඩව්නර්

6
@viksit: මම කැම්ටේෂියා භාවිතා කරමි, නමුත් විකල්ප බොහොමයක් ඇත: codinghorror.com/blog/2006/11/screencasting-for-windows.html
CMS

3
එසේම, ඔබට දෘශ්‍ය තේරීමක් තිබේ නම් සහ එය සකස් කිරීමට අවශ්‍ය නම්, oඅනෙක් කෙළවරට පැමිණෙනු ඇත. එබැවින් ඔබට තේරීමේ ආරම්භය සහ අවසානය යන දෙකම ඔබට අවශ්‍ය තරම් ගෙන යා හැකිය.
නේතන් ලෝන්ග්

207

Tivity ලදායිතා උපදෙස් කිහිපයක්:

ස්මාර්ට් චලනයන්

  • *හා #ඉදිරි කර්සරය / පසුගාමී යටතේ වචනය සොයන්න.
  • w ඊළඟ වචනයට
  • W ඊළඟ අවකාශයෙන් වෙන් වූ වචනයට
  • b/ eවත්මන් වචනයේ ආරම්භය / අවසානය දක්වා. ( B/ Eඅවකාශය සඳහා පමණක් වෙන් කර ඇත)
  • gg/ Gගොනුවේ ආරම්භ / අවසන් වීමකි.
  • % ගැලපෙන {..} හෝ (..) යනාදිය වෙත පනින්න.
  • {/ }ඊළඟ ඡේදයට පනින්න.
  • '. අවසන් සංස්කරණය කළ පේළියට ආපසු යන්න.
  • g; අවසන් වරට සංස්කරණය කළ ස්ථානයට ආපසු යන්න.

ඉක්මන් සංස්කරණ විධාන

  • I ආරම්භයේදීම ඇතුළු කරන්න.
  • A අවසානයට එකතු කරන්න.
  • o/ O/ පසු නව රේඛාවක් වත්මන් පෙර විවෘත කරන්න.
  • v/ V/ Ctrl+Vදෘශ්‍ය ප්‍රකාරය (පෙළ තෝරා ගැනීමට!)
  • Shift+R පෙළ ආදේශ කරන්න
  • C පේළියේ ඉතිරි කොටස වෙනස් කරන්න.

විධාන ඒකාබද්ධ කිරීම

බොහෝ විධාන ප්‍රමාණයක් සහ දිශාවක් පිළිගනී, උදාහරණයක් ලෙස:

  • cW = වචනයේ අවසානය දක්වා වෙනස් කරන්න
  • 3cW = වචන 3 ක් වෙනස් කරන්න
  • BcW = සම්පූර්ණ වචනය ආරම්භ කිරීමට, සම්පූර්ණ වචනය වෙනස් කරන්න
  • ciW = අභ්‍යන්තර වචනය වෙනස් කරන්න.
  • ci" = ".." අතර අභ්‍යන්තරය වෙනස් කරන්න
  • ci( = අතර පෙළ වෙනස් කරන්න (..)
  • ci<<..> අතර පෙළ වෙනස් කරන්න ( set matchpairs+=<:>vimrc හි අවශ්‍යතා )
  • 4dd = පේළි 4 ක් මකන්න
  • 3x = අක්ෂර 3 ක් මකන්න.
  • 3s = අක්ෂර 3 ආදේශ කරන්න.

ප්‍රයෝජනවත් ක්‍රමලේඛක විධාන

  • rඑක් අක්ෂරයක් ආදේශ කරන්න (උදා: rdවත්මන් වර්‍ගය ආදේශ කරයි d).
  • ~ නඩුව වෙනස් කරයි.
  • J පේළි දෙකකට සම්බන්ධ වේ
  • Ctrl + A / Ctrl + X වර්ධක / සංඛ්‍යාවක් අඩු කරයි.
  • . අවසාන විධානය නැවත කරන්න (සරල සාර්ව)
  • == රේඛා ඉන්ඩෙන්ට් සවි කරන්න
  • > indent block (දෘශ්‍ය ප්‍රකාරයේදී)
  • < නොවරදින වාරණය (දෘශ්‍ය ප්‍රකාරයේදී)

සාර්ව පටිගත කිරීම

  • q[ key ]පටිගත කිරීම ආරම්භ කිරීමට ඔබන්න .
  • ඉන්පසු qපටිගත කිරීම නැවැත්වීමට පහර දෙන්න .
  • සාර්ව සමඟ සෙල්ලම් කළ හැකිය @[ key ].

ඉතා නිශ්චිත විධානයන් සහ චලනයන් භාවිතා කිරීමෙන්, VIM හට එම නිවැරදි ක්‍රියා ඊළඟ පේළි සඳහා නැවත ධාවනය කළ හැකිය. (උදා: A එකතු කිරීම-අවසානය සඳහා, b/ eකර්සරය වචනයේ ආරම්භයට හෝ අවසානයට පිළිවෙලින් ගෙනයාමට)

හොඳින් සාදන ලද සැකසුම් වල උදාහරණය

# reset to vim-defaults
if &compatible          # only if not set before:
  set nocompatible      # use vim-defaults instead of vi-defaults (easier, more user friendly)
endif

# display settings
set background=dark     # enable for dark terminals
set nowrap              # dont wrap lines
set scrolloff=2         # 2 lines above/below cursor when scrolling
set number              # show line numbers
set showmatch           # show matching bracket (briefly jump)
set showmode            # show mode in status bar (insert/replace/...)
set showcmd             # show typed command in status bar
set ruler               # show cursor position in status bar
set title               # show file in titlebar
set wildmenu            # completion with menu
set wildignore=*.o,*.obj,*.bak,*.exe,*.py[co],*.swp,*~,*.pyc,.svn
set laststatus=2        # use 2 lines for the status bar
set matchtime=2         # show matching bracket for 0.2 seconds
set matchpairs+=<:>     # specially for html

# editor settings
set esckeys             # map missed escape sequences (enables keypad keys)
set ignorecase          # case insensitive searching
set smartcase           # but become case sensitive if you type uppercase characters
set smartindent         # smart auto indenting
set smarttab            # smart tab handling for indenting
set magic               # change the way backslashes are used in search patterns
set bs=indent,eol,start # Allow backspacing over everything in insert mode

set tabstop=4           # number of spaces a tab counts for
set shiftwidth=4        # spaces for autoindents
#set expandtab           # turn a tabs into spaces

set fileformat=unix     # file mode is unix
#set fileformats=unix,dos    # only detect unix file format, displays that ^M with dos files

# system settings
set lazyredraw          # no redraws in macros
set confirm             # get a dialog when :q, :w, or :wq fails
set nobackup            # no backup~ files.
set viminfo='20,\"500   # remember copy registers after quitting in the .viminfo file -- 20 jump links, regs up to 500 lines'
set hidden              # remember undo after quitting
set history=50          # keep 50 lines of command history
set mouse=v             # use mouse in visual mode (not normal,insert,command,help mode


# color settings (if terminal/gui supports it)
if &t_Co > 2 || has("gui_running")
  syntax on          # enable colors
  set hlsearch       # highlight search (very useful!)
  set incsearch      # search incremently (search while typing)
endif

# paste mode toggle (needed when using autoindent/smartindent)
map <F10> :set paste<CR>
map <F11> :set nopaste<CR>
imap <F10> <C-O>:set paste<CR>
imap <F11> <nop>
set pastetoggle=<F11>

# Use of the filetype plugins, auto completion and indentation support
filetype plugin indent on

# file type specific settings
if has("autocmd")
  # For debugging
  #set verbose=9

  # if bash is sh.
  let bash_is_sh=1

  # change to directory of current file automatically
  autocmd BufEnter * lcd %:p:h

  # Put these in an autocmd group, so that we can delete them easily.
  augroup mysettings
    au FileType xslt,xml,css,html,xhtml,javascript,sh,config,c,cpp,docbook set smartindent shiftwidth=2 softtabstop=2 expandtab
    au FileType tex set wrap shiftwidth=2 softtabstop=2 expandtab

    # Confirm to PEP8
    au FileType python set tabstop=4 softtabstop=4 expandtab shiftwidth=4 cinwords=if,elif,else,for,while,try,except,finally,def,class
  augroup END

  augroup perl
    # reset (disable previous 'augroup perl' settings)
    au!  

    au BufReadPre,BufNewFile
    \ *.pl,*.pm
    \ set formatoptions=croq smartindent shiftwidth=2 softtabstop=2 cindent cinkeys='0{,0},!^F,o,O,e' " tags=./tags,tags,~/devel/tags,~/devel/C
    # formatoption:
    #   t - wrap text using textwidth
    #   c - wrap comments using textwidth (and auto insert comment leader)
    #   r - auto insert comment leader when pressing <return> in insert mode
    #   o - auto insert comment leader when pressing 'o' or 'O'.
    #   q - allow formatting of comments with "gq"
    #   a - auto formatting for paragraphs
    #   n - auto wrap numbered lists
    #   
  augroup END


  # Always jump to the last known cursor position. 
  # Don't do it when the position is invalid or when inside
  # an event handler (happens when dropping a file on gvim). 
  autocmd BufReadPost * 
    \ if line("'\"") > 0 && line("'\"") <= line("$") | 
    \   exe "normal g`\"" | 
    \ endif 

endif # has("autocmd")

සැකසුම් ගබඩා කර තැබිය හැකිය ~/.vimrc, නැතහොත් පද්ධතිය පුරා පැතිරී /etc/vimrc.localපසුව /etc/vimrcගොනුවෙන් කියවීමෙන් :

source /etc/vimrc.local

( #අදහස් දැක්වීමේ චරිතය "VIM තුළ ක්‍රියාත්මක කිරීම සඳහා ඔබට එය ප්‍රතිස්ථාපනය කිරීමට සිදුවේ , මට අවශ්‍ය වූයේ නිසි සින්ටැක්ස් ඉස්මතු කිරීම මෙහි දී)

මා මෙහි ලැයිස්තුගත කර ඇති විධාන ඉතා මූලික වන අතර මම මෙතෙක් භාවිතා කරන ප්‍රධාන ඒවාය. සියලු විසිතුරු දේවල් නොදැන ඔවුන් දැනටමත් මාව වඩාත් tive ලදායී කරවයි.


4
වඩා හොඳ '.වන්නේ g;නැවත හරහා පනී වන changelist. අවසන් වරට සංස්කරණය කරන ලද පේළිය වෙනුවට අවසන් සංස්කරණය කරන ලද ස්ථානයට යයි
naught101

98

මෙම Control+ Rයාන්ත්රණයක් ඉතා ප්රයෝජනවත් වේ :-) දී එක්කෝ ඇතුළු කිරීම් ප්රකාරය හෝ විධාන මාදිලිය (එනම් මත :මාර්ගය විධාන ටයිප් කරන විට), එය ගණන් හෝ නම් ලේඛනය දිගටම කරගෙන:

  • a- zනම් කරන ලද ලේඛණ
  • " අන්තිම මකාදැමීමේ හෝ යැංගේ පෙළ අඩංගු නම් නොකරන ලද ලේඛනය
  • % වත්මන් ගොනු නාමය
  • # විකල්ප ගොනු නාමය
  • * ක්ලිප්බෝඩ් අන්තර්ගතය (X11: ප්‍රාථමික තේරීම)
  • + ක්ලිප්බෝඩ් අන්තර්ගතය
  • / අවසාන සෙවුම් රටාව
  • : අන්තිම විධාන රේඛාව
  • . අවසන් වරට ඇතුළත් කළ පෙළ
  • - අන්තිම කුඩා (රේඛාවකට වඩා අඩු) මකා දැමීම
  • =5*5 පෙළට 25 ඇතුල් කරන්න (කුඩා කැල්කියුලේටරය)

බලන්න :help i_CTRL-Rසහ :help c_CTRL-Rවැඩි විස්තර සඳහා, සහ තවත් CTRL-R යහපත්කම සඳහා අවට සැරිසරන්න.


10
FYI, මෙය ඇතුළත් කිරීමේ මාදිලියේ Ctrl + R වෙත යොමු වේ . සාමාන්‍ය ප්‍රකාරයේදී, Ctrl + R නැවත සිදු කෙරේ.
vdboor

2
වත්මන් / විකල්ප ගොනු නාමය සඳහා +1. Control-Aඅවසන් වරට ඇතුළත් කළ පෙළ සඳහා ඇතුළු කිරීමේ ප්‍රකාරයේදී ද ක්‍රියා කරන අතර අවසන් වරට ඇතුළත් කළ පෙළ Control-@ඇතුළු කර වහාම සාමාන්‍ය ක්‍රමයට මාරු වන්න.
ආර්යෙ ලීබ් ටෝරොග්

91

Vim ප්ලගීන

මෙහි හොඳ පිළිතුරු රාශියක් ඇත, සහ vi හි සෙන් ගැන පුදුම සහගත එකක්. මා සඳහන් නොකළ එක් දෙයක් නම් ප්ලගීන හරහා විම් අතිශයින් විස්තාරණය කළ හැකි බවයි. මුල් කතුවරයා කිසි විටෙකත් නොසැලකූ සියලු ආකාරයේ පිස්සු දේවල් කිරීමට ස්ක්‍රිප්ට් සහ ප්ලගීන තිබේ. ඇදහිය නොහැකි තරම් පහසු විම් ප්ලගීන සඳහා උදාහරණ කිහිපයක් මෙන්න:

rails.vim

Rails.vim යනු tpope විසින් ලියන ලද ප්ලගිනයකි. රේල් පීලි සංවර්ධනය කරන පුද්ගලයින් සඳහා එය ඇදහිය නොහැකි මෙවලමකි. එය පාලකයකුගේ ක්‍රමයකින් සම්බන්ධිත දර්ශනයට, ආකෘතියක් වෙතට සහ එම ආකෘතිය සඳහා ඒකක පරීක්ෂණ දක්වා පහසුවෙන් පනින්නට ඉඩ සලසන ඉන්ද්‍රජාලික සන්දර්භය සංවේදී දේ කරයි. රේල් පීලි සංවර්ධකයෙකු ලෙස එය පැය සිය ගණනක් නොව පැය සිය ගණනක් ඉතිරි කර ඇත.

gist.vim

මෙම ප්ලගිනය මඟින් දෘශ්‍ය මාදිලියේ පෙළක් තෝරාගෙන එය gist.github.com වෙත පළ කිරීමට ඉක්මන් විධානයක් ටයිප් කිරීමට ඉඩ දෙයි . මෙය පහසු පැස්ට්බින් ප්‍රවේශයට ඉඩ සලසයි, ඔබ IRC හෝ IM හරහා යමෙකු සමඟ සහයෝගයෙන් කටයුතු කරන්නේ නම් එය ඇදහිය නොහැකි තරම් පහසුය.

space.vim

මෙම ප්ලගිනය අභ්‍යවකාශ තීරුවට විශේෂ ක්‍රියාකාරීත්වයක් සපයයි. එය අභ්‍යවකාශ තීරුව කාල පරිච්ඡේදයට සමාන දෙයක් බවට පත් කරයි, නමුත් ක්‍රියා නැවත කිරීම වෙනුවට එය චලිතයන් පුනරාවර්තනය කරයි. ඔබ මැස්ස මත අර්ථ දක්වන ආකාරයට ගොනුවක් හරහා ඉක්මනින් ගමන් කිරීම සඳහා මෙය ඉතා පහසු වේ.

round.vim

මෙම ප්ලගිනය මඟින් ඔබට යම් ආකාරයකින් වෙන් කර ඇති පෙළ සමඟ වැඩ කිරීමේ හැකියාව ලබා දේ. එය ඔබට පරෙන්ස් තුළ ඇති දේවල්, උපුටා දැක්වීම් ඇතුලත ඇති දේ දැක්වෙන වස්තූන් ලබා දෙයි. වෙන් කළ පෙළ හැසිරවීම සඳහා එය ප්‍රයෝජනවත් වේ.

supertab.vim

මෙම ස්ක්‍රිප්ට් විසිතුරු ටැබ් සම්පුර්ණ කිරීමේ ක්‍රියාකාරිත්වය vim වෙත ගෙන එයි. ස්වයංක්‍රීයව සම්පුර්ණ කරන ලද දේවල් දැනටමත් vim හි හරය තුළ ඇත, නමුත් මෙය විවිධ බහුකාර්ය කෙටිමං වලට වඩා ඉක්මන් පටිත්තකට ගෙන එයි. භාවිතා කිරීමට ඉතා පහසු, සහ ඇදහිය නොහැකි තරම් විනෝදජනකයි. එය වීඑස් හි අභිප්‍රාය නොවන අතර, එය විශිෂ්ට පියවරක් වන අතර ටැබ් සම්පුර්ණ කිරීමේ මෙවලමකින් ඔබ අපේක්ෂා කිරීමට කැමති ක්‍රියාකාරිත්වයේ විශාල ප්‍රමාණයක් ගෙන එයි.

syntastic.vim

මෙම මෙවලම බාහිර සින්ටැක්ස් පිරික්සුම් විධාන vim වෙත ගෙන එයි. මම එය පෞද්ගලිකව භාවිතා කර නැත, නමුත් මම ඒ ගැන බොහෝ දේ අසා ඇති අතර සංකල්පය පරාජය කිරීමට අපහසුය. සින්ටැක්ස් අතින් සිදු නොකර එය පරීක්ෂා කිරීම ඉතා හොඳ කාල ඉතිරියක් වන අතර ඔබ පරීක්‍ෂා කිරීම නැවැත්වූ විට නොව ඒවා හඳුන්වා දෙන විට සින්ටැක්ටික් දෝෂ හඳුනා ගැනීමට ඔබට උපකාරී වේ.

fugitive.vim

Vim ඇතුලත සිට git වෙත access ජු ප්‍රවේශය. නැවතත්, මම මෙම ප්ලගිනය භාවිතා කර නැත, නමුත් මට උපයෝගීතාව දැකිය හැකිය. අවාසනාවකට මෙන්, මම svn "නව" ලෙස සලකන සංස්කෘතියක සිටිමි, එබැවින් මම සෑහෙන කාලයක් වැඩ කරන විට git දකින්නේ නැත.

nerdtree.vim

Vim සඳහා ගස් බ්‍රව්සරයක්. මම මෙය මෑතකදී භාවිතා කිරීමට පටන් ගත් අතර එය ඇත්තෙන්ම පහසුය. එය ඔබට රුක් දර්ශනයක් සිරස් භේදයකට දමා පහසුවෙන් ගොනු විවෘත කිරීමට ඉඩ දෙයි. ඔබ නිතර නිතර පනින බොහෝ මූලාශ්‍ර ලිපිගොනු සහිත ව්‍යාපෘතියක් සඳහා මෙය විශිෂ්ටයි.

FuzzyFinderTextmate.vim

මෙය නොදන්නා ප්ලගිනයකි, නමුත් තවමත් ඇදහිය නොහැකි තරම් ප්‍රයෝජනවත් වේ. එය "නොපැහැදිලි" විස්තරාත්මක සින්ටැක්ස් භාවිතයෙන් ලිපිගොනු විවෘත කිරීමේ හැකියාව සපයයි. එහි අර්ථය වන්නේ විරල ලිපිගොනු ගසක ඔබට අවශ්‍ය වන්නේ ලිපිගොනු වක්‍රාකාරව සැකසීමට ප්‍රමාණවත් අක්ෂර පමණක් ටයිප් කිරීමයි.

නිගමනය

Vim සඳහා ඇදහිය නොහැකි මෙවලම් ගොඩක් තිබේ. මට විශ්වාසයි මම මෙහි මතුපිට පමණක් සීරීමට ලක් කර ඇති අතර ඔබේ වසමට අදාළ මෙවලම් සෙවීම වටී. සාම්ප්‍රදායික vi හි ප්‍රබල මෙවලම් කට්ටලය, එය මත vim හි වැඩිදියුණු කිරීම් සහ තව දුරටත් විස්තාරණය වන ප්ලගීන වල සංයෝජනය, එය මෙතෙක් සංකල්පනය කළ පෙළ සංස්කරණය කිරීමේ ප්‍රබලම ක්‍රමයකි. විම් පහසුවෙන් ඊමාක්ස්, සූර්යග්‍රහණය, දෘශ්‍ය චිත්‍රාගාරය සහ පෙළපොත් වැනි බලවත් ය.

ස්තූතියි

ස්තුති duwanis ඔහුගේ සඳහා විම් configs වන සිට මම බොහෝ උගත් අතර ප්ලගින බොහෝ නය ගෙන ඇති, මෙහි සඳහන්.


Rails.vim හි ඇති ඉන්ද්‍රජාලික පරීක්ෂණ-පන්තියේ සංචලනය වඩාත් පොදු දේවලින් එකක් වන්නේ ටෙක්ස්ට්මේට් සෑම භාෂාවක්ම නියපොතු වලින් ඇණ ගැසීමයි: මම Person.scala හි වැඩ කරන්නේ නම් සහ මම Cmd + T කරන්නේ නම්, සාමාන්‍යයෙන් පළමු දෙය ලැයිස්තුවේ PersonTest.scala ඇත.
ටොම් මොරිස්

5
මම හිතන්නේ FuzzyFinderTextmate වෙනුවට github.com/wincent/Command-T
Gavin Gilmour

2
සින්ටැස්ටික් සඳහා +1. එය, ජේඑස්ලින්ට් සමඟ සංයෝජනය වී ඇති නිසා, මගේ ජාවාස්ක්‍රිප්ට් දෝෂ සහිත විය හැක. සින්ටැස්ටික් සමඟ වැඩ කිරීම සඳහා JSLint සකස් කරන්නේ කෙසේද යන්න ගැන superuser.com/questions/247012/… බලන්න .
නේතන් ලෝන්ග්

1
En බෙන්සන් නියම ලැයිස්තුව! මම ස්නිප්මේට් වලද විසි කරන්නෙමි . පොදු කේතීකරණ දේවල් ඉතා ප්‍රයෝජනවත් ස්වයංක්‍රීයකරණය. <tab> ක්ෂණික නම් අවහිර නම්, ආදිය
AlG

2
මම හිතන්නේ nerdcommenter ද හොඳ ප්ලගිනයක්: මෙන්න . එහි නම පවසන පරිදි, එය ඔබගේ කේතය අදහස් දැක්වීම සඳහා ය.
ස්ටීවන්

53

. අවසන් පෙළ වෙනස් කිරීමේ විධානය නැවත කරන්න

මම මේ සමඟ බොහෝ කාලයක් ඉතිරි කරමි.

දෘශ්‍ය මාදිලිය කලින් සඳහන් කර තිබුනද, පෙළ ගොනුවේ ස්ථාවර ප්‍රමාණයේ තීරු සංස්කරණය කිරීමේදී අවහිර දෘශ්‍ය මාදිලිය මට බොහෝ කාලයක් ඉතිරි කර ඇත. (Ctrl-V සමඟ ප්‍රවේශ විය).


3
ඊට අමතරව, ඔබ පෙළ සංස්කරණය කිරීම සඳහා සංක්ෂිප්ත විධානයක් (උදා: උපග්‍රන්ථය සඳහා A) භාවිතා කරන්නේ නම්, ඔබ .යතුර එබූ ඊළඟ පේළිය සඳහා vim හට එම ක්‍රියාවම නැවත කළ හැකිය .
vdboor

48

gi

අවසන් වරට සංස්කරණය කළ ස්ථානයට යන්න (ඔබ යම් සෙවීමක් කර නැවත සංස්කරණයට යාමට අවශ්‍ය නම් එය ඉතා ප්‍රයෝජනවත් වේ)

^ P සහ ^ N.

පෙර (^ P) හෝ ඊළඟ (^ N) පෙළ සම්පූර්ණ කරන්න.

^ O සහ ^ I.

පෙර ( ^O- "O"පැරණි සඳහා) ස්ථානයට හෝ ඊළඟට ( ^I- "I"ආසන්නයේ "O") යන්න. ඔබ සෙවීම් සිදු කරන විට, ලිපිගොනු සංස්කරණය කරන විට, ඔබට මෙම "පැනීම්" හරහා ඉදිරියට සහ පසුපසට යා හැකිය.


4
Ung කුංගි `. ඔබව අවසන් සංස්කරණයට ගෙන යනු ඇත `` අවසාන 'පැනීමට' පෙර ඔබ සිටි ස්ථානයට ඔබව ගෙන යනු ඇත - එය අවසාන සංස්කරණයේ ස්ථානය විය හැකිය.
ග්‍රාන්ට් මැක්ලීන්

46

මම මෑතකදී (ලබා ගත්තා) මෙම වෙබ් අඩවිය සොයාගත්තා: http://vimcasts.org/

එය ඉතා අළුත් හා ඇත්තෙන්ම හොඳයි. වෙබ් අඩවිය පවත්වාගෙන යන පුද්ගලයා පෙළපොත්කරුගේ සිට Vim වෙත මාරු වූ අතර විශේෂිත වැදගත් මාතෘකා පිළිබඳ ඉතා හොඳ හා සංක්ෂිප්ත වාත්තු ඉදිරිපත් කරයි. එය පරික්ෂා කරන්න!


3
ඔබ vim tutorials වලට කැමති නම්, ඩෙරෙක් වියාට්ගේ vim වීඩියෝ ද බලන්න. ඔවුන් විශිෂ්ටයි.
ජෙරොමි ඇන්ග්ලිම්

42

CTRL+A ඔබ සිටගෙන සිටින සංඛ්‍යාව වැඩි කරයි.


19
... සහ CTRL-X අඩු වේ.
innaM

9
එය ඉතා කෙටිමඟකි, නමුත් මේ දක්වා මම ඒ සඳහා කිසිදු ප්‍රයෝජනයක් සොයාගෙන නොමැත.
SolutionYogi

8
ඔබ තිරය මත ධාවනය කර මෙය ක්‍රියා නොකරන්නේ මන්දැයි කල්පනා කරන්නේ නම් - ctrl + A, A
matja

13
OlutionSolutionYogi: එක් එක් පේළියේ ආරම්භයට පේළි අංකය එක් කිරීමට ඔබට අවශ්‍ය බව සලකන්න. විසඳුම: ggI1 <space> <esc> 0qqyawjP0 <ca> 0q9999 @ q
hcs42

10
Vimperator සමඟ අතිශයින්ම ප්‍රයෝජනවත් වන අතර, එය URL හි අවසාන අංකය වැඩි කරයි (හෝ අඩු කරයි, Ctrl-X). රූප ගැලරි ආදිය හරහා ඉක්මණින් සැරිසැරීමට ප්‍රයෝජනවත් වේ
නිල් පාට

38

සියල්ල සාමාන්‍ය ප්‍රකාරයේදී:

f <char> වත්මන් රේඛාවේ විශේෂිත අක්ෂරයක ඊළඟ අවස්ථාව වෙත යාමට, සහ ; නැවත කිරීමට.

එෆ් <චාර්> වත්මන් රේඛාවේ විශේෂිත අක්ෂරයක පෙර අවස්ථාව වෙත යාමට සහ ; නැවත කිරීමට.

බුද්ධිමත්ව භාවිතා කරන්නේ නම්, ඉහත දෙක මඟින් ඔබව ler ාතකයාට ඉක්මණින් රේඛාවක් ඔස්සේ ගමන් කළ හැකිය.

* ඊළඟ අවස්ථාව සෙවීම සඳහා වචනයක් මත.

# පෙර අවස්ථාව සෙවීම සඳහා වචනයක් මත.


6
ආ, මම * සහ # (කර්සරය යටතේ වචනය සඳහා ඉදිරියට / පසුපසට සොයන්න) බන්ධනය ගැන දැන සිටියේ නැත. ඒක නියමයි. F / F සහ t / T සහ; විධාන යනු වත්මන් රේඛාවේ අක්ෂර වෙත ඉක්මන් පැනීමකි. f / F මඟින් කර්සරය දැක්වෙන අක්‍ෂරය මත තබන අතර t / T එය අක්ෂරයට “ඉහළට” තබයි (තෝරාගත් දිශාවට අනුව චරිතය ඊට පෙර හෝ පසුව ;; නවතම f / F / t / T පුනරාවර්තනය කරයි. පනින්න (එකම දිශාවට).
ජිම් ඩෙනිස්

10
:) vim.org හි ඉඟි පිටුවේ ඉහළින් ඇති ටැග්ලයින්: "මම නියමිත වේලාවට" * "විධානය දැන සිටියේ නම් යතුරු එබීම් කීයක් ඉතිරි කර ගත හැකිදැයි ඔබට සිතාගත හැකිද?" - ජුවර්ගන් සල්ක්, 1/19/2001 "
යෙව්ජ්

1
ජිම් සඳහන් කළ පරිදි, "ටී / ටී" කොම්බෝ බොහෝ විට හොඳ ය, වඩා හොඳ නොවේ නම්, උදාහරණයක් ලෙස, ct(වචනය මකා දමා ඔබව ඇතුළු කිරීමේ ක්‍රමයට ඇතුළත් කරනු ඇත, නමුත් පරාමිතීන් තබා ගන්න!
puk

34

වාරය

ඒ. සැසිය සුරකින්න

: mks සැසියේ නම

බී. බල සුරැකීමේ සැසිය

: mks! සැසියේ නම

ඇ. පැටවුම් සැසිය

gvim හෝ vim -S සැසි නාමය


එකතු කිරීම හා අඩු කිරීම

ඒ. එකතු කිරීම හා අඩු කිරීම

CTRL-A; කර්සරයේ හෝ පසුව අංකයට හෝ අකාරාදී අක්ෂරයට [ගණන්] එකතු කරන්න. Vi Vi හි නොවේ

CTRL-X; කර්සරයේ හෝ පසුව අංකය හෝ අකාරාදී අක්‍ෂරයෙන් අඩු කරන්න. Vi Vi හි නොමැත}

බී. කවුළු යතුර මුදා හැරීම

කවුළුව තුළ, Ctrl-A දැනටමත් සම්පූර්ණ ගොනු තේරීම සඳහා සිතියම් ගත කර ඇති අතර ඔබට rc ගොනුවේ සිතියම් ගත කළ යුතුය. mswin.vim CTRL-Maping කොටසක් අදහස් දැක්වීමක් ලෙස සලකුණු කරන්න හෝ ඔබේ rc ගොනුව unmap සමඟ එක් කරන්න

ඇ. මැක්‍රෝ සමඟ

CTRL-A විධානය සාර්වයක ඉතා ප්‍රයෝජනවත් වේ. උදාහරණය: අංකිත ලැයිස්තුවක් සෑදීමට පහත පියවර භාවිතා කරන්න.

  1. පළමු ලැයිස්තු ඇතුළත් කිරීම සාදන්න, එය අංකයකින් ආරම්භ වන බවට වග බලා ගන්න.
  2. qa - 'a' බෆරයට පටිගත කිරීම ආරම්භ කරන්න
  3. Y - ඇතුල්වීම yank
  4. p - ඇතුළත් කිරීමේ පිටපතක් පළමු පිටුවට පහළින් තබන්න
  5. CTRL-A - අංකය වැඩි කරන්න
  6. q - පටිගත කිරීම නවත්වන්න
  7. --a - යෑන්ක්, දමා සහ වර්ධක වේලාවන් නැවත කරන්න

1
වින්ඩෝස් හි කෙටිමං මොනවාදැයි යම් අදහසක් තිබේද?
දොන් රෙබා

32

පසුගිය සතියේ වැඩ කරන විට අපගේ ව්‍යාපෘතියට වෙනත් ව්‍යාපෘතියකින් පයිතන් කේත විශාල ප්‍රමාණයක් උරුම විය. අවාසනාවට කේතය අපගේ පවත්නා ගෘහ නිර්මාණ ශිල්පයට නොගැලපේ - ඒ සියල්ල ගෝලීය විචල්‍යයන් හා කාර්යයන් සමඟ සිදු කරන ලද අතර එය බහු-නූල් පරිසරයක ක්‍රියා නොකරනු ඇත.

අප සතුව ඩොලර් 80 ක ලිපිගොනු ඇති අතර ඒවා වස්තු නැඹුරුවීම සඳහා නැවත සකස් කළ යුතුය - සියලු කාර්යයන් පන්තිවලට ගෙන යන ලදි, පරාමිතීන් වෙනස් කරන ලදි, ආනයන ප්‍රකාශ එකතු කරන ලදි. ආදිය. එක් පුද්ගලයෙකුට දිනකට 2-4 ක් කළ හැකි යැයි මම ගණන් බලා සිටිමි.

ඒ නිසා මම පළමුවැන්න අතින් කළ අතර පසුව වෙනස්කම් ස්වයංක්‍රීය කිරීම සඳහා විම් පිටපතක් ලිවීය. එය බොහෝ විට vim විධාන ලැයිස්තුවක් විය

" delete an un-needed function "
g/someFunction(/ d

" add wibble parameter to function foo "
%s/foo(/foo( wibble,/

" convert all function calls bar(thing) into method calls thing.bar() "
g/bar(/ normal nmaf(ldi(`aPa.

අන්තිමයා ටිකක් පැහැදිලි කිරීම වටී:

g/bar(/  executes the following command on every line that contains "bar("
normal   execute the following text as if it was typed in in normal mode
n        goes to the next match of "bar(" (since the :g command leaves the cursor position at the start of the line)
ma       saves the cursor position in mark a
f(       moves forward to the next opening bracket
l        moves right one character, so the cursor is now inside the brackets
di(      delete all the text inside the brackets
`a       go back to the position saved as mark a (i.e. the first character of "bar")
P        paste the deleted text before the current cursor position
a.       go into insert mode and add a "." 

සියලු ආනයන ප්‍රකාශයන් උත්පාදනය කිරීම වැනි වඩාත් සංකීර්ණ පරිවර්තනයන් කිහිපයක් සඳහා මම පයිතන් කිහිපයක් විම් පිටපතට ඇතුළත් කළෙමි.

පැය කිහිපයක වැඩ කිරීමෙන් පසු අවම වශයෙන් 95% ක් පරිවර්තනය කළ හැකි පිටපතක් මා සතුව තිබුණි. මම ගොනුවක් vim වලින් විවෘත කර ධාවනය :source fixit.vimකර ගොනුව ඇසිපිය හෙළමින් පරිවර්තනය කරමි.

ස්වයංක්‍රීය හා ප්‍රති results ල පරික්ෂා කිරීම වටී නැති ඉතිරි 5% වෙනස් කිරීමේ කාර්යය අප සතුව ඇත, නමුත් මෙම පිටපත ලිවීමට දිනක් ගත කිරීමෙන් මම සති ගණන් වැඩ ඉතිරි කර ඇති බව ගණන් බලා ඇත.

ඇත්ත වශයෙන්ම මෙය පයිතන් හෝ රූබි වැනි ස්ක්‍රිප්ටින් භාෂාවක් සමඟ ස්වයංක්‍රීය කිරීමට හැකි වනු ඇත, නමුත් එය ලිවීමට බොහෝ කාලයක් ගතවනු ඇති අතර නම්‍යශීලී නොවනු ඇත - රීජෙක්ස් පමණක් හැසිරවිය නොහැකි බැවින් අවසාන උදාහරණය දුෂ්කර වනු ඇත කැදලි අල්ලු, උදා: පරිවර්තනය කිරීමට bar(foo(xxx))කිරීමට foo(xxx).bar(). Vim කාර්යය සඳහා පරිපූර්ණ විය.


1
"ප්‍රයෝජනවත් සහ සම්භාව්‍ය නොවන" මැක්‍රෝස් වලින් ඉගෙන ගැනීමට ලැබීම සතුටක්.
ඔලිවියර් පොන්ස්

%s/\(bar\)(\(.\+\))/\2.\1()/ඒකත් කරයි. (පලායාම අනුකූල වේ :set magic.) වාර්තාව සඳහා පමණි. :)
Ipsquiggle

1
ඔබ vim-style %s/\v(bar)\((.+)\)/\2.\1()/
ගැලවීමට අකමැති නම්,

pslpsquiggle: ඔබේ යෝජනාව වරහන් කට්ටල එකකට වඩා ඇති සංකීර්ණ ප්‍රකාශන හැසිරවිය නොහැක. උදා: if bar(foo(xxx)) or wibble(xxx): බවට පත් if foo(xxx)) or wibble(xxx.bar(): සම්පූර්ණයෙන්ම වැරදියි වන.
ඩේව් කිරිබි

28

බිල්ඩින් ගොනු ගවේෂකය භාවිතා කරන්න! විධානය වන :Exploreඅතර එය ඔබගේ ප්‍රභව කේතය හරහා ඉතා වේගයෙන් සැරිසැරීමට ඉඩ සලසයි. මෙම සිතියම් මා සතුව ඇත .vimrc:

map <silent> <F8>   :Explore<CR>
map <silent> <S-F8> :sp +Explore<CR>

ගවේෂකය ඔබට ගොනු වෙනස් කිරීම් කිරීමටද ඉඩ දෙයි. මම මගේ ප්‍රියතම යතුරු කිහිපයක් පළ කරමි, එබීමෙන් <F1>ඔබට සම්පූර්ණ ලැයිස්තුව ලැබෙනු ඇත:

  • - : වඩාත්ම ප්‍රයෝජනවත්: ඉහළ ඩිරෙක්ටරියට වෙනස් කරන්න ( cd ..)
  • mf : ගොනුවක් සලකුණු කරන්න
  • D : කිසිවක් සලකුණු නොකළහොත් සලකුණු කළ ගොනු හෝ කර්සරය ක්‍රියාත්මක වන ගොනුව මකන්න.
  • R : කර්සරය ක්‍රියාත්මක වන ගොනුව නැවත නම් කරන්න.
  • d : වත්මන් නාමාවලියෙහි නව නාමාවලියක් සාදන්න
  • % : වත්මන් නාමාවලියෙහි නව ගොනුවක් සාදන්න

1
මම නිතරම සිතුවේ ගවේෂණය සඳහා සුපුරුදු ක්‍රම බොහෝ දේ සඳහා උරා ගන්නා බවයි. ඔබට යා යුතු තැන ඔබ දන්නේ නම්, එය සෙවීම මන්දගාමී වේ. Vim.org හි ස්ක්‍රිප්ට් කොටසේ LustyExplorer බොහෝ සෙයින් අවශ්‍ය වන වැඩිදියුණු කිරීමකි.
Svend

ඔබගේ දෙවන සිතියම්කරණය වඩාත් සරල විය හැකිය: සිතියම <නිහ ile> <S-F8>: ලිංගික ගවේෂණය <CR>
ටෝරස් ඕල්සන්

8
බිල්ට් ගවේෂකය වෙනුවට මම NERDtree නිර්දේශ කරමි. එය ව්යාපෘති සඳහා මා භාවිතා කරන ආකාරය වෙනස් කර ඇති අතර මා වඩාත් .ලදායී කර ඇත. ඒ සඳහා ගූගල් කරන්න.
kprobst

ප්‍රභව ගස ගවේෂණය කිරීමේ අවශ්‍යතාවය මට කිසි විටෙකත් දැනෙන්නේ නැත, මම දැන් භාවිතා කරමි :find, :tagසහ විවිධ යතුරු එබීම් වටා පනින්න. (සමහර විට මෙයට හේතුව මා වැඩ කරන ප්‍රභව ගස් විශාල හා සංවිධානාත්මකව මා කළ දෙයට වඩා වෙනස්ද? :))
dash-tom-bang

25

මම ඇමරිකානු ගුප්ත ලේඛන සංගමයේ සාමාජිකයෙක්මි. ද්විමාන සඟරාවට විවිධ වර්ගවල ගුප්ත ලේඛන 100 කට අධික සංඛ්‍යාවක් ඇතුළත් වේ. මේවායින් දළ වශයෙන් 15 ක් “ගුප්ත කේත” වේ - ඉලක්කම් සඳහා ආදේශ කර ඇති අකුරු සමඟ විවිධ ගණිතමය ගැටලු. මේවායින් දෙකක් හෝ තුනක් සුඩෝකස් වේ. ජාලකය සම්පුර්ණ වූ විට, විශේෂිත අක්ෂර නවය කිසියම් වචනයක් හෝ වචනයක්, යම් රේඛාවක, විකර්ණ, සර්පිලාකාර යනාදිය විදුලිබල පද්ධතියේ කොතැනක හෝ අක්ෂර වින්‍යාස කරනු ඇත.

පැන්සල සමඟ වැඩ කිරීම හෝ ගැටළු අතින් ටයිප් කිරීම වෙනුවට, මම ඔවුන්ගේ වෙබ් අඩවියේ සාමාජික ප්‍රදේශයෙන් ගැටළු බාගත කරමි.

මෙම සුඩෝකස් සමඟ වැඩ කරන විට, මම vi භාවිතා කරන්නේ, වෙනත් සංස්කාරකවරුන් කිහිප දෙනෙකුට ඇති පහසුකම් මම භාවිතා කරන බැවිනි. බොහෝ විට අකුරු ජාලකය අංකිත ජාලයක් බවට පරිවර්තනය කිරීමේදී, එය විසඳීමට මට පහසු බව පෙනේ, පසුව සම්පුර්ණ කරන ලද අංකිත ජාලකය නැවත අකුරු ජාලයට ඇතුළු කර විසඳුම් වචනය හෝ වචන සොයා ගනී.

ගැටළුව අක්ෂර 9 කින් යුත් කණ්ඩායම් නවයක් ලෙස සංයුති කර -ඇති අතර, හිස් තැන් නියෝජනය කරමින් පේළි දෙකකින් ලියා ඇත. පළමු පියවර වන්නේ මේවා අක්ෂර නවයකින් පේළි නවයකට සංයුති කිරීමයි. මේ සඳහා විශේෂ දෙයක් නැත, සුදුසු ස්ථානවල රේඛා කඩනයන් අටක් ඇතුළත් කරන්න.

ප්රති result ලය මේ වගේ වනු ඇත:

T-O-----C
-E-----S-
--AT--N-L
---NASO--
---E-T---
--SPCL---
E-T--OS--
-A-----P-
S-----C-T

එබැවින්, මෙය සංඛ්‍යා බවට පරිවර්තනය කිරීමේ පළමු පියවර වන්නේ පැහැදිලි අක්ෂර ලැයිස්තුවක් සෑදීමයි. පළමුව, මම බ්ලොක් එකේ පිටපතක් සාදමි. මම කර්සරය බ්ලොක් එකේ ඉහළින් ස්ථානගත කර ටයිප් කරන්න :y}}p. :මාව විධාන ප්‍රකාරයට yදමයි, ඊළඟ චලන විධානය යොදවයි. }ඊළඟ ඡේදයේ අවසානය දක්වා වූ පියවරක් බැවින් , ඡේදය y}යං කරයි. }ඉන්පසු කර්සරය ඡේදයේ අවසානය දක්වා ගෙන යන අතර කර්සරයට පසුව pඅප යන්තම් ඇලවූ දේ අලවන්න. එබැවින් y}}pඊළඟ ඡේදයේ පිටපතක් සාදමින් පිටපත් දෙක අතර කර්සරය සමඟ අවසන් වේ.

ඊළඟට, මම එම පිටපත් වලින් එකක් පැහැදිලි අක්ෂර ලැයිස්තුවක් බවට පත් කරමි. එම විධානය ටිකක් සංකීර්ණයි:

:!}tr -cd A-Z | sed 's/\(.\)/\1\n/g' | sort -u | tr -d '\n'

:නැවතත් මාව විධාන ප්‍රකාරයට දමයි. !ඊළඟ යාන්කයේ අන්තර්ගතය විධාන රේඛාවක් හරහා නල මාර්ගගත කළ යුතු බව පෙන්නුම් කරයි. }ඊළඟ ඡේදය yanks, සහ විධාන රේඛාව පසුව භාවිතා trඉහල අකුරු, සඳහා හැර අන් සියලූම දේ සිදු ඉවත් කිරීමට අණ sedතනි මාර්ගයේ එක් එක් ලිපිය මුද්රණය කිරීමට අණ හා sortඅනුපිටපත් ඉවත් කිරීම, එම රැහැන් නිරාකරණය කිරීමට අණ, පසුව trසිදු තීරු නව රේඛා, එකිනෙකට වෙනස් අක්ෂර නවයක් තනි පේළියක තබා, මුලින් ඡේදය සෑදූ පේළි නවය වෙනුවට. මේ අවස්ථාවේ දී, ලිපි,: ACELNOPST.

ඊළඟ පියවර වන්නේ ජාලකයේ තවත් පිටපතක් සෑදීමයි. ඉන්පසු එක් එක් අකුරු 1 සිට 9 දක්වා ඉලක්කම් සමඟ ප්‍රතිස්ථාපනය කිරීමට මා හඳුනාගෙන ඇති අකුරු භාවිතා කිරීම. එය සරලයි : :!}tr ACELNOPST 0-9. ප්රති result ලය:

8-5-----1
-2-----7-
--08--4-3
---4075--
---2-8---
--7613---
2-8--57--
-0-----6-
7-----1-8

මෙය පසුව සුපුරුදු ආකාරයෙන් විසඳා ගත හැකිය, නැතහොත් ඔබ කැමති ඕනෑම සුඩෝකු විසඳුමකට ඇතුල් කළ හැකිය. සම්පුර්ණ කරන ලද විසඳුම නැවත අකුරු බවට පරිවර්තනය කළ හැකිය :!}tr 1-9 ACELNOPST.

Vi හි බලය ඇත්තේ තවත් කිහිප දෙනෙකුට ගැලපේ. ලොකුම ගැටළුව නම්, vi නිබන්ධන පොත්, වෙබ් අඩවි, උපකාරක ලිපිගොනු යනාදිය ඉතා සුළු ප්‍රමාණයක් පමණක් කළ හැකි දේ මතුපිටට ස්පර්ශ කිරීමට වඩා වැඩි යමක් කිරීමයි.


උබුන්ටු වැනි සමහර ඩිස්ට්‍රෝ වල "vi" යන වචනයේ සිට "vim" යන අන්වර්ථ නාමයන් තිබීම නිසා මිනිසුන්ට vi නොපෙනේ. විශිෂ්ට උදාහරණයක්, උත්සාහ කළ යුතුයි ... +1
hhh

1
නිවැරදි 'මාදිලිය' තුළට පැමිණිය හැකි වන පරිදි එය ආරම්භ කළ නම විමසා බලන්නේ නැද්ද?
dash-tom-bang

3
මෙම පුනරාවර්තී දෝෂය නිසා මම ව්‍යාකූල වී සිටිමි: ඔබ :විධාන මාදිලියට යා යුතු යැයි ඔබ කියනු ඇත, නමුත් නිරන්තරයෙන් ඔබ විධාන මාදිලියේ සිට ක්‍රියා කළ නොහැකි සාමාන්‍ය මාදිලියේ විධාන (වැනි y}}p) නියම කරයිද?
sehe

අද්විතීය අක්ෂර අභියෝගය මා භාර ගැනීම: :se tw=1 fo=(සකස් කිරීම) VG:s/./& /g(අවකාශය ඇතුළු කිරීම), gvgq(වෙනම රේඛාවලට බෙදීම), V{:sort u(අනුපිටපත් වර්ග කර ඉවත් කරන්න)
sehe

23

තොග පෙළ හැසිරවීම්!

එක්කෝ මැක්‍රෝස් හරහා:

  • පටිගත කිරීම සමඟ ආරම්භ කරන්න: qq
  • දේවල් කරන්න
  • පටිගත කිරීම නවත්වන්න: q
  • නැවත කරන්න: @q(පළමු වරට), ඊට @@පසු.
  • 20 වතාවක් නැවත නැවත කරන්න: 20@@

හෝ නිත්‍ය ප්‍රකාශන හරහා:

  • දේවල් ප්රතිස්ථාපනය කරන්න: :%s/[fo]+/bar/g

(නමුත් අවවාද කරන්න: ඔබ දෙවැන්න කළහොත් ඔබට ගැටළු 2 ක් ඇත :).)


5
ජේමි සැවින්ස්කි යොමු කිරීම සඳහා +1 . (එයට සම්බන්ධ වීමට අපොහොසත් වීම සඳහා ලකුණු කිසිවක් ආපසු ලබා නොගනී). :)
ජිම් ඩෙනිස්

1
Im ජිම් මම දැනගෙන හිටියේ නැහැ එය ජේමි සැවින්ස්කි උපුටා දැක්වීමක් කියලා :). මම මෙතැන් සිට එය මතක තබා ගැනීමට උත්සාහ කරමි.
jqno

පහත දැක්වෙන උපක්‍රමය වඩ වඩාත් ප්‍රයෝජනවත් බව මට පෙනේ ... ඔබට පෙර පේළියට යම් රටාවක් ගැළපෙන (හෝ නොගැලපෙන) රේඛාවලට සම්බන්ධ වීමට අවශ්‍ය අවස්ථාවන් සඳහා: :% g/foo/-1jහෝ :'a,'z v/bar/-1jඋදාහරණයක් ලෙස (කලින් සඳහන් කළ “සියලු රේඛා හා රටාවට ගැලපෙන” දෙවැන්න “රටාව හා සැසඳීමට අසමත් වන ලකුණු a හා ලකුණු z අතර රේඛා”). A gහෝ vex විධානයක පැටර්ට පසුව ඇති කොටස වෙනත් ඕනෑම විධාන විය හැකිය, -1j යනු සාපේක්ෂ රේඛා චලනයකි.
ජිම් ඩෙනිස්

ඇත්ත වශයෙන්ම, ඔබ ඔබේ සාර්ව '2' ලෙස නම් කරන්නේ නම්, එය භාවිතා කිරීමට කාලය පැමිණි විට, ඔබේ ඇඟිල්ල '@' යතුරෙන් 'q' යතුර වෙත ගෙනයාමට අවශ්‍ය නැත. එහි ඇති සෑම අවස්ථාවකම මිලි තත්පර 50 ත් 100 ත් අතර ප්‍රමාණයක් ඉතිරි වේ. = පී
ජස්ට් ජෙෆ්

Ust ජුස්ට් ජෙෆ් සම්පූර්ණයෙන්ම ඔබගේ යතුරුපුවරු පිරිසැලසුම මත රඳා පවතී, මගේ @ යතුර යතුරුපුවරුවේ අනෙක් පැත්තෙන් මගේ 2 යතුරෙන් වේ.
සයිමන් ස්ටීල්

23

මම මෑතකදී සොයාගත්තා q:. එය "විධාන කවුළුව" විවෘත කර ඔබගේ නවතම ex-mode (command-mode) විධාන පෙන්වයි. ඔබට සුපුරුදු පරිදි කවුළුව තුළ ගමන් කළ හැකි අතර, එබීමෙන් <CR>විධානය ක්‍රියාත්මක වේ. ඔබට සංස්කරණය කළ හැකිය. ඔබ කිසියම් සංකීර්ණ විධානයක් හෝ රීජෙක්ස් සමඟ අවුල් වන විට මිල කළ නොහැකි අතර ඔබට සියල්ල නැවත ටයිප් කිරීමට අවශ්‍ය නැත, නැතහොත් ඔබට කිරීමට අවශ්‍ය සංකීර්ණ දෙය නම් විධාන 3 ක් ආපසු ලබා දීමයි. එය බොහෝ දුරට set -o viබාෂ් වැනි ය, නමුත් විම් සඳහාම (හෙහ්!).

:help q:ඉදිරියට සහ පසුපසට යාම සඳහා වඩාත් රසවත් බිටු සඳහා බලන්න .


22

මම කලින් දවසේ විම්ගේ සර්ව සම්පූර්ණ කිරීම සොයාගත් අතර, මම කුමක් කරනවාද යන්න ගැන ටිකක් අවුල් සහගත බව පිළිගන්නා අතර, පුදුම සහගත ලෙස හොඳ ප්‍රති results ල ලබාගෙන ඇත්තේ Ctrl+ x Ctrl+ uහෝ Ctrl+ n/ Ctrl+ pඑක් කිරීමේ ක්‍රමයට ය. එය එතරම් IntelliSense නොවේ , නමුත් මම තවමත් එය ඉගෙන ගන්නෙමි.

එය අත්හදා බලන්න! :help ins-completion


20

මේවා කෙටිමං නොවේ, නමුත් ඒවා සම්බන්ධ වේ:

  1. කැප්ස්ලොක් අතිරේක ESC (හෝ Ctrl) කරන්න
  2. මෙම විධානය සමඟ "," (කොමාව) වෙත සිතියම් නායකයා: mapleader = ","

ඒවා මගේ tivity ලදායිතාව ඉහළ නංවයි.


හේයි "\" ගැන හොඳ ඉඟියක්! "\" ට වඩා "," ටයිප් කිරීමට වඩා හොඳය.
ඔලිවියර් පොන්ස්

2
වින්ඩෝස් හි කැප්ස් ලොක් අතිරේක එස්ක් එකක් බවට පත් කිරීම සඳහා (කැප්ස් ලොක් යතුර කුමක්ද? “ඕනෑම යතුරක්” සඳහා), මෙය උත්සාහ කරන්න: web.archive.org/web/20100418005858/http://webpages.charter.net/…
ආර්. මාටින්හෝ ෆර්නැන්ඩස්

මැක්හි, ඔබට PCKeyboardHack අවශ්‍යයි - විස්තර superuser.com/questions/34223/…
ටොම් මොරිස්

1
වින්ඩෝස් හි මම AutoHotKey සමඟ භාවිතා කරමිCapslock::Escape
ජෙරමි ඇන්ග්ලිම්

19

මම නිතර භාවිතා කරන තවත් ප්‍රයෝජනවත් vi "කෙටිමඟක්" වන්නේ 'xp' ය. මෙය කර්සරය යටතේ අක්‍ෂරය ඊළඟ අක්‍ෂරය සමඟ මාරු කරයි.


3
Xpඅනෙක් පැත්තට යන්න
පරීක්ෂක

5
වින්ඩෝස් එක්ස්පී එළියට ආ කාලය පුරාම මම විහිළුවට ලක් කළේ මේ සඳහා ඇති එකම හොඳ භාවිතය මෙය බවයි.
kguest

18

<Ctrl> + W, V තිරය සිරස් අතට බෙදීමට
<Ctrl> + W, W කවුළු අතර මාරුවීමට

මෙම කවුළුව තුළ මා සංස්කරණය කරන ස්ක්‍රිප්ට් ධාවනය කිරීමට python% [args]

අත්තනෝමතික රේඛා නැවීම සඳහා දෘශ්‍ය මාදිලියේ ZF


2
<Ctrl> + W සහ j / k ඔබට නියත වශයෙන්ම සැරිසැරීමට ඉඩ දෙයි (සාමාන්‍ය ඉහළට මෙන් j ඉහළට, k පහළට). ඔබට 3+ බෙදීම් ඇති විට මෙය විශිෂ්ටයි.
ඇන්ඩ rew ස්කැග්නෙලි

1
දෘශ්‍ය ප්‍රකාරයේදී zf සඳහා +1, මම කේත නැවීමට කැමතියි, නමුත් ඒ ගැන දැන සිටියේ නැත.
coder_tim

2
මගේ යතුරුපුවරුව පහර දීමෙන් පසු මම එය අඩු කර ඇත <C-w>nහෝ <C-w>sනව තිරස් කවුළුවක්, <C-w>bපහළ දකුණු කවුළුව, <C-w>cහෝ <C-w>qසමීප කවුළුව, <C-w>xවැඩි වී පසුව කවුළු පළල (??) අඩු කිරීම, <C-w>pඅවසාන කවුළුව, <C-w>backspaceවමට ගෙනයන්න (ඊෂ්) කවුළුව
puk

:help ctrl-wFTW ... ඔබටම උදව්වක් කරන්න, අවම වශයෙන් විනාඩි 15 ක් වත් මේ දේවල් අත්හදා බැලීමට ඔබට බල කරන්න!
sjas

18

දෘශ්‍ය ප්‍රකාරය

තවත් කිහිප දෙනෙකු පවසා ඇති පරිදි, දෘශ්‍ය මාදිලිය යනු ඔබේ පිටපත් / කැපීම සහ පේස්ට් ගැටලුවට පිළිතුරයි. Vim ඔබට 'v', 'V' සහ Cv ලබා දෙයි. Vim හි පහළ අකුර 'නොට්පෑඩ් හි මාරුවීමේ යතුරට සමාන වේ. හොඳ දෙය නම් ඔබට එය තදින් අල්ලා ගත යුතු නැත. ඔබ තෝරා ගැනීමේ ආරම්භක (හෝ අවසන්) ස්ථානයට කාර්යක්ෂමව සැරිසැරීමට ඔබට ඕනෑම චලන තාක්‍ෂණයක් භාවිතා කළ හැකිය. ඉන්පසු 'v' යතුර ඔබන්න, ඔබේ තේරීමේ අනෙක් කෙළවරට සැරිසැරීමට කාර්යක්ෂම චලන ක්‍රම භාවිතා කරන්න. එවිට 'd' හෝ 'y' මඟින් එම තේරීම කැපීමට හෝ පිටපත් කිරීමට ඉඩ ලබා දේ.

Vi හි කපන / පිටපත් / පේස්ට් පිළිබඳ ජිම් ඩෙනිස්ගේ විස්තරයට වඩා vim හි දෘශ්‍ය මාදිලියේ ඇති වාසිය නම් ඔබට ස්ථානය හරියටම ලබා ගැනීමට අවශ්‍ය නොවන බවයි. සමහර විට ඔබට යා යුතු ස්ථානයට පොදු ස්ථානයක් කරා ළඟා වීමට ඉක්මන් චලනයක් භාවිතා කිරීම වඩාත් කාර්යක්ෂම වන අතර පසුව ඔබට යාමට අවශ්‍ය තැන හරියටම ලබා ගන්නා වඩාත් සංකීර්ණ තනි චලන විධානයක් ගැන සිතීමට වඩා වෙනත් චලනයන් සමඟ එය පිරිපහදු කරන්න.

දෘශ්‍ය මාදිලිය මේ ආකාරයෙන් පුළුල් ලෙස භාවිතා කිරීමේ අවාසිය නම්, එය ඔබ නිතරම භාවිතා කරන කිහිලිකරුවෙකු බවට පත්විය හැකි අතර එමඟින් ඔබට වඩාත් කාර්යක්ෂමව දේවල් කිරීමට ඉඩ සලසන නව vi (m) විධානයන් ඉගෙනීම වලක්වනු ඇත. කෙසේ වෙතත්, ඔබ vi (m) හි නව අංග ඉගෙන ගැනීමට ඉතා ක්‍රියාශීලී නම්, මෙය ඔබට බොහෝ සෙයින් බලපාන්නේ නැත.

දෘශ්‍ය රේඛාව සහ දෘශ්‍ය වාරණ මාතයන් ඔබට ඉතා ප්‍රබල විය හැකි මෙම තේමාව පිළිබඳ වෙනස්කම් ලබා දෙන බව මම නැවත අවධාරණය කරමි ... විශේෂයෙන් දෘශ්‍ය වාරණ මාදිලිය.

යතුරුපුවරුවේ කාර්යක්ෂම භාවිතය පිළිබඳ

යතුරු පුවරුව භාවිතා කිරීමට වේගවත්ම ක්‍රමය අත් විකල්ප බව ඔබේ ප්‍රකාශයට මම එකඟ නොවෙමි. එහි සත්‍යයේ අංගයක් ඇත. ඉතා සාමාන්‍යයෙන් කථා කිරීම, එකම දේ නැවත නැවත භාවිතා කිරීම මන්දගාමී වේ. මෙම මූලධර්මයට වඩාත්ම වැදගත් උදාහරණය වන්නේ එකම ඇඟිල්ලෙන් යතුරු ලියනය කරන යතුරු එබීම ඉතා මන්දගාමී වීමයි. ඔබේ ප්‍රකාශය බොහෝ විට මෙම රටාව මත s / ඇඟිල්ල / අත / පරිණාමනය භාවිතා කිරීමේ ස්වාභාවික ප්‍රවණතාවයෙන් පැන නගී. යම් දුරකට එය නිවැරදි ය, නමුත් කාර්යක්ෂමතා වර්ණාවලියේ අතිශය ඉහළ කෙළවරේ එය වැරදිය.

ඕනෑම පියානෝ වාදකයෙකුගෙන් විමසන්න. සටහන් කිහිපයක අනුපිළිවෙලින් දෑත් ප්‍රත්‍යාවර්ත කිරීම වේගවත්ද, නැතහොත් එක අතකින් අඛණ්ඩව ඇඟිලි අනුපිළිවෙලින් භාවිතා කිරීම වේගවත්දැයි ඔවුන්ගෙන් විමසන්න. යතුරු එබීම් 4 ටයිප් කිරීමේ වේගවත්ම ක්‍රමය නම් විකල්ප අත් නොව, එකම අතෙහි ඇඟිලි 4 කින් ඒවා නඟින්න හෝ බැසීමේ පිළිවෙලට ටයිප් කිරීමයි (මෙය "ධාවනය" ලෙස හඳුන්වන්න). ඔබ මෙම හැකියාව සලකා බැලූ පසු මෙය ස්වයං දෘශ්‍යමාන විය යුතුය.

වඩාත් දුෂ්කර ගැටළුව මේ සඳහා ප්‍රශස්තිකරණය කිරීමයි. යතුරුපුවරුවේ නිරපේක්ෂ දුර ප්‍රමාණය ප්‍රශස්තිකරණය කිරීම පහසුය. විම් එය කරයි. "ධාවන" මට්ටමින් ප්‍රශස්තිකරණය කිරීම වඩා දුෂ්කර ය, නමුත් vi (m) එහි මොඩල් සංස්කරණය සමඟින් ඔබට කළ හැකි ඕනෑම මොඩල් නොවන ප්‍රවේශයකට (ahem, emacs) වඩා හොඳ අවස්ථාවක් ලබා දේ.

ඉමාක්ස් මත

අන්තිම වර්‍ගාත්මක ප්‍රකාශය හේතුවෙන් ඉමාක්ස් ජ්වලිතයන් මගේ මුළු තනතුරම නොසලකා හැරීමට ඉඩ නොතබන ලෙස, ඊමාක් සහ විම් ආගම් අතර වෙනසෙහි මුල විස්තර කළ යුතු යැයි මට හැඟේ. සංස්කාරක යුද්ධවලදී මම කිසි විටෙකත් කතා කර නැති අතර මම නැවත එය නොකරනු ඇත, නමුත් කිසිවෙකු මේ ආකාරයෙන් වෙනස්කම් විස්තර කරන බව මා අසා නැත, එබැවින් මෙහි එය සිදු වේ. වෙනස වන්නේ පහත දැක්වෙන වෙළඳාමයි:

Vim ඔබට අසමසම අමු පෙළ සංස්කරණ කාර්යක්ෂමතාවයක් ලබා දෙයි

අන්ධ විම් ජ්වලිතයන් කියා සිටින්නේ විම්ට ස්ක්‍රිප්ටින් භාෂාවක් ඇති බවයි. නමුත් එය සංස්කාරකවරයාට සේවය කිරීම සඳහා නිර්මාණය කර ඇති අපැහැදිලි, තාවකාලික භාෂාවකි. ඉමාක්ස් සතුව ලිස්ප් ඇත! කිව්වා ඇති. එම අවසාන වාක්‍ය දෙකේ වැදගත්කම ඔබ අගය නොකරන්නේ නම් හෝ එම අගය වර්ධනය කර ගැනීම සඳහා ක්‍රියාකාරී ක්‍රමලේඛනය සහ ලිස්ප් ගැන ප්‍රමාණවත් ඉගෙන ගැනීමට ආශාවක් තිබේ නම්, ඔබ විම් භාවිතා කළ යුතුය.

ඉමාක්ස් ජ්වලිතයන් කියා සිටින්නේ ඉමාක්ස් වලට වයිපර් මාදිලිය ඇති බවත්, එබැවින් එය වයිම්හි සුපර්සෙට් එකක් බවත්ය. නමුත් වයිපර් ප්‍රකාරය සම්මත නොවේ. මගේ අවබෝධය නම් වයිපර් ප්‍රකාරය බහුතරයක් ඊමාක් භාවිතා කරන්නන් විසින් භාවිතා නොකරන බවයි. එය පෙරනිමිය නොවන බැවින්, බොහෝ ඊමාක් භාවිතා කරන්නන් බොහෝ විට මොඩල් පරමාදර්ශයේ ප්‍රතිලාභ සඳහා සැබෑ ඇගයීමක් වර්ධනය නොකරයි.

මගේ මතය අනුව මෙම වෙනස්කම් විකලාංග වේ. මා විශ්වාස කර ඇති පරිදි vim සහ emacs වල ප්‍රතිලාභ දෙකම වලංගු බව මම විශ්වාස කරමි. මෙයින් අදහස් කරන්නේ අවසාන සංස්කාරකය තවම නොපවතින බවයි. අවසාන සංස්කාරකය පදනම් කර ගැනීමට පහසුම වේදිකාව ඉමාක්ස් බව බොහෝ විට සත්‍යයකි. නමුත් මෝඩල් සංස්කරණය ඊමාක්ස් මානසිකත්වයට ඇතුළත් නොවේ. ඊමාක්ස් ප්‍රජාවට අනාගතයේදී ඒ ආකාරයට ගමන් කළ හැකි නමුත් එය බොහෝ දුරට නොපෙනේ.

එබැවින් ඔබට අමු සංස්කරණ කාර්යක්ෂමතාව අවශ්‍ය නම්, vim භාවිතා කරන්න. ස්ක්‍රිප්ටින් කිරීම සහ ක්‍රමලේඛනය කිරීම සඳහා ඔබට අවසාන පරිසරය අවශ්‍ය නම් ඔබේ සංස්කාරක ඊමාක් භාවිතා කරන්න. ක්‍රමලේඛන හැකියාව අවධාරණය කරමින් ඔබට දෙකම අවශ්‍ය නම්, වයිපර් ප්‍රකාරය සහිත ඊමාක්ස් භාවිතා කරන්න (හෝ ඔබේම ක්‍රමයට ක්‍රමලේඛනය කරන්න). ඔබට ලෝක දෙකෙහිම හොඳම දේ අවශ්‍ය නම්, ඔබට දැන් වාසනාව නැත.


17

Vim නිබන්ධනය කරමින් මිනිත්තු 30 ක් වියදම් කරන්න (ටර්මිනලයේ vim වෙනුවට vimtutor ධාවනය කරන්න). ඔබ මූලික චලනයන් සහ සමහර යතුරු එබීම් ඉගෙන ගනු ඇත, මෙය ඔබ කලින් භාවිතා කළ පෙළ සංස්කාරකය මෙන් අවම වශයෙන් vim සමඟ produc ලදායී වනු ඇත. ඊට පස්සේ, හොඳයි, ජිම් ඩෙනිස්ගේ පිළිතුර නැවත කියවන්න :)


1
OP කියවීමේදී මා සිතූ පළමු දෙය මෙයයි. පෝස්ටරය කිසි විටෙකත් මෙය ක්‍රියාත්මක කර නැති බව පැහැදිලිය. මීට වසර දෙකකට පෙර පළමු වරට ඉගෙනීමේ දී මම එය හරහා දිව ගිය අතර, එය මා භාවිතා කළ වෙනත් සංස්කාරකවරුන්ට වඩා Vim හි ඇති විශිෂ්ටත්වය මගේ මනසෙහි තහවුරු විය (ප්‍රධාන කොම්බෝ මැක් මත භාවිතා කිරීම කරදරකාරී බැවින් මට, ඉමාක්ස් ද ඇතුළුව) .
dash-tom-bang

16

සමකාලීන සංස්කාරකවරයකුට වඩා ඔබ වඩාත් tive ලදායී වන Vim භාවිතා කරන ආකාරය කුමක්ද?

ඉතා සුළු යතුරු එබීම් (බොහෝ විට මැක්‍රෝස් භාවිතා කරමින් ) සමඟ සංකීර්ණ, පුනරාවර්තන සංස්කරණ ක්‍රියාත්මක කිරීමට හැකිවීම . විම්ගේ බලය දැක බලා ගැනීමට විම්ගොල්ෆ් දෙස බලන්න !

වසර දහයකට ආසන්න දෛනික භාවිතයෙන් පසු, වෙනත් සංස්කාරකයක් භාවිතා කිරීම ගැන සිතීම දුෂ්කර ය.


16

\cනඩුව නොසලකා හැරීමට සෙවුමක ඕනෑම තැනක භාවිතා කරන්න (ඔබගේ නොසලකා හැරීම හෝ ස්මාර්ට්කේස් සැකසුම් අභිබවා යාම). උදා: /\cfooහෝ /foo\cගැලපෙන්නේ foo, Foo, fOO, FOO, ආදිය

\Cසිද්ධි ගැලපීම බල කිරීම සඳහා සෙවුමක ඕනෑම තැනක භාවිතා කරන්න . උදා /\Cfooහෝ /foo\Cගැලපෙන්නේ foo ට පමණි.


16

කිසිවෙකු tචලනය ගැන සඳහන් නොකිරීම ගැන මම පුදුමයට පත් වීමි. මම නිතරම පරාමිති ලැයිස්තු සමඟ dt,හෝ භාවිතා කරමිyt,


2
හෝ dfx, dFx, dtx, ytx, ආදිය x යනු වර්‍ණයකි, +1
hhh

ඔව්! Ct අමතක කරන්න එපා (වෙනස් කරන්න).
markle976

16

අමුතු කිසිවෙකු සඳහන් නොකළ ctags. "උත්කෘෂ්ට ctags" බාගත කර ඔබගේ සෙවුම් මාවතේ දැනටමත් ඔබ සතුව ඇති කපටි පූර්ව ස්ථාපනය කළ අනුවාදයට වඩා ඉදිරියෙන් තබන්න. ඔබ වැඩ කරන ඕනෑම දෙයක මූලයට සීඩී; උදාහරණයක් ලෙස ඇන්ඩ්‍රොයිඩ් කර්නල් බෙදා හැරීම. "Ctags -R" ටයිප් කරන්න. "ටැග්ස්" නම් ගොනුවක එම ඩිරයට යටින් ඕනෑම තැනක ප්‍රභව ලිපිගොනු දර්ශකයක් තැනීමට. මෙහි සියලුම ටැග් අඩංගු වේ, භාෂාව නම් කරන්න හෝ කොතැනකවත්, එක් ගොනුවක, එබැවින් හරස් භාෂා වැඩ පහසුය.

ඉන්පසු එම ෆෝල්ඩරයේ vim විවෘත කර කියවන්න: සමහර විධාන සඳහා ctags ට උදව් කරන්න. මම නිතර භාවිතා කරන කිහිපයක්:

  • ක්‍රම නිර්වචනය වෙත යාමට කර්සරය ක්‍රම ඇමතුමකට දමා CTRL-] ටයිප් කරන්න.

  • නම අර්ථ දැක්වීමට යාමට ටයිප් කරන්න: ta නම.


14

ස්වයංක්‍රීය ඉන්ඩෙන්ටේෂන්:

gg(ලේඛනයේ ආරම්භයට යන්න)
=(ඉන්ඩෙන්ට් වේලාව!)
shift-g(ලේඛනයේ අවසානයට යන්න)

ඔබේ .vimrcගොනුවේ ' ගොනු ටයිප් ප්ලගීන ඉන්ඩෙන්ට්' අවශ්‍ය වන අතර බොහෝ විට සුදුසු 'මාරුව පළල' සහ 'විස්තාරණ' සැකසුම් අවශ්‍ය වේ.


4
නැතහොත් ආරම්භයේ සිටම vi හි ඇති ": set ai" (ස්වයංක්‍රීය-ඉන්ඩෙන්ට්) පහසුකම භාවිතා කරන්න.
xcramps

14

කෙටිමං මාර්ග ගැන ඔබ විමසුවා, නමුත් මම හිතන්නේ ඔබේ ඇත්ත ප්‍රශ්නය නම්: එය වටිනවාද? මෙම stackoverflow ප්‍රශ්නයට පිළිතුර -> "ඔව්"

ඔබ කරුණු දෙකක් දැක ඇති. Vim බලවත් වන අතර vim ඉගෙන ගැනීමට අපහසුය. එහි බලය බොහෝමයක් පවතින්නේ එහි විස්තාරණතාව සහ නිමක් නැති විධාන සංයෝජනය තුළ ය. අධෛර්යයට පත් නොවන්න. සෙමින් යන්න. එක් විධානයක්, වරකට එක් ප්ලගිනයක්. එය ඉක්මවා නොයන්න.

ඔබ කළ සියලු ආයෝජනය දහස් ගුණයකින් ආපසු ගෙවනු ඇත. ඔබ මැරීමට පැය ගණනාවකට පෙර පෙළ සංස්කාරකයක් තුළ සිටිනු ඇත. Vim ඔබේ සහකාරිය වනු ඇත.


13

බෆර කිහිපයක්, සහ විශේෂයෙන් ගොනු දෙකක් සමඟ සංසන්දනය කිරීම සඳහා වේගයෙන් පැනීම :bpසහ :bn(නිසි ලෙස Shift+ pහෝ Shift+ වෙත නැවත සකස් කිරීම n)

vimdiff මාදිලිය (වෙනස්කම් පෙන්වීමට වර්ණ සහිතව සිරස් බෆර දෙකකට බෙදේ)

Ctrl+ සමඟ ප්‍රදේශ පිටපතv

අවසාන වශයෙන්, හඳුනාගැනීම් පටිත්ත සම්පූර්ණ කිරීම ("mosh_tab_or_complete" සඳහා සොයන්න). එය ජීවිත වෙනස් කරන්නෙකි.


12

ඉහළ පෝස්ටරය සමඟ එකඟ විය - the : r! විධානය ඉතා ප්‍රයෝජනවත් වේ.

බොහෝ විට මම එය "අලවන්න" භාවිතා කරමි:

:r!cat
**Ctrl-V to paste from the OS clipboard**
^D

මේ ආකාරයෙන් මට සමාව දිය යුතු නැත :set paste.


3
පෙරනිමියෙන් පද්ධති ක්ලිප් පුවරුව භාවිතා කිරීම clipboardසඳහා unnamed( set clipboard=unnamedඔබේ .vimrc හි) විකල්පය සැකසීම වඩා හොඳය . හෝ ඔබට තවමත් පද්ධති ක්ලිප්බෝඩ් නම් නොකළ ලේඛනයෙන් වෙන් කිරීමට අවශ්‍ය නම්, සුදුසු ලෙස නම් කරන ලද ක්ලිප්බෝඩ් ලේඛනය භාවිතා කරන්න : "*p.
ආර්. මාටින්හෝ ෆර්නැන්ඩස්

2
ඒකට කැමති! වෙබයෙන් කේත උදාහරණ ඇලවීමෙන් කෝපයට පත් වූ පසු මට දක්ෂතා දැනෙන්නට පටන් ගෙන තිබුණි. මම එම ස්ථානයේදීම සිහින මැවූ අණ එයයි. මෙය මා විසින් මුළුමනින්ම ඇල්ලූ අවස්ථාවයි.
kevpie

ඔබ මැක්, කමාන්ඩ් + සී සහ කමාන්ඩ් + වී මත සංවර්ධනය කර පද්ධති ක්ලිප් පුවරුව භාවිතයෙන් පිටපත් කර අලවන්න, නැවත සකස් කිරීමක් අවශ්‍ය නොවේ.
බෙන් මොර්දෙකයි

GVIm සමඟ පමණි… කොන්සෝලයේ සිට ස්වයංක්‍රීයව :set pasteසක්‍රීය කර ඇත්නම් එය නොමැතිව ඇලවීම එතරම් සාර්ථක නොවේ.
ඩේවිඩ් වොල්වර්
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.