vim
Tips och tricks för att öka produktiviteten
Sök…
Syntax
- : ställ in relativenummer
- : inställt nummer
- : set nonumber /: set nonu
- : pwd
Anmärkningar
Den här automatiska omlastningen kommer bara att ske om du redigerar din vimrc
i en fullversion av vim som stöder autocmd
.
Snabba "kastade" makron
Lägg till detta till din vimrc:
nnoremap Q @q
Att börja spela in "throwaway" makro, använda qq
. För att avsluta inspelningen träff q
(i normalt läge för båda).
Använd Q
att köra det inspelade makroet.
Det här är användbart för makron som du behöver upprepa många gånger i rad men kommer sannolikt inte att använda igen efteråt.
Med hjälp av sökfyllnadsfunktionen inuti Vim
Detta är mycket vanligt, du memorerar en sökväg till en fil eller mapp, du öppnar upp Vim och försöker skriva det du just har memorerat, men du är inte 100% säker på att det är korrekt, så du stänger redigeraren och börjar om.
När du vill att sökvägen ska slutföras och du har en fil /home/ubuntu/my_folder/my_file
och du redigerar en annan fil som hänvisar till den tidigare sökvägen:
Gå in i insättningsläge: sätt in eller gör det som du vill. Nästa, skriv /h
. När markören är under h
, tryck på Ctrl x och sedan på Ctrl f så att redigeraren kommer att slutföra den till /home/
eftersom mönstret /h
är unikt
Anta nu att du har två mappar inuti /home/ubuntu/
heter my_folder_1
my_folder_2
och du vill ha vägen /home/ubuntu/my_folder_2
som vanligt:
Gå in i insättningsläge
skriv /h
och tryck Ctrl x och sedan Ctrl f . Nu har du /home/
Nästa lägg till u efter / hem / och tryck på Ctrl x och sedan Ctrl f . Nu har du /home/ubuntu/
eftersom den vägen är unik. Skriv nu my
efter /home/ubuntu/
och tryck Ctrl x och sedan Ctrl f . Redaktören kommer att slutföra ditt ord tills my_folder_
och du kommer att se katalogträdet så använd piltangenterna för att välja det du vill ha.
Slå på relativa rader
Om du vill radera några textrader när du inte vet exakt antal rader som ska raderas försöker du 10dd
, 5dd
, 3dd
tills du tar bort alla raderna.
Relativa radnummer löser problemet, antar att vi har en fil som innehåller:
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.
Gå in i NORMAL-läge: Esc
Nu, kör :set relativenumber
. När det är gjort kommer filen att visas som:
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.
där 0
är radnumret för den aktuella raden och det visar också det verkliga radnumret framför det relativa antalet, så nu behöver du inte uppskatta antalet rader från den aktuella raden för att klippa eller ta bort eller sämre räkna dem en av en.
Du kan nu utföra ditt vanliga kommando som 6dd
och du är säker på antalet rader.
Du kan också använda den korta formen för samma kommando :set rnu
att slå på relativa nummer och :set nornu
att stänga av samma.
Om du också :set number
eller har :set number
redan på, får du radnumret på den rad där markören är på.
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.
Visar radnummer
För att visa radnummer från standardvyn, ange
:set number
För att dölja radnummer
:set nonumber
Det finns också en genväg för ovan. nu
är samma som number
.
:set nonu
För att dölja radnummer kan vi också använda
:set nu!
Kartläggningar för att lämna Insert-läge
Många Vim-användare tycker att Esc är för svårt att nå, och slutar hitta en annan kartläggning som är lätt att nå från hemraden. Observera att Ctrl - [ kan motsvara Esc på ett engelskt tangentbord och är mycket lättare att nå.
j k
inoremap jk <ESC>
Den här är verkligen lätt att utlösa; krossa bara de två första fingrarna på hemmaraden på samma gång. Det är också svårt att utlösa av misstag eftersom "jk" aldrig visas i något engelskt ord, och om du är i normalt läge gör det ingenting. Om du inte skriver "blackjack" för mycket, inoremap kj <ESC>
lägga till inoremap kj <ESC>
så att du inte behöver oroa dig för tidpunkten för de två tangenterna.
Caps Lock
Linux
På Linux kan du använda xmodmap
att få Caps Lock att göra samma sak som Esc . Lägg detta i en fil:
!! No clear Lock
clear lock
!! make caps lock an escape key
keycode 0x42 = Escape
xmodmap file
. Detta remaps Caps Lock to Esc .
Windows
På Windows kan du använda SharpKey eller AutoHotkey .
Mac OS
Om du har macOS 10.12.1 eller senare kan du byta om Caps Lock till Escape med Systeminställningar. Välj Tangentbord, gå till fliken Tangentbord och klicka på Modifieringstangenter.
Hur man känner till katalogen och / eller sökvägen för filen du redigerar
För att veta sökvägen för den katalog som din fil är i kan du använda:
Esc för att gå till kommandoläge
:pwd
Detta kommer att skriva ut sökvägen till katalogen längst ned i redigeraren, så här
I'm a ninja
~
~
~
~
~
/home/ubuntu/myfolder 1,5 All
Om du vill veta filnamnet du redigerar relativt till vim-katalogen kan du använda:
Esc för att gå till kommandoläget CTRL G
I'm a ninja
~
~
~
~
~
"myfile"[Modified][New file] 1 line --100%-- 1,5 All
Till slut för att få den absoluta sökvägen till filen du redigerar använder du
Esc för att gå till kommandoläge,
1 och sedan CTRL G
I'm a ninja
~
~
~
~
~
"~/myfolder/myfile"[Modified][New file] 1 line --100%-- 1,5 All
Sök inom ett funktionsblock
För att söka efter text foo
inom ett {}
-block som omger markören använder du följande kommando ( <ESC>
- Escape-knapp, <CR>
- Enter-tangent):
vi{<ESC>/\%Vfoo<CR>
nu kan du hoppa mellan matcherna inom blocket genom att trycka på n
och p
. Om du har hlsearch
alternativ kommer detta att markera alla matchningar. \%V
är en speciell sökmönsterdel som säger vim att bara söka i det visuellt valda området. Du kan också göra en kartläggning så här:
:vnoremap g/ <ESC>/\%V
Efter detta förkortas kommandot ovan till följande:
vi{g/foo<CR>
Ett annat användbart trick är att skriva ut alla rader som innehåller mönstret:
vi{
:'<,'>g/foo/#
Området '<,'>
infogas automatiskt.
Se :help range
och :help :g
.
Kopiera, flytta eller ta bort hittad linje
Många användare befinner sig i en situation där de bara vill kopiera, flytta eller ta bort en rad snabbt och återvända där de var.
Vanligtvis om du vill flytta en rad som innehåller ordet lot
under den aktuella raden skriver du något som:
/lot<Esc>dd<C-o>p
Men för att öka produktiviteten kan du använda den här genvägen i dessa fall:
" 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>``
Så en sökning så här:
/lot$m
skulle flytta linjen som innehåller lot
under linjen som markören var på när du startade sökningen.
Skriv en fil om du glömmer att "sudo" innan du startar vim
Detta kommando sparar den öppna filen med sudo-rättigheter
:w !sudo tee % >/dev/null
Du kan också kartlägga w!!
att skriva ut en fil som root
:cnoremap w!! w !sudo tee % >/dev/null
Ladda om vimrc automatiskt vid spara
Om du vimrc
ladda om vimrc
automatiskt när du sparar lägger du till följande i din 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
och sedan för sista gången, skriv:
:so $MYVIMRC
Nästa gång du sparar din vimrc
laddas den automatiskt om.
nested
är användbart om du använder vim-airline. Processen för att ladda flygbolaget utlöser vissa autokommandon, men eftersom du håller på att utföra en autokommando hoppas de över. nested
gör det möjligt att utlösa kapslade autokommandon och tillåter flygbolaget att ladda ordentligt.
Kommandoradets slutförande
ställa in wildmenu
att wildmenu
kompletteringsförslag för kommandoraden.
Utför följande
set wildmenu
set wildmode=list:longest,full
Om du säger :color
färgflik ,
Du kommer få
256-jungle Benokai BlackSea C64 CandyPaper Chasing_Logic ChocolateLiquor :color 0x7A69_dark