vim
Tips en trucs om de productiviteit te verhogen
Zoeken…
Syntaxis
- : relatienummer instellen
- : nummer instellen
- : set nonumber /: set nonu
- : pwd
Opmerkingen
Dit automatisch herladen gebeurt alleen als u uw vimrc
in een versie volledige versie van vim die autocmd
ondersteunt.
Snelle "wegwerp" macro's
Voeg dit toe aan je vimrc:
nnoremap Q @q
Gebruik qq
om te beginnen met het opnemen van de 'wegwerp'-macro. Druk op q
om de opname te beëindigen (in de normale modus voor beide).
Gebruik Q
om de opgenomen macro uit te voeren.
Dit is handig voor macro's die u meerdere keren achter elkaar moet herhalen, maar die u daarna waarschijnlijk niet meer zult gebruiken.
De functie voor padaanvulling in Vim gebruiken
Dit is heel gebruikelijk, je onthoudt een pad naar een bestand of map, je opent Vim en probeert te schrijven wat je zojuist hebt onthouden, maar je bent niet 100% zeker dat het correct is, dus je sluit de editor en begint opnieuw.
Wanneer u de functie voor /home/ubuntu/my_folder/my_file
wilt, en u een bestand /home/ubuntu/my_folder/my_file
en u een ander bestand bewerkt dat verwijst naar het pad van de vorige:
Ga naar de invoegmodus: voer in of doe het zoals je wilt. Schrijf vervolgens /h
. Wanneer de cursor onder h
, drukt h
op Ctrl x en vervolgens op Ctrl f zodat de editor dit voltooit naar /home/
omdat het patroon /h
uniek is
Stel nu dat je twee mappen in /home/ubuntu/
genaamd my_folder_1
my_folder_2
en je wilt het pad /home/ubuntu/my_folder_2
zoals gewoonlijk:
Activeer de invoegmodus
schrijf /h
en druk op Ctrl x en vervolgens op Ctrl f . Nu heb je /home/
Next voeg je toe na / home / en druk op Ctrl x en vervolgens op Ctrl f . Nu heb je /home/ubuntu/
omdat dat pad uniek is. Schrijf nu my
after /home/ubuntu/
en druk op Ctrl x en vervolgens op Ctrl f . De editor voltooit uw woord tot my_folder_
en u ziet de mapstructuur, dus gebruik de pijltoetsen om de gewenste te kiezen.
Schakel relatieve regelnummers in
Als u enkele regels tekst wilt verwijderen als u het exacte aantal te verwijderen regels niet weet, probeert u 10dd
, 5dd
, 3dd
totdat u alle regels hebt verwijderd.
Relatieve regelnummers lossen dit probleem op, stel dat we een bestand hebben met:
sometimes, you see a block of
text. You want to remove
it but you
cannot directly get the
exact number of
lines to delete
so you try
10d , 5d
3d until
you
remove all the block.
Ga naar de NORMALE modus: Esc
Voer nu uit :set relativenumber
. Eenmaal gedaan zal het bestand worden weergegeven als:
3 sometimes, you see a block of 2 text. You want to remove 1 it but you 0 cannot directly get the 1 exact number of 2 lines to delete 3 so you try 4 10d , 5d 5 3d until 6 you 7 remove all the block.
waarbij 0
het regelnummer is voor de huidige regel en het ook het reële regelnummer voor het relatieve nummer weergeeft, dus nu hoef je niet het aantal regels van de huidige regel te schatten om ze te knippen of te verwijderen of erger, tel ze één bij een.
U kunt nu uw gebruikelijke opdracht zoals 6dd
en u bent zeker van het aantal regels.
U kunt ook de korte vorm van dezelfde opdracht gebruiken :set rnu
in om relatieve getallen in te schakelen en :set nornu
in om hetzelfde uit te schakelen.
Als u ook :set number
of hebt :set number
al ingeschakeld, krijgt u het regelnummer van de regel waarin de cursor staat.
3 sometimes, you see a block of 2 text. You want to remove 1 it but you 4 cannot directly get the 1 exact number of 2 lines to delete 3 so you try 4 10d , 5d 5 3d until 6 you 7 remove all the block.
Regelnummers bekijken
Voer regelnummers in vanuit Standaardweergave
:set number
Regelnummers verbergen
:set nonumber
Er is ook een snelkoppeling voor hierboven. nu
is hetzelfde als number
.
:set nonu
Om regelnummers te verbergen, kunnen we ook gebruiken
:set nu!
Toewijzingen voor het verlaten van de invoegmodus
Veel Vim-gebruikers vinden de Esc te moeilijk om te bereiken en vinden uiteindelijk een andere kaart die gemakkelijk te bereiken is vanaf de startrij. Merk op dat Ctrl - [ gelijkwaardig is aan Esc op een Engels toetsenbord en veel gemakkelijker te bereiken is.
j k
inoremap jk <ESC>
Deze is echt gemakkelijk te activeren; sla je eerste twee vingers tegelijkertijd op de thuisrij. Het is ook moeilijk om per ongeluk te activeren omdat "jk" nooit in een Engels woord voorkomt en als je in de normale modus bent, doet het niets. Als u niet teveel "blackjack" typt, kunt u overwegen ook inoremap kj <ESC>
toe te voegen, zodat u zich geen zorgen hoeft te maken over de timing van de twee sleutels.
Caps Lock
Linux
In Linux kunt u xmodmap
gebruiken om Caps Lock hetzelfde te laten doen als Esc . Zet dit in een bestand:
!! No clear Lock
clear lock
!! make caps lock an escape key
keycode 0x42 = Escape
Voer vervolgens het xmodmap file
. Hiermee wordt Caps Lock opnieuw toegewezen aan Esc .
ramen
In Windows kunt u gebruik maken SharpKey of AutoHotkey .
MacOS
Als u macOS 10.12.1 of hoger hebt, kunt u Caps Lock opnieuw toewijzen aan Escape met behulp van Systeemvoorkeuren. Selecteer Toetsenbord, ga naar het tabblad Toetsenbord en klik op Modificatietoetsen.
Hoe u de map en / of het pad weet van het bestand dat u bewerkt
Om het pad te weten van de map waarin uw bestand zich bevindt, kunt u het volgende gebruiken:
Esc om de opdrachtmodus te openen
:pwd
Hiermee wordt het pad naar de map onder aan de editor als volgt afgedrukt
I'm a ninja
~
~
~
~
~
/home/ubuntu/myfolder 1,5 All
Als u nu de bestandsnaam wilt weten die u bewerkt ten opzichte van de vim-werkmap, kunt u het volgende gebruiken:
Esc om de opdrachtmodus CTRL G te openen
I'm a ninja
~
~
~
~
~
"myfile"[Modified][New file] 1 line --100%-- 1,5 All
Gebruik ten slotte het absolute pad naar het bestand dat u bewerkt
Esc om de opdrachtmodus te openen,
1 en vervolgens CTRL G
I'm a ninja
~
~
~
~
~
"~/myfolder/myfile"[Modified][New file] 1 line --100%-- 1,5 All
Zoeken binnen een functieblok
Om te zoeken naar tekst foo
binnen een {}
blok rond de cursor gebruikt u de volgende opdracht ( <ESC>
- escape-toets, <CR>
- enter-toets):
vi{<ESC>/\%Vfoo<CR>
nu kun je tussen de wedstrijden in het blok springen door op n
en p
drukken. Als u de hlsearch
optie hebt ingeschakeld, worden alle overeenkomsten gemarkeerd. \%V
is een speciaal onderdeel van het zoekpatroon, dat vim vertelt om alleen in het visueel geselecteerde gebied te zoeken. U kunt ook een afbeelding maken zoals deze:
:vnoremap g/ <ESC>/\%V
Hierna wordt het bovenstaande commando ingekort tot het volgende:
vi{g/foo<CR>
Een andere handige truc is om alle lijnen met het patroon af te drukken:
vi{
:'<,'>g/foo/#
Het bereik '<,'>
wordt automatisch ingevoegd.
Zie :help range
en :help :g
.
Gevonden regel kopiëren, verplaatsen of verwijderen
Veel gebruikers bevinden zich in een situatie waarin ze gewoon snel een lijn willen kopiëren, verplaatsen of verwijderen en terugkeren naar waar ze waren.
Als u een regel met het woord lot
onder de huidige regel wilt verplaatsen, typt u meestal iets als:
/lot<Esc>dd<C-o>p
Maar om de productiviteit te verhogen, kunt u deze snelkoppeling in deze gevallen gebruiken:
" It's recommended to turn on incremental search when doing so
set incsearch
" copy the found line
cnoremap $t <CR>:t''<CR>
" move the found line
cnoremap $m <CR>:m''<CR>
" delete the found line
cnoremap $d <CR>:d<CR>``
Dus een zoekopdracht als deze:
/lot$m
verplaatst de regel die lot
bevat onder de regel waarop uw cursor stond toen u de zoekopdracht startte.
Schrijf een bestand als u vergeet `sudo` voordat u vim start
Met deze opdracht wordt het geopende bestand met sudo-rechten opgeslagen
:w !sudo tee % >/dev/null
Je kunt ook w!!
om een bestand als root uit te schrijven
:cnoremap w!! w !sudo tee % >/dev/null
Laad vimrc automatisch opnieuw bij opslaan
Om vimrc
automatisch opnieuw te vimrc
bij het opslaan, voeg je het volgende toe aan je vimrc
:
if has('autocmd') " ignore this section if your vim does not support autocommands
augroup reload_vimrc
autocmd!
autocmd! BufWritePost $MYVIMRC,$MYGVIMRC nested source %
augroup END
endif
en typ vervolgens voor de laatste keer:
:so $MYVIMRC
De volgende keer dat u uw vimrc
, wordt deze automatisch opnieuw geladen.
nested
is handig als u vim-airline gebruikt. Het laden van luchtvaartmaatschappijen activeert een aantal autocommando's, maar aangezien u bezig bent met het uitvoeren van een autocommand worden ze overgeslagen. nested
maakt het mogelijk om geneste autocommando's te activeren en laat luchtvaartmaatschappij toe om correct te laden.
Opdrachtregel voltooid
stel het wildmenu
in om voltooiingssuggesties voor de opdrachtregel in te schakelen.
Voer het volgende uit
set wildmenu
set wildmode=list:longest,full
Nu als je zegt :color
tab,
Je zult krijgen
256-jungle Benokai BlackSea C64 CandyPaper Chasing_Logic ChocolateLiquor :color 0x7A69_dark