Како мапирати кључеве у Вим-у

Kako Mapirati Kluceve U Vim U



У Виму, мапирање тастера је процес додељивања скупа тастера или команди одређеном кључу за обављање одређеног задатка. На пример, да бисте изабрали све редове у датотеци коју користите ггВГ команду, а за то морате да притиснете четири тастера. Шта је са само једним притиском на тастер? Ово је место где мапирање кључева Вим-а добро долази. Мапирање тастера је начин аутоматизације многих задатака који се често обављају у Виму. И, сигурно сте чули за то; ако радите нешто више од два пута, аутоматизујте то!

У овом свеобухватном водичу, објаснићу како да мапирате кључеве у Виму да бисте аутоматизовали операције. Од креирања основне мапе кључева до напредног мапирања кључева, заједно са процесима њиховог претварања у трајне и њиховог уклањања.

Синтакса

За мапирање кључа у Вим-у користи се следећа синтакса:







<режим>мапа <аргументи> <лхс> <рхс>



У горњој синтакси:



<моде>мапа нмап, имап, вмап, кмап, цмап или омап
<аргументи>* <тихи>, <бафер>, <скрипта>, <посебно>, <израз> и <јединствен>
<лхс> Лева страна садржи кључ или скуп тастера који се мапирају
<рхс> Десна страна садржи скуп тастера или команди које ће извршити тастери са леве стране

У суштини, <лхс> је кључ или скуп кључева који ће извршити команде или операције на <рхс>.





*У горњој синтакси, одељак <аргументи> је опциони.

Вим специјални аргументи

Вим специјални аргументи су ознаке које се користе да дају додатну функционалност мапама тастера. Ови аргументи се појављују после команде :мап, а пре {рхс} и {лхс}.



На пример, да бисте одредили бафер мапе, користите специјални аргумент на следећи начин:

:Мапа < тампон > < Ц-а > ггВГ
<тихо> За сузбијање ехо порука са тастатуре
<буффер> Да би мапа била специфична за бафер (јединствена за тренутни бафер)
<сцрипт> Да означи да је мапа део скрипте или додатка
<посебно> *Користи се за дефинисање специјалних тастера за мапирање помоћу ознаке <> (функцијски тастери, контрола, схифт и други не-алфабетски тастери)
<екпр> Означава да је лева страна мапирања израз и да треба да се процени да би се добила десна страна
<уникуе> Да би мапа била јединствена међу локалним и глобалним мапама
<сада> Да прескочите чекање следећег командног карактера на мапи

Посебне ознаке кључа Вим-а су поменуте на следећој слици.

На пример, ако желите да користите тастер за размак у мапирању тастера, користиће се нотација <Спаце>.

Креирање основне мапе тастера у Вим-у

Хајде да разумемо мапирање тастера Вим са основним примером. Желим да мапирам команду за одабир свих линија ( ггВГ ) до цтрл+а кључеви. Да бих мапирао тастере цтрл+а, покренућу следећу команду у Виму.

:Мапа < Ц-а > ггВГ

овде, <Ц-а> означава цтрл и а кључеви, док ггВГ је команда за одабир свих редова у датотеци. Тхе :Мапа кључна реч је подразумевано за мапирање нормалног режима, међутим, тхе :нмап такође се може експлицитно користити за нормалан режим.

Слично томе, да бисте мапирали број линија пребаците функционалност са Ф1 употреба кључа:

:Мапа < Ф1 > :сет број !

Сада, када притиснете тастер Ф1, број линије ће бити омогућен, а поновним притиском ће бити онемогућен.

Имајте на уму да ће овај метод мапирати само кључеве у тренутном баферу и биће уклоњен након затварања бафера.

Навођење мапа тастера

Да бисте навели сва мапирања тастера нормалног, визуелног и режима чекања на оператера, користите команду :мап.

:Мапа

Да бисте приказали мапирање тастера од уметнути и командна линија режимима, користите :мапу! Цомманд.

:Мапа !

Да бисте навели мапирање тастера за одређени режим, само унесите почетно слово режима пре кључне речи мапе.

:нмап За приказ мапа нормалног режима
:имап За приказ мапа режима уметања
:вмап За приказ визуелних мапа и изаберите режим
:смап За приказ мапа изабраног режима
:кмап За приказ мапа визуелног режима
:цмап За приказ мапа режима командне линије
:омап За приказ мапа режима чекања оператера

Штавише, да бисте навели све мапе укључујући мапе додатака са путањама, користите :вербосе мап команда.

:вербосе мап

За одређени кључ, једноставно наведите кључ у команди ( :вербосе мап <кључ> ).

Остваривање трајних мапа тастера

Мапе тастера поменуте у горњем одељку ће мапирати кључеве само у тренутном баферу. Да би мапирања тастера Вим била трајна, мапе морају бити смештене у вимрц датотеку.

Имајте на уму да док постављате тастатуру у вимрц датотеку, немојте додавати двотачку (:) испред Мапа команда.

Након постављања тастатуре у вимрц датотеку, сачувајте и затворите је помоћу команде :вк или помоћу тастера схифт+зз. Тастери смештени у вимрц датотека ће бити глобална и може се користити у свим Вим сесијама. Међутим, одређене мапе тастера могу привремено бити онемогућене ако утичу на рад у тренутној сесији, погледајте одељак Како уклонити мапу тастера у Вим-у у наставку.

Тхе вимрц је датотека подешавања Вим-а која садржи различите команде и подешавања. Присутно је у /уср/схаре/вим/ директоријум на мацОС-у и /етц/вим на Линук-у. Важно је напоменути да је вимрц датотеке у поменутим директоријумима су датотеке специфичне за систем. Можете уређивати и ове датотеке за мапирање кључева, али бих препоручио креирање специфичних за корисника вимрц датотеку у матичном директоријуму.

Избегавање рекурзије

Пре него што кренемо даље, важно је научити о рекурзији у мапирању тастера Вим. Његови недостаци и како то спречити. Може се схватити коришћењем примера.

:Мапа дд 3јдд

У горњем примеру, мапирао сам дд тастери за померање надоле за 3 реда и брисање линије испод курсора. Сада, када притиснем дд , покушаће да изврши мапу 3јдд . Вим ће тумачити дд командујте као мапу и извршите мапу више пута, као што је приказано на следећој слици.

Белешка : Рекурзија може да замрзне Вим едитор. Да бисте га одмрзнули, притисните цтрл+ц кључеви.

Да бисте избегли рекурзију, замените Мапа кључна реч са норемап , где ' норе ’ значи нерекурзивне . Заменићу Мапа кључна реч са норемап да поправите рекурзију у горњој мапи тастера.

:норемап дд 3јдд

Препоручићу употребу норемап уместо Мапа да би се избегло случајно креирање рекурзивног мапирања.

Креирање мапа тастера специфичних за режим

Вим је направио мапирање тастера тако разноврсним да се чак и мапа тастера одређеног режима може креирати прилично лако. На пример, ако сте направили мапу тастатуре за режим уметања користећи Ф1 кључ, онда можете мапирати исто Ф1 укључите други режим за потпуно нову операцију.

У следећем примеру, мапирао сам Ф1 тастер за брисање 3 реда у нормалан моду и повуците 3 линије у уметнути режим.

:нмап < Ф1 > 3дд
:имап < Ф1 > < Ц-т >

Прва мапа брише три линије у нормалном режиму притиском на тастер Ф1, док друга мапа додаје једно увлачење у текућу линију када је у режиму уметања користећи исти тастер. Сада, хајде да разумемо мапирање у сваком режиму.

Мапирање нормалног режима

Да бисте мапу применили у нормалном режиму, користите само нмап кључна реч. На пример, да бисте копирали све редове у датотеци користећи цтрл+ц тастере, користићу следећу команду.

:нмап < Ц-ц > ггВГи

Као што је раније поменуто, најбоља је пракса користити нерекурзивни метод за мапирање кључа, стога ћу заменити нмап са нноремап кључна реч.

:нноремап < Ц-ц > ггВГи

Ставите га без двотачке (:) у вимрц датотеку да постане трајна тастатура.

Ја ћу користити норемап уместо на Мапа у следећем примеру.

Инсерт Моде Маппинг

Да бисте мапирали тастере за режим уметања, само користите и уместо н . На пример, у режиму уметања, цтрл+п и цтрл+н тастери се користе за аутоматско довршавање речи на основу подударања уназад и унапред. Да мапирате цтрл+п тастере са тастером таб, користићу следећу команду.

:иноремап < Таб > < Ц-п >

Још важније, ако желите да мапирате режим чекања оператера команде у режим уметања , онда треба да убаците <Есц> тастер на десној страни да изађете из режима уметања да бисте извршили те команде. На пример, у следећој мапи тастатуре, желим да избришем 3 реда користећи цтрл+к тастера и поново уђите у режим уметања.

:иноремап < Ц-к > 3дди

Сада, када притиснем цтрл+к кључева, штампаће 3дди наредбу уместо да је изврши.

Да то поправим, убацићу <Есц> пре 3дди команда.

:иноремап < Ц-к > < изаћи > 3дди

Сада, команда ће извршити ме у режиму уметања.

Многим мини лаптопима недостаје изаћи тастер, који је важан за излазак из тренутног режима. Дакле, да мапирате изаћи тастер за излазак из режима уметања, може се користити мапирање тастера. У следећем примеру користим пр тастере за излазак у нормалан режим.

:иноремап ек < изаћи >

Када брзо притиснете пр тастерима из режима уметања ће се изаћи, чиме се улази у нормални режим.

Мапирање визуелног режима

Визуелни режим је веома значајан режим за одабир текста у Вим едитору. Осим основног избора, визуелни режим има и друге различите режиме као што су визуелна линија и визуелни блок режими.

У визуелном режиму, тилда (~) се користи за пребацивање кућишта. Да бисте користили тилду (~), морате притиснути два тастера (Схифт+~) . У следећем примеру мапирам кључ ц визуелни режим да бисте изабрали реч испод курсора и променили њена велика и мала слова.

:вноремап ц ив~

Сада притисните в да бисте ушли у визуелни режим и притисните тастер ц да бисте пребацили реч испод курсора као што је приказано на следећем ГИФ-у.

Мапирање у режиму командне линије

Многе основне команде Вим-а раде само у режиму командне линије. Као на пример, да сачувате датотеку :Ин команда се користи, на сличан начин, за чување и затварање :вк користи се команда. Све картице и операције раздвајања се такође раде у режиму командне линије. На пример, да бисте креирали нову картицу, : подређени користи се команда. Па, да бисте брзо направили картицу, цтрл+т кључеви су довољни.

:цноремап < Ц-т > предмет < ЦР >

Сада притисните двотачку (:) да бисте ушли у режим командне линије, а затим цтрл+т да отворите нову картицу; то је много брже од куцања целог предмет команда и Повратак кључ.

Креирање Вим прилагођених команди
Улазак у командни режим за извршавање мапе чини се мање корисним. Али можете креирати сопствене прилагођене команде у Виму користећи :цомманд опција. Ова функција прилично личи на мапирање тастера Вим. На пример, да бисте креирали брзу команду за постављање броја реда и ширине текста на 80, користите следећу команду.

:цомманд Мицмд :сет нумбер ширина текста = 80

Сада уђите у командни режим и извршите :Мицмд команда.

Мапирање режима на чекању оператера

Режим на чекању оператера је режим у коме Вим чека команду покрета након што се притисне тастер оператера. Уобичајени оператори су и, д и ц. На пример, да бисте избрисали тренутни ред и 3 следећа реда, користићете оператор д са кретање (д3ј). Не можете притиснути ове тастере истовремено, да бисте постигли жељену операцију.

Режим се углавном користи за мапирање кретања. Хајде да мапирамо покрет који ће изабрати тренутну линију и 3 линије које следе.

:оноремап < Ф2 >

Сада, да бисте повукли тренутну линију и 3 линије које следе, користите тхеФ2 кључеви, на исти начин, тхе д може се применити и оператор.

Још једна важна ствар коју треба имати на уму је ако додате број горе поменутом мапираном кретању, рецимо 2<Ф2> , мапа ће то узети као 23ј, а не 6ј. Да би се ово поправило, може се користити регистар израза „=. Горња мапа се може модификовати као @=’3ј’<ЦР> .

:оноремап < Ф2 > @ =’3ј’ < ЦР >

Како мапирати догађаје миша

Иако је Вим потпуно прилагодљив уређивач текста усмерен на тастатуру, доступност функционалности миша га чини још бољим. Осим нормалних тастера на тастатури, сви догађаји миша се такође могу мапирати у Вим-у. На пример, ако желите да мапирате десни дупли клик и леви дупли клик да бисте прескочили ознаке напред и назад, користите следеће мапирање.

:норемап < 2 -Десни миш > ] `
:норемап < 2 -Левим > [ `

Други догађаји миша који се могу мапирати дати су у следећој табели.

<ЛефтМоусе> <ЛефтРелеасе> <ЛефтДраг> <2-ЛефтМоусе> <Кс1Моусе>
<Десни миш> <РигхтРелеасе> <РигхтДраг> <2-Десни миш> <Кс2Моусе>
<МиддлеМоусе> <МиддлеРелеасе> <МиддлеДраг> <3-ЛефтМоусе> <Кс1Релеасе>
<3-Десни миш> <Кс2Релеасе>
<4-ЛефтМоусе> <Кс1Драг>
<4-Десни миш> <Кс2 Драг>

Како да мапирате помоћу Леадер кључа у Виму

Вим мапирање је непотпуно без кључа лидера. Главни кључ је подразумевани кључ који се може користити за мапирање кључева, чак и ако су мапирани за обављање неких других задатака. На пример, ако сте мапирали д тастер за брисање свих линија, онда можемо мапирати исти тастер да избришемо само 5 редова помоћу вођице.

За оне који нису упознати, са кључем лидера Вим-а. То је кључ који има префикс са другим кључем или скупом кључева за мапирање команди или операција. Вим-ов подразумевани водећи кључ је обрнута коса црта (\), али је прилагодљива.

На пример, тхе дд команда се користи за брисање линије испод курсора. Ако желите да мапирате дд команду да избришете све редове у датотекама, онда можете користити главни кључ.

:норемап < Вођа > дд ггВГд

Сада, кад год притиснете \дд тастер, сви редови у датотеци ће бити избрисани. Вим лидер кључ можете приписати као контролни тастер у Виндовс-у или командни тастер у мацОС-у.

Како мапирати Вимсцрипт функцију

Вим едитор није ограничен на команде или операције. Око Вим-а постоји читав програмски језик за креирање прилагођене функционалности која се зове Вимсцрипт. Можете лако креирати скрипту или функцију и мапирати је у кључ. На пример, хајде да направимо функцију која ће омогућити подешавања као што су број линије, функционалност миша и ширина текста.

функција Моја подешавања ( )
комплет број
комплет миш
комплет ширина текста = 80
ендфунцтион

Поставите ову функцију у вимрц датотеку.

Хајде да мапирамо ову функцију помоћу вођице и тастера с. Ја ћу користити

:норемап < Вођа > с :цалл МиСеттингс ( ) < ЦР >

Сада, кад год притиснете тастерима, функција ће бити позвана и свака функционалност унутар функције ће се извршити.

Белешка : Прво слово имена функције увек треба да буде велико док креирате прилагођену функцију у Виму.

Како мапирати спољне команде у Виму

Спољне команде се такође могу мапирати у Вим-у. Спољне команде се односе на Линук или Уник команде. На пример, ако желите да мапирате спољашње врста команда за сортирање свих редова у тренутном баферу у Ф1 тастер, користите следећу команду.

:норемап < Ф1 > : %! врста < ЦР >

На исти начин, ако пишете датотеку скрипте и чините је извршном без напуштања Вим сесије, можете користити цхмод командују интерно. На пример, да бисте тренутну датотеку учинили извршном, можете извршити наредбу :!цхмод +к % у Виму. Ако често обављате овај задатак, једноставно мапирајте кључ на њега.

:норемап < Ф1 > : ! цхмод %

У Виму, било која спољна команда може да се користи са знаком узвика (!).

Како уклонити мапу тастера у Виму

Да бисте уклонили мапе тастера у Виму, прво идентификујте где су дефинисане. Као што је раније речено, мапе тастера могу бити локалне и трајне. Ако је мапа тастера трајна и смештена у вимрц датотеку, једноставно њихово уклањање из датотеке ће уклонити мапу кључева.

Ако се мапирање врши у тренутном баферу, они се могу уклонити помоћу :унмап или :унмап! команде.

  • :унмап да обришете мапе тастатуре нормалног, визуелног, бираног или режима на чекању оператера
  • :унмап! да обришете тастатуре режима уметања и командне линије

На пример, да бисте уклонили <Ф2> кључ, користите :унмап <Ф2> . Штавише, уклањање тастера може бити специфично за режим. Ако желите да уклоните мапу нормалног режима, користите :нунмап <кључ> . Друге команде специфичне за режим за уклањање мапе тастера су наведене у наставку:

:нунмап Да бисте уклонили мапе нормалан режим
:иунмап Да бисте уклонили мапе уметнути режим
:вунмап Да бисте уклонили мапе визуелни и изаберите режим
:сунмап Да бисте уклонили мапе изаберите режим
:кунмап Да бисте уклонили мапе визуелни режим
:цунмап Да бисте уклонили мапе командна линија режим
:оунмап Да бисте уклонили мапе оператер на чекању режим

Да бисте уклонили све мапе у тренутном баферу, користите :мапцлеар команда.

:мапцлеар

Горња команда ће обрисати све мапе тастатуре нормалног, визуелног, бирања или режима на чекању оператера.

Да бисте обрисали све тастатуре режима уметања и командне линије користите:

:мапцлеар !

Имајте на уму да подразумеване Вим команде не могу бити јасне, међутим, то се може онемогућити коришћењем :унмап команда са <Нема> . На пример, ако желите да онемогућите дд функционалност која брише линију испод курсора, користите :унмап дд <Нема>.

:унмап дд < Не >

дд више неће бити функционалан у тренутном баферу. Користећи овај метод, било која тастатура може бити онемогућена за тренутну сесију.

Вим Кеи Маппинг Цхеат Схеет

Следећа слика пружа листу свих команди и њихових специфичних режима за референцу.

Закључак

Вим мапирање тастера је згодан начин да аутоматизујете своје задатке, често коришћено повезивање тастера, команде и друге операције. То је разнолика тема и у овом водичу сам покрио све главне аспекте који се односе на мапирање кључева у Виму. Од опште синтаксе до креирања основне тастатуре и све до мапирања напредних Вимсцрипт функција и екстерних команди. Да бисте сазнали више о мапирању тастера Вим, користите :хелп мапирање тастера команду у Вим.