Sök…
Sökande
Hoppar till tecken
f {char} - gå till nästa förekomst av {char} till höger om markören på samma rad
F {char} - gå till nästa förekomst av {char} till vänster om markören på samma rad
t {char} - gå till vänster om nästa förekomst av {char} till höger om markören på samma rad
T {char} - flytta till höger om nästa förekomst av {char} till vänster om markören på samma rad
Hoppa framåt / bakåt mellan "resultaten" via ; och,.
Vidare kan du söka efter hela ord via /<searchterm>
Enter .
Söker efter strängar
* - gå till nästa förekomst av ordet under markören
# - gå till föregående förekomst av ordet under markören
/ searchterm
Enter tar dig till nästa match (framåt-sökning). Om du använder ? istället för / går sökningen bakåt.
Hoppa mellan matcherna via n (nästa) och N (föregående).
Om du vill visa / redigera dina tidigare sökningar skriver du / och trycker på upp- piltangenten.
Hjälpsamma är också dessa inställningar: (Obs :se
är lika med :set
)
-
:se hls
HighLightSearch, markerar alla sökmatchningar; Använd:noh
för att tillfälligt stänga av sökningen / markeringen (:set noh
eller:set nohls
stängs av.) -
:se is
or:set incs
vänder stegvis sökning, markören hoppar automatiskt till nästa match. (:se nois
stängs av.) -
:se ic
IgnoreCase, stänger av känslig känslighet. (:se noic
slås på igen.) -
:se scs
SmartCaSe, kan användas när IgnoreCase är inställt; gör känsligheten för ärenden (in) smart ! t.ex./the
kommer att söka efterthe
,The
,ThE
, etc. medan/The
enda kommer att leta efterThe
.
Grundläggande rörelse
Anmärkningar
- Varje rörelse kan användas efter ett operatörskommando, så kommandot fungerar på texten som består av rörelsens räckvidd.
- Precis som operatörskommandon kan rörelser inkludera en räkning, så att du till exempel kan flytta med 2w ords.
pilar
I Vim fungerar vanliga pil- / markörtangenter ( ← ↓ ↑ → ) som förväntat. För pekskrivare är det emellertid lättare att använda de alternativa knapparna h j k l . På ett typiskt tangentbord finns de bredvid varandra på samma rad och är lättillgängliga med höger hand. Den mnemoniska tekniken att komma ihåg vilken är vilken bland dem går så här:
- h / l - de finns "mest till vänster / höger" bland de fyra bokstäverna på tangentbordet, så de motsvarar "gå vänster / höger" respektive;
- j - små bokstäver "j" har svansen "ner" under typiska bokstäver, som en liten pil - så det motsvarar "gå ner";
- k - omvänt, små bokstäver "k" har sin "stigande" går "upp" ovanför typiska bokstäver, som en liten pekare - så det motsvarar "gå upp".
Grundläggande rörelser
Alla kommandon nedan ska göras i normalt läge .
Kommando | Beskrivning |
---|---|
h eller vänster | gå [räkna] tecken till vänster |
j eller ner | gå [räkna] tecken nedan |
k eller uppåt | gå [räkna] tecken ovan |
l eller rätt | gå [räkna] tecken till höger |
gg | gå den första raden, eller [räkna] 'raden, om det ges |
H | gå till den första raden på den synliga skärmen |
M | gå till mellersta raden på den synliga skärmen |
L | gå till den sista raden på den synliga skärmen |
G | gå den sista raden, eller [räkna] 'raden, om den ges |
Hem eller 0 | gå till radens första karaktär |
^ | gå till radens första icke-tomma karaktär |
+ | gå ner en rad till första icke-tomma tecken |
- | gå upp en rad till första icke-tomma karaktär |
$ eller slut | gå till slutet av raden (om [räknas] ges, gå [räkna - 1] rader ner) |
| | gå till [räkna] 'tecken eller gå till början av raden om count inte anges |
f {char} | gå till [räknas] förekomsten av {char} till höger inklusive |
F {char} | gå till [räknas] förekomsten av {char} till vänster inklusive |
t {char} | gå till [räknas] förekomsten av {char} till höger exklusivt |
T {char} | gå till [räkna] förekomsten av {char} till vänster exklusivt |
; | upprepa senaste f , t , F eller T [count] gånger |
, | upprepa senaste f , t , F eller T , i motsatt riktning, [count] gånger |
w | gå till början av nästa ord |
b | gå till början av föregående ord |
e | gå till slutet av nästa ord |
gE | gå till slutet av föregående ord |
% | gå till matchande par, t.ex. (), [], {} , /* */ eller #if, #ifdef, #else, #elif, #endif |
{ } | föregående / nästa stycke |
[{ ]} | början / slutet av blocket |
'{röding} | Gå till markera (markera med m {char} ) |
<CB> <CF> | föregående / nästa sida |
<CO> <CI> | Gå tillbaka eller framåt i "hopplistan" (kräver jumplist , se :help jumps ) |
Obs: b , e och w anser att ett ord är bokstäver, siffror och understreck som standard (detta kan konfigureras med inställningen för iskeyword
). Var och en av dessa kan också aktiveras, vilket gör att de hoppar över allt som inte är mellanrummet.
Obs: Vim känner igen två slags rörelser: operatörsrörelse ( :help movement
) och hopp ( :help jumplist
). Rörelser som de som utförs med g
( gg
, G
, g,
) räknas som hopp, liksom förändringar. Ändringar får sin egen jumplist, som är navigerbar som nämnts ovan via g,
och g;
(se :help changelist
). Hopp behandlas inte som rörelsekommandon av Vim
När du flyttar upp eller ner över linjer behåller markören sin kolumn som väntat. Om den nya raden är för kort flyttas markören till slutet av den nya raden. Om kolumnen är bortom slutet av raden visas markören i slutet av raden. Det ursprungliga kolumnnumret behålls fortfarande tills en åtgärd vidtas för att ändra den (till exempel redigering av text eller uttryckligen flytta kolumn).
Om en linjelängd överstiger skärmens bredd lindas texten (under standardinställningar kan detta beteende konfigureras). För att flytta igenom rader som visas på skärmen, snarare än linjer i filen, lägg till g framför det vanliga kommandot. Gj flyttar till exempel markören till den position som visas en rad under dess nuvarande position, även om det finns i samma rad i filen.
Söker efter mönster
Vim stöder användning av reguljära uttryck när du söker igenom en fil.
Tecknet som anger att du vill utföra en sökning är /
.
Den enklaste sökningen du kan utföra är följande
/if
Detta kommer att söka i hela filen efter alla instanser av if
. Men vår sökning if
är faktiskt ett regelbundet uttryck som kommer att matcha varje förekomst av ordet if
inkluderar de inuti andra ord.
Till exempel skulle vår sökning säga att alla följande ord matchar vår sökning: if
, spiffy
, endif
, etc.
Vi kan göra mer komplicerade sökningar genom att använda mer komplicerade reguljära uttryck.
Om vår sökning var:
/\<if\>
då skulle vår sökning bara returnera exakta matchningar till hela ordet if
. Ovanstående spiffy
och endif
skulle inte returneras av sökningen, bara if
.
Vi kan också använda intervall. En fil:
hello1
hello2
hello3
hello4
Om vi vill söka efter de rader som innehåller "hej" följt av en siffra mellan 1 och 3 skulle vi säga:
/hello[1-3]
Ett annat exempel:
/(?:\d*\.)?\d+
skulle hitta alla heltal och decimaler i filen.
Navigera till början av ett specifikt ord
När du redigerar text är en vanlig uppgift att navigera till ett visst ord på skärmen. I dessa exempel undersöker vi hur vi kan navigera till det updated
ordet. För att få konsekvenserna i exemplen strävar vi efter att landa på ordets första bokstav.
Mitt på skärmen
M $ B
Den här metoden är snabb med bara tre tangenttryckningar. Nackdelen är emellertid att den inte är så generell, eftersom det inte är vanligt att vår mållinje råkar ligga mitt på skärmen. Ändå är det en användbar rörelse när du gör mindre granulära rörelser.
Med hjälp av en räkning
3j f u ; ;
Vid första anblicken kan detta tyckas vara ett steg tillbaka från den första metoden på grund av antalet tangenttryckningar. Men eftersom vi använder en räkning här istället för M , är det mer flexibelt. Vi kan snabbt identifiera det rätta antalet som ska användas om relativenummer är aktiverat. För att flytta till målordet med f i kombination med ; kan vara förvånansvärt effektiv - och säkert bättre än att upprepade gånger trycka på w . Om du överskrider ditt mål med ; , kan du gå bakåt med ,.
Explicit sökning
/ upp Ange n n
Att navigera via / kan vara mycket kraftfullt. Vi kan ofta hoppa direkt till vårt målord genom att skriva in det. Här skriver vi bara de två första karaktärerna i hopp om att det unikt matchar vårt ord. Tyvärr finns det flera matcher, men vi kan snabbt hoppa till nästa match med n .
Implicit sökning
/ y Space Enter w
I vissa fall kan det vara mer effektivt att hoppa nära vårt mål snarare än att sträva efter att gå direkt till det. Här observerar vi att det finns en sällan förekommande bokstav, y
, bredvid målet. Vi kan lägga till ett utrymme i vårt sökord för att minska chansen att vi träffar någon annan y
karaktär på vägen. Detta kan också användas till stor effekt med f {char} , som i exemplet Använda en räkning .
Använda märken för att flytta runt
Märken är som bokmärken; de hjälper dig att hitta platser du redan har varit.
TLDR
Ställ dem i normalt läge med m{a-zA-Z}
och hoppa till dem i normalt eller visuellt läge med '{a-zA-Z}
(enstaka offert) eller `{a-zA-Z}
(backtick). Små bokstäver är för märken i en buffert och stora bokstäver och siffror är globala. Se dina för närvarande angivna markeringar med :marks
, och för mer information se :help mark
.
Sätt ett märke
Vims inbyggda hjälp säger:
m{a-zA-Z} Set mark {a-zA-Z} at cursor position (does not move
the cursor, this is not a motion command).
Markeringen kommer att hålla reda på vilken linje och kolumn den placerades på. Det finns ingen visuell bekräftelse på att ett märke har ställts in eller om ett märke hade ett tidigare värde och har skrivits över.
Hoppa till en markering
Vims inbyggda hjälp säger:
Jumping to a mark can be done in two ways:
1. With ` (backtick): The cursor is positioned at the specified location
and the motion is exclusive.
2. With ' (single quote): The cursor is positioned on the first non-blank
character in the line of the specified location and
the motion is linewise.
Backtick använder kolumnpositionen medan enstaka offert inte gör det. Skillnaden mellan låter dig helt enkelt ignorera kolumnens position för ditt märke om du vill.
Du kan hoppa mellan icke-globala markeringar i visuellt läge utöver normalt läge för att möjliggöra val av text baserat på markeringar.
Globala märken
Globala markeringar (stora bokstäver) gör det möjligt att hoppa mellan filer. Vad det betyder är om till exempel markering A
ställs in i foo.txt
, sedan från bar.txt
(var som helst i mitt filsystem), om jag hoppar till märke A
kommer min nuvarande buffert att ersättas med foo.txt
. Vim kommer att be om att spara ändringar.
Hoppa till ett märke i en annan fil anses inte vara en rörelse, och visuella markeringar (bland annat) kommer inte att fungera som att hoppa till varumärken inom en buffert.
För att gå tillbaka till föregående fil ( bar.txt
i det här fallet) använder du :b[uffer] #
(det vill säga :b#
eller :buffer#
).
Notera:
Specialmärken
Det finns vissa märken som Vim ställer in automatiskt (som du kan skriva över själv, men förmodligen inte behöver).
Till exempel (omskriven från Vims hjälp):
`[` and `]`: jump to the first or last character of the previously changed or
yanked text. {not in Vi}
`<` and `>`: jump to the first or last line (with `'`) or character (with
<code>`</code>) of the last selected Visual area in the current
buffer. For block mode it may also be the last character in the
first line (to be able to define the block). {not in Vi}.
Mer från Vims inbyggda hjälp:
'' `` To the position before the latest jump, or where the
last "m'" or "m`" command was given. Not set when the
:keepjumps command modifier was used.
Also see restore-position.
'" `" To the cursor position when last exiting the current
buffer. Defaults to the first character of the first
line. See last-position-jump for how to use this
for each opened file.
Only one position is remembered per buffer, not one
for each window. As long as the buffer is visible in
a window the position won't be changed.
{not in Vi}.
'. `. To the position where the last change was made. The
position is at or near where the change started.
Sometimes a command is executed as several changes,
then the position can be near the end of what the
command changed. For example when inserting a word,
the position will be on the last character.
{not in Vi}
'" `" To the cursor position when last exiting the current
buffer. Defaults to the first character of the first
line. See last-position-jump for how to use this
for each opened file.
Only one position is remembered per buffer, not one
for each window. As long as the buffer is visible in
a window the position won't be changed.
{not in Vi}.
'^ `^ To the position where the cursor was the last time
when Insert mode was stopped. This is used by the
gi command. Not set when the :keepjumps command
modifier was used. {not in Vi}
Dessutom är tecknen (
, )
, {
och }
märken som hoppar till samma position som deras kommandon i normalt läge - det vill säga '}
gör samma sak i normalt läge som }
.
Hoppa till specifik linje
För att hoppa till en specifik linje med kolonummer. För att hoppa till den första raden i en filanvändning
:1
Att hoppa till rad 23
:23