Zoeken…
Zoeken
Springen naar karakters
f {char} - ga naar het volgende exemplaar van {char} rechts van de cursor op dezelfde regel
F {char} - ga naar het volgende exemplaar van {char} links van de cursor op dezelfde regel
t {char} - ga naar links van het volgende exemplaar van {char} rechts van de cursor op dezelfde regel
T {char} - ga naar rechts van het volgende exemplaar van {char} links van de cursor op dezelfde regel
Spring vooruit / achteruit tussen de 'resultaten' via ; en,.
Verder kunt u zoeken naar hele woorden via /<searchterm>
Enter .
Zoeken naar tekenreeksen
* - ga naar het volgende exemplaar van het woord onder de cursor
# - naar het vorige exemplaar van het woord onder de cursor gaan
/ searchterm
Enter brengt je naar de volgende wedstrijd (vooruit zoeken). Als u gebruikt ? in plaats van / gaat het zoeken achteruit.
Spring tussen de wedstrijden via n (volgende) en N (vorige).
Typ / en druk op de pijl- omhoog om uw eerdere zoekopdrachten te bekijken / bewerken.
Handig zijn ook deze instellingen: (let op :se
is gelijk aan :set
)
-
:se hls
HighLightSearch, markeert alle zoekresultaten; gebruik:noh
voor het tijdelijk uitschakelen van het zoeken / markeren van markeringen (:set noh
of:set nohls
wordt uitgeschakeld.) -
:se is
of:set incs
schakelt incrementeel zoeken aan, cursor springt automatisch naar de volgende wedstrijd. (:se nois
wordt uitgeschakeld.) -
:se ic
IgnoreCase, schakelt hoofdlettergevoeligheid uit. (:se noic
wordt weer ingeschakeld.) -
:se scs
SmartCaSe, kan worden gebruikt wanneer IgnoreCase is ingesteld; maakt hoofdlettergevoeligheid slim ! bijv./the
zal zoeken naarthe
,The
,ThE
, etc. terwijl/The
enige zal zoeken naarThe
.
Basic Motion
Opmerkingen
- Elke beweging kan worden gebruikt na een operatorcommando, dus het commando werkt op de tekst binnen het bereik van de beweging.
- Net als operatoropdrachten kunnen bewegingen een telling bevatten, zodat u bijvoorbeeld met 2w kunt bewegen.
pijlen
In Vim werken normale pijl- / cursortoetsen ( ← ↓ ↑ → ) zoals verwacht. Voor touch-typers is het echter gemakkelijker om de alternatieve toetsen van h j k l te gebruiken. Op een typisch toetsenbord bevinden ze zich naast elkaar op dezelfde rij en zijn ze gemakkelijk toegankelijk met de rechterhand. De mnemonische techniek om te onthouden welke de volgende is:
- h / l - deze bevinden zich "het meest links / rechts" tussen de vier letters op het toetsenbord, dus ze zijn gelijk aan respectievelijk "links / rechts gaan";
- j - kleine letters "j" heeft zijn staart "naar beneden" onder typische letters, zoals een kleine pijl - dus het is gelijk aan "naar beneden";
- k - omgekeerd, in kleine letters "k" gaat "opklimmen" "omhoog" boven typische letters, zoals een kleine wijzer - dus het is gelijk aan "omhoog".
Basisbewegingen
Alle onderstaande opdrachten moeten in de normale modus worden uitgevoerd.
Commando | Beschrijving |
---|---|
h of links | ga [tel] tekens naar links |
j of naar beneden | ga [tel] karakters hieronder |
k of hoger | ga [tel] karakters hierboven |
l of rechts | ga [tel] tekens naar rechts |
gg | ga naar de eerste regel, of [tel] de regel, indien gegeven |
H | ga naar de eerste regel in het zichtbare scherm |
M | ga naar de middelste regel in het zichtbare scherm |
L | ga naar de laatste regel in het zichtbare scherm |
G | ga naar de laatste regel, of [tel] de regel, indien gegeven |
Thuis of 0 | ga naar het eerste teken van de regel |
^ | ga naar het eerste niet-lege teken van de regel |
+ | ga een regel omlaag naar het eerste niet-lege teken |
- | ga een regel omhoog naar het eerste niet-lege teken |
$ of einde | ga naar het einde van de regel (als [count] wordt gegeven, ga je [count - 1] regels naar beneden) |
| | ga naar het [aantal] teken of ga naar het begin van de regel als count niet is opgegeven |
f} {char | ga naar [tel] het voorkomen van {char} aan de rechterkant inclusief |
F {char} | ga naar [tel] het voorkomen van {char} aan de linkerkant inclusief |
t} {char | ga naar [tel] het optreden van {char} naar het exclusieve recht |
T {char} | ga naar [tel] het optreden van {char} aan de linkerkant exclusief |
; | herhaal de laatste f , t , F of T [tel] keer |
, | herhaal de laatste f , t , F of T , in de tegenovergestelde richting, [tel] keer |
w | ga naar het begin van het volgende woord |
b | ga naar het begin van het vorige woord |
e | ga naar het einde van het volgende woord |
ge | ga naar het einde van het vorige woord |
% | ga naar overeenkomende paren, bijv. (), [], {} , /* */ of #if, #ifdef, #else, #elif, #endif |
{ } | vorige / volgende paragraaf |
[{ ]} | begin / einde van blok |
'{char} | Ga naar markeren (markeren met m {char} ) |
<CB> <CF> | vorige / volgende pagina |
<CO> <CI> | Ga terug of vooruit in de " jumplist " ( jumplist functie vereist, zie :help jumps jumplist ) |
Opmerking: b , e en w beschouwen een woord standaard als letters, cijfers en onderstrepingstekens (dit kan worden geconfigureerd met de instelling iskeyword
). Elk van deze kan ook worden gekapitaliseerd, waardoor ze alles overslaan dat niet witruimte is ook.
Opmerking: Vim herkent twee soorten bewegingen: operatorbeweging ( :help movement
) en sprongen ( :help jumplist
). Bewegingen zoals die uitgevoerd met g
( gg
, G
, g,
) tellen als sprongen, net als veranderingen. Wijzigingen krijgen hun eigen jumplist, die navigeerbaar is zoals hierboven vermeld via g,
en g;
(zie :help changelist
). Sprongen worden niet behandeld als bewegingsopdrachten door Vim
Wanneer u lijnen omhoog of omlaag verplaatst, behoudt de cursor de kolom zoals verwacht. Als de nieuwe regel te kort is, wordt de cursor naar het einde van de nieuwe regel verplaatst. Als de kolom voorbij het einde van de regel staat, wordt de cursor aan het einde van de regel weergegeven. Het oorspronkelijke kolomnummer blijft behouden totdat een actie wordt ondernomen om het te wijzigen (zoals het bewerken van tekst of het expliciet verplaatsen van de kolom).
Als de lengte van een regel de breedte van het scherm overschrijdt, wordt de tekst ingepakt (bij standaardinstellingen kan dit gedrag worden geconfigureerd). Als u door lijnen wilt gaan zoals weergegeven op het scherm, in plaats van lijnen binnen het bestand, voegt u g toe voor de gebruikelijke opdracht. Met gj wordt de cursor bijvoorbeeld verplaatst naar de positie die één regel onder de huidige positie wordt weergegeven, zelfs als deze zich in dezelfde regel van het bestand bevindt.
Zoeken naar patroon
Vim ondersteunt het gebruik van reguliere expressies bij het zoeken door een bestand.
Het teken dat aangeeft dat u een zoekopdracht wilt uitvoeren, is /
.
De eenvoudigste zoekopdracht die u kunt uitvoeren, is de volgende
/if
Hiermee wordt in het hele bestand gezocht naar alle instanties van if
. Onze zoekopdracht if
is echter een reguliere expressie die overeenkomt met het voorkomen van het woord, ook if
dit binnen andere woorden voorkomt.
Onze zoekopdracht zou bijvoorbeeld zeggen dat alle volgende woorden overeenkomen met onze zoekopdracht: if
, spiffy
, endif
, etc.
We kunnen meer gecompliceerde zoekopdrachten uitvoeren door gecompliceerdere reguliere expressies te gebruiken.
Als onze zoekopdracht was:
/\<if\>
dan zou onze zoekopdracht alleen exacte overeenkomsten opleveren als het volledige woord if
. Het bovenstaande spiffy
en endif
zou niet worden geretourneerd door de zoekopdracht, alleen if
.
We kunnen ook bereiken gebruiken. Een bestand gegeven:
hello1
hello2
hello3
hello4
Als we willen zoeken naar die regels met "hallo" gevolgd door een cijfer tussen 1 en 3, zouden we zeggen:
/hello[1-3]
Een ander voorbeeld:
/(?:\d*\.)?\d+
zou alle gehele getallen en decimalen vinden in het bestand.
Navigeren naar het begin van een specifiek woord
Bij het bewerken van tekst is het een veel voorkomende taak om naar een bepaald woord op het scherm te navigeren. In deze voorbeelden onderzoeken we hoe we naar het updated
woord kunnen navigeren. Ter wille van de consistentie in de voorbeelden willen we op de eerste letter van het woord belanden.
Mid-screen jump
M $ B
Deze aanpak is snel, met slechts 3 toetsaanslagen. Het nadeel is echter dat het niet erg algemeen is, omdat het niet gebruikelijk is dat onze doellijn precies in het midden van het scherm ligt. Toch is het een nuttige beweging bij het maken van minder korrelige bewegingen.
Met behulp van een telling
3j f u ; ;
Op het eerste gezicht lijkt dit een stap terug te zijn ten opzichte van de eerste benadering vanwege het aantal toetsaanslagen. Maar omdat we hier een telling gebruiken in plaats van M , is deze flexibeler. We kunnen snel de juiste telling identificeren om te gebruiken als relatienummer is ingeschakeld. Om naar het doelwoord te gaan, met behulp van f in combinatie met ; kan verrassend effectief zijn - en zeker beter dan herhaaldelijk op w drukken. Als je je doel voorbij schiet met ; , Kunt u achteruit met gaan.
Expliciet zoeken
/ omhoog Voer n n in
Navigeren via / kan erg krachtig zijn. We kunnen vaak rechtstreeks naar ons doelwoord springen door het uit te typen. Hier typen we alleen de eerste twee tekens in de hoop dat het uniek overeenkomt met ons woord. Helaas zijn er meerdere wedstrijden, maar we kunnen snel naar de volgende wedstrijd springen met n .
Impliciet zoeken
/ y Spatie Voer w
In sommige gevallen kan het efficiënter zijn om dichtbij ons doel te springen in plaats van ernaar te streven er direct naartoe te gaan. Hier zien we dat er een onregelmatig voorkomende letter, y
, direct naast het doel staat. We kunnen een spatie aan onze zoekterm toevoegen om de kans te verkleinen dat we onderweg een ander y
teken raken. Dit kan ook met groot effect worden gebruikt met f {char} , zoals in het voorbeeld Een telling gebruiken .
Markeringen gebruiken om te bewegen
Markeringen zijn als bladwijzers; ze helpen je plaatsen te vinden waar je al bent geweest.
TLDR
Zet ze in de normale modus met m{a-zA-Z}
en spring er naar toe in de normale of visuele modus met '{a-zA-Z}
(enkele aanhalingstekens) of `{a-zA-Z}
(backtick). Kleine letters zijn voor tekens binnen een buffer en hoofdletters en cijfers zijn globaal. Bekijk uw momenteel ingestelde markeringen met :marks
en voor meer info zie :help mark
.
Zet een markering
De ingebouwde hulp van Vim zegt:
m{a-zA-Z} Set mark {a-zA-Z} at cursor position (does not move
the cursor, this is not a motion command).
Het teken houdt bij op welke regel en kolom het was geplaatst. Er is geen visuele bevestiging dat een markering is ingesteld of dat een markering een eerdere waarde had en is overschreven.
Spring naar een markering
De ingebouwde hulp van Vim zegt:
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 gebruikt de kolompositie, terwijl Single-quote dat niet doet. Het verschil tussen laat je eenvoudig de kolompositie van je markering negeren als je wilt.
U kunt in de visuele modus naast de normale modus tussen niet-globale markeringen springen om tekst op basis van markeringen te selecteren.
Wereldwijde merken
Globale tekens (hoofdletters) maken het mogelijk om tussen bestanden te springen. Wat dat betekent is als, bijvoorbeeld, markering A
is ingesteld in foo.txt
, vervolgens vanuit bar.txt
(overal in mijn bestandssysteem), als ik naar markering A
spring, mijn huidige buffer wordt vervangen door foo.txt
. Vim vraagt om wijzigingen op te slaan.
Springen naar een markering in een ander bestand wordt niet als een beweging beschouwd en visuele selecties (onder andere) zullen niet werken zoals springen naar markeringen in een buffer.
Om terug te gaan naar het vorige bestand (in dit geval bar.txt
), gebruikt u :b[uffer] #
(dat wil zeggen :b#
of :buffer#
).
Notitie:
Speciale tekens
Er zijn bepaalde markeringen die Vim automatisch instelt (die u zelf kunt overschrijven, maar waarschijnlijk niet hoeft te doen).
Bijvoorbeeld (geparafraseerd uit de hulp van Vim):
`[` 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}.
Meer uit de ingebouwde hulp van Vim:
'' `` 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}
Bovendien zijn de tekens (
, )
, {
en }
tekens die naar dezelfde positie springen als hun opdrachten in de normale modus - dat wil zeggen '}
doet hetzelfde in de normale modus als }
.
Spring naar specifieke regel
Om naar een specifieke regel met dubbele punt te springen. Gebruik om naar de eerste regel van een bestand te springen
:1
Naar regel 23 springen
:23