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.

Inställningar för tangentbord

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


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow