In deze uitgebreide handleiding zal ik uitleggen hoe je de sleutels in Vim in kaart kunt brengen om de bewerkingen te automatiseren. Van het maken van een eenvoudige sleutelkaart tot geavanceerde sleutelkaarten, samen met de processen om ze permanent te maken en te verwijderen.
- Syntaxis
- Vim Speciale argumenten
- Een basistoetsenbord maken
- Lijst van de toetsenbordkaarten
- Toetskaarten permanent maken
- Recursie vermijden
- Modusspecifieke keymaps maken
- Muisgebeurtenissen in kaart brengen
- Hoe in kaart te brengen met Leader Key in Vim
- Hoe een Vimscript-functie in kaart te brengen
- Hoe externe opdrachten in Vim in kaart te brengen
- Hoe een keymap in Vim te verwijderen
- Cheatsheet voor Vim-sleuteltoewijzing
- Conclusie
Syntaxis
Om de sleutel in Vim in kaart te brengen, wordt de volgende syntaxis gebruikt:
In de bovenstaande syntaxis:
|
nmap, imap, vmap, xmap, cmap of omap | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
*In de bovenstaande syntaxis is de sectie Vim Speciale argumentenVim Speciale Argumenten zijn tags die worden gebruikt om extra functionaliteit aan de toetsenbordkaarten te geven. Deze argumenten verschijnen na het commando :map en vóór de {rhs} en {lhs}. Als u bijvoorbeeld een kaartbuffer specifiek wilt maken, gebruikt u het speciale argument op de volgende manier: :kaart < buffer > < C-een > ggVG
Speciale sleutelnotaties van Vim worden vermeld in de volgende afbeelding.
Als u bijvoorbeeld de spatietoets wilt gebruiken bij het toewijzen van toetsen, wordt de notatie Een basistoetsenbord maken in VimLaten we Vim-sleuteltoewijzing begrijpen met een eenvoudig voorbeeld. Ik wil de opdracht Selecteer alle lijnen toewijzen ( ggVG ) naar ctrl+a sleutels. Om de ctrl+a-toetsen in kaart te brengen, zal ik de volgende opdracht in Vim uitvoeren. :kaart < C-een > ggVG Hier, Op dezelfde manier kunt u voor het toewijzen van regelnummers de functionaliteit schakelen met de F1 sleutelgebruik: :kaart < F1 > : nummer instellen !Als u nu op de F1-toets drukt, wordt het lijnnummer ingeschakeld, en als u er nogmaals op drukt, wordt het uitgeschakeld. Houd er rekening mee dat deze methode alleen de sleutels in de huidige buffer in kaart brengt en wordt verwijderd bij het sluiten van de buffer. Lijst van de toetsenbordkaartenGebruik de opdracht :map om alle belangrijke toewijzingen van de normale, visuele en operator-wachtende modi weer te geven. :kaartOm de sleuteltoewijzing weer te geven invoegen En opdrachtregel modi, gebruik de :map! Commando. :kaart !Om de sleuteltoewijzingen van een specifieke modus weer te geven, typt u gewoon de beginletter van de modus vóór het kaarttrefwoord.
Gebruik bovendien om alle kaarten weer te geven, inclusief de plug-in kaarten met paden : uitgebreide kaart commando. : uitgebreide kaart Voor een specifieke sleutel vermeldt u eenvoudigweg de sleutel in het commando ( :verbose kaart Toetskaarten permanent makenDe toetsenbordkaarten die in de bovenstaande sectie worden genoemd, wijzen alleen de sleutels in de huidige buffer toe. Om Vim-sleuteltoewijzingen permanent te maken, moeten de kaarten in het vimrc-bestand worden geplaatst.
Houd er rekening mee dat tijdens het plaatsen van de toetsenbordindeling in het vimrc bestand, plaats geen dubbele punt (:) vóór de kaart commando. Na het plaatsen van de toetsenbordkaart in het vimrc bestand, sla het op en sluit het af met de opdracht :wq of met de shift+zz-toetsen. De toetsenbordkaarten die in het vimrc bestand zal globaal zijn en kan in alle Vim-sessies worden gebruikt. Bepaalde toetsenbordindelingen kunnen echter tijdelijk worden uitgeschakeld als ze het werk in de huidige sessie beïnvloeden, zie het gedeelte Een toetsenbordindeling in Vim verwijderen hieronder. De vimrc is het instellingenbestand van Vim dat verschillende opdrachten en instellingen bevat. Het is aanwezig in de /usr/share/vim/ map op macOS en /etc/vim op Linux. Het is belangrijk op te merken dat de vimrc bestanden in de genoemde mappen zijn systeemspecifieke bestanden. U kunt deze bestanden ook bewerken voor sleuteltoewijzing, maar ik raad u aan een gebruikersspecifiek bestand te maken vimrc bestand in de homedirectory. Recursie vermijdenVoordat we verder gaan, is het belangrijk om meer te weten te komen over recursie in Vim-sleuteltoewijzing. De nadelen ervan en hoe u deze kunt voorkomen. Het kan worden begrepen door het gebruik van een voorbeeld. :kaart dd 3jddIn het bovenstaande voorbeeld heb ik de dd -toetsen om 3 regels omlaag te gaan en de regel onder de cursor te verwijderen. Als ik nu op de dd , zal het proberen de kaart uit te voeren 3jdd . Vim zal de interpretatie ervan geven dd commando als een kaart en voer de kaart herhaaldelijk uit, zoals weergegeven in de volgende afbeelding.
Opmerking : Recursie kan de Vim-editor bevriezen. Om het te deblokkeren, drukt u op ctrl+c sleutels. Om recursie te voorkomen, vervangt u de kaart trefwoord met noremap , waar ' noch ' middelen niet-recursief . Ik zal de vervangen kaart trefwoord met noremap om de recursie in de bovenstaande keymap op te lossen. :noremap dd 3jddIk zal het gebruik aanbevelen noremap in plaats van kaart om te voorkomen dat per ongeluk recursieve mapping wordt gemaakt. Modusspecifieke keymaps makenVim heeft key mapping zo veelzijdig gemaakt dat zelfs een keymap van een specifieke modus vrij eenvoudig kan worden gemaakt. Als u bijvoorbeeld een toetsenbordindeling voor de invoegmodus hebt gemaakt met behulp van een F1 sleutel, dan kunt u hetzelfde in kaart brengen F1 toets een andere modus in voor een geheel nieuwe handeling. In het volgende voorbeeld heb ik de F1 toets om 3 regels in de te verwijderen normaal modus en ruk 3 lijnen in de invoegen modus. :nmap < F1 > 3dd:imap < F1 > < C-t > De eerste kaart verwijdert drie regels in de normale modus wanneer u op de F1-toets drukt, terwijl de tweede kaart één inspringing in de huidige regel toevoegt wanneer u in de invoegmodus met dezelfde toets drukt. Laten we nu de mapping in elke modus begrijpen. Normale modustoewijzingGebruik alleen om een kaart in de normale modus toe te passen Nmap trefwoord. Als u bijvoorbeeld alle regels in een bestand wilt kopiëren met behulp van ctrl+c toetsen, zal ik het volgende commando gebruiken. :nmap < C-c > ggVGyZoals eerder besproken is het een best practice om een niet-recursieve methode te gebruiken om een sleutel in kaart te brengen. Daarom zal ik de Nmap met noremap trefwoord. :nremap < C-c > ggVGyPlaats het zonder dubbele punt (:) in de vimrc bestand om er een permanente toetsenbordindeling van te maken. ik zal gebruiken noremap in plaats van de kaart in het volgende voorbeeld. InvoegmodustoewijzingOm sleutels voor de invoegmodus toe te wijzen, gebruikt u gewoon i in plaats van N . In de invoegmodus kunt u bijvoorbeeld ctrl+p En ctrl+n toetsen worden gebruikt om het woord automatisch aan te vullen op basis van respectievelijk achterwaartse en voorwaartse overeenkomst. Om de ctrl+p toetsen met de Tab-toets, zal ik de volgende opdracht gebruiken. :inoremap < Tab > < C-p > Belangrijker nog: als je in kaart wilt brengen operator in afwachtingmodus commando's in de invoegmodus , dan moet je de Als ik nu op de ctrl+x toetsen, zal het de 3ddi commando in plaats van het uit te voeren.
Om het op te lossen, zal ik de Nu zal de opdracht de keep me in the insert mode uitvoeren. Bij veel mini-laptops ontbreekt dit Esc -toets, wat belangrijk is om de huidige modus te verlaten. Dus om de Esc toets om de invoegmodus te verlaten, kan toetstoewijzing worden gebruikt. In het volgende voorbeeld gebruik ik ex toetsen om naar de normale modus te gaan. :inoremap ex < Esc >Wanneer u snel op de ex Met de toetsen wordt de invoegmodus verlaten en komt dus in de normale modus terecht. Visuele modustoewijzingDe visuele modus is een zeer belangrijke modus voor het selecteren van tekst in de Vim-editor. Naast de basisselectie heeft de visuele modus nog andere modi, zoals visuele lijn- en visuele blokmodi. In de visuele modus, tilde (~) wordt gebruikt om de zaak te schakelen. Om tilde (~) te gebruiken, moet je op de twee toetsen drukken (verschuiving+~) . In het volgende voorbeeld breng ik de c-toets in kaart visuele modus om een woord onder de cursor te selecteren en de hoofdletter te wijzigen. :vnoremap c iw~Druk nu op v om de visuele modus te openen en druk op de c-toets om het woord onder de cursor te schakelen, zoals weergegeven in de volgende GIF.
Toewijzing in opdrachtregelmodusVeel essentiële Vim-opdrachten werken alleen in de opdrachtregelmodus. Bijvoorbeeld om het bestand op te slaan :In commando wordt op dezelfde manier gebruikt om op te slaan en af te sluiten :wq commando wordt gebruikt. Alle tabbladen en splitsingsbewerkingen worden ook uitgevoerd in de opdrachtregelmodus. Als u bijvoorbeeld een nieuw tabblad wilt maken, gebruikt u de : ondergeschikt commando wordt gebruikt. Om snel een tabblad te maken, ctrl+t sleutels zijn voldoende. :cnoremap < C-t > onderwerp < CR >Druk nu op de dubbele punt (:) om de opdrachtregelmodus te openen en vervolgens ctrl+t om een nieuw tabblad te openen; het is veel sneller dan het hele bericht typen onderwerp commando en Opbrengst sleutel.
Aangepaste Vim-opdrachten maken Ga nu naar de opdrachtmodus en voer het :Mijncmd commando. Operator in afwachting van modustoewijzingDe modus Operator in afwachting is een modus waarin Vim wacht op het bewegingscommando nadat de operatortoets is ingedrukt. De gebruikelijke operatoren zijn y, d en c. Als u bijvoorbeeld de huidige regel en de drie volgende regels wilt verwijderen, gebruikt u de operator d with 3j beweging (d3j). U kunt deze toetsen niet tegelijkertijd indrukken om de gewenste handeling te bereiken. De modus wordt doorgaans gebruikt om de bewegingen in kaart te brengen. Laten we een beweging in kaart brengen die de huidige lijn en de drie daaropvolgende lijnen selecteert. :onoremap < F2 > 3jOm nu de huidige regel en de drie daaropvolgende regels te verwijderen, gebruikt u de deF2 toetsen, op dezelfde manier, de D operator kan ook worden toegepast. Een ander belangrijk ding om in gedachten te houden is of u een telling toevoegt aan de bovengenoemde in kaart gebrachte beweging, laten we zeggen 2 Muisgebeurtenissen in kaart brengenHoewel Vim een volledig aanpasbare toetsenbordgerichte teksteditor is, maakt de beschikbaarheid van muisfunctionaliteit het nog beter. Naast normale toetsenbordtoetsen kunnen ook alle muisgebeurtenissen in Vim in kaart worden gebracht. Als u bijvoorbeeld de rechterdubbelklik en de linkerdubbelklik wilt toewijzen om de markeringen respectievelijk vooruit en achteruit te laten springen, gebruikt u de volgende toewijzing. :noremap < 2 -Rechter muis > ] `:noremap < 2 -Linker muis > [ ` Andere muisgebeurtenissen die in kaart kunnen worden gebracht, worden in de volgende tabel gegeven.
Hoe in kaart te brengen met de Leader-sleutel in VimVim-toewijzing is onvolledig zonder de leidersleutel. De leidersleutel is de standaardsleutel die kan worden gebruikt om sleutels toe te wijzen, zelfs als ze zijn toegewezen om andere taken uit te voeren. Als u bijvoorbeeld de D om alle regels te verwijderen, dan kunnen we dezelfde sleutel toewijzen om slechts 5 regels te verwijderen met behulp van de leader-toets. Voor degenen die niet bekend zijn met de Vim-leidersleutel. Het is een sleutel die wordt voorafgegaan door een andere sleutel of een set sleutels voor het toewijzen van opdrachten of bewerkingen. De standaard leader-sleutel van Vim is een backslash (\), maar deze is aanpasbaar. Bijvoorbeeld de dd commando wordt gebruikt om de regel onder de cursor te verwijderen. Als u de dd commando om alle regels in de bestanden te verwijderen, dan kunt u de leader-toets gebruiken. :noremap < Leider > dd ggVGdWanneer u nu op de \dd toets, worden alle regels in het bestand verwijderd. U kunt de Vim-leidersleutel toewijzen als de besturingstoets op Windows of de opdrachttoets in macOS. Hoe een Vimscript-functie in kaart te brengenDe Vim-editor beperkt zich niet tot de opdrachten of bewerkingen. Er bestaat een hele programmeertaal rond Vim om aangepaste functionaliteit te creëren, genaamd Vimscript. U kunt eenvoudig een script of functie maken en deze aan een sleutel toewijzen. Laten we bijvoorbeeld een functie maken die instellingen zoals regelnummer, muisfunctionaliteit en tekstbreedte mogelijk maakt. functie Mijn instellingen ( )set nummer set muis = een set tekstbreedte = 80 eindfunctie Plaats deze functie in het vimrc-bestand. Laten we deze functie in kaart brengen met de leider en de s-toetsen. ik zal gebruiken :noremap < Leider > s: bel MijnInstellingen ( ) < CR >Wanneer u nu op de \S -toetsen, wordt de functie aangeroepen en wordt alle functionaliteit binnen de functie uitgevoerd. Opmerking : De eerste letter van de functienaam moet altijd een hoofdletter zijn bij het maken van een aangepaste functie in Vim. Hoe externe opdrachten in Vim in kaart te brengenDe externe commando's kunnen ook in Vim in kaart worden gebracht. Externe opdrachten verwijzen naar Linux- of Unix-opdrachten. Als u bijvoorbeeld het externe in kaart wilt brengen soort commando om alle regels in de huidige buffer te sorteren naar de F1 toets, gebruik dan het volgende commando. :noremap < F1 > : %! soort < CR >Op dezelfde manier kunt u, als u een scriptbestand schrijft en dit uitvoerbaar maakt zonder de Vim-sessie te verlaten, de chmod commando intern. Om het huidige bestand bijvoorbeeld uitvoerbaar te maken, kunt u de opdracht uitvoeren :!chmod +x % in Vim. Als u deze taak regelmatig uitvoert, wijst u er eenvoudigweg een sleutel aan toe. :noremap < F1 > : ! chmod +x %In Vim kan elk extern commando worden gebruikt met een uitroepteken (!). Hoe een keymap in Vim te verwijderenOm keymaps in Vim te verwijderen, identificeert u eerst waar deze is gedefinieerd. Zoals eerder besproken kunnen keymaps bufferlokaal en permanent zijn. Als de keymap permanent is en in het vimrc-bestand wordt geplaatst, zal het simpelweg verwijderen ervan uit het bestand de toewijzing van de sleutels ongedaan maken. Als de mapping in de huidige buffer wordt uitgevoerd, kunnen ze worden verwijderd met behulp van de : uit kaart brengen of :verwijder de kaart! opdrachten.
Om bijvoorbeeld de
Om alle kaarten in de huidige buffer te verwijderen, gebruikt u de :kaartduidelijk commando. :kaartduidelijkMet de bovenstaande opdracht worden alle toetsenbordkaarten van de normale, visuele, geselecteerde of operator-wachtende modus gewist. Om alle toetsenbordindelingen van de invoeg- en opdrachtregelmodi te wissen, gebruikt u: :kaartduidelijk ! Merk op dat de standaard Vim-opdrachten niet duidelijk kunnen zijn, maar dat ze kunnen worden uitgeschakeld met behulp van de : uit kaart brengen commando met De dd zal niet langer functioneel zijn in de huidige buffer. Met deze methode kan elke toetsenbordindeling voor de huidige sessie worden uitgeschakeld. Cheatsheet voor Vim-sleuteltoewijzingDe volgende afbeelding biedt ter referentie een lijst met alle opdrachten en hun specifieke modi.
ConclusieVim-sleuteltoewijzing is een handige manier om uw taken, veelgebruikte toetsbindingen, opdrachten en andere bewerkingen te automatiseren. Het is een divers onderwerp en in deze handleiding heb ik alle belangrijke aspecten behandeld die verband houden met het in kaart brengen van toetsen in Vim. Van de algemene syntaxis tot het maken van een basistoetsenbord en helemaal tot het in kaart brengen van geavanceerde Vimscript-functies en externe opdrachten. Voor meer informatie over Vim-sleuteltoewijzing gebruikt u de :help sleuteltoewijzing commando in Vim. |