Szukaj…
Badawczy
Skakać do postaci
f {char} - przejście do następnego wystąpienia {char} na prawo od kursora w tym samym wierszu
F {char} - przejście do następnego wystąpienia {char} po lewej stronie kursora w tym samym wierszu
t {char} - przesuń na lewo od następnego wystąpienia {char} na prawo od kursora w tym samym wierszu
T {char} - przejście na prawo od następnego wystąpienia {char} na lewo od kursora w tym samym wierszu
Przeskakuj do przodu / do tyłu między „wynikami” poprzez ; a.
Ponadto możesz wyszukiwać całe słowa za pomocą przycisku /<searchterm>
Enter .
Wyszukiwanie ciągów
* - przejście do następnego wystąpienia słowa pod kursorem
# - przejście do poprzedniego wystąpienia słowa pod kursorem
/ searchterm
Enter prowadzi do następnego dopasowania (wyszukiwanie do przodu). Jeśli używasz ? zamiast / , wyszukiwanie jest cofane.
Przeskakuj między meczami poprzez n (następny) i N (poprzedni).
Aby wyświetlić / edytować poprzednie wyszukiwania, wpisz / i naciśnij klawisz strzałki w górę .
Pomocne są również następujące ustawienia: (uwaga :se
jest równe :set
)
-
:se hls
HighLightSearch, wyróżnia wszystkie pasujące wyszukiwania; użyj:noh
do tymczasowego wyłączenia wyszukiwania / zaznaczania podświetlenia (:set noh
lub:set nohls
wyłącza się). -
:se is
lub:set incs
włącza Wyszukiwanie przyrostowe, kursor automatycznie przeskakuje do następnego dopasowania. (:se nois
wyłącza się.) -
:se ic
IgnoreCase, wyłącza rozróżnianie wielkości liter. (:se noic
włącza się ponownie.) -
:se scs
SmartCaSe, można używać, gdy ustawiona jest opcja IgnoreCase; sprawia, że czułość (nie) skrzynki jest inteligentna ! np/the
będzie szukać , ,the
The
ThE
itp natomiast/The
tylko będzie szukać .The
Basic Motion
Uwagi
- Każdy ruch może być użyty po poleceniu operatora, więc polecenie działa na tekście zawartym w zasięgu ruchu.
- Podobnie jak poleceń operatorskich, ruchy mogą zawierać liczby, więc można przejść przez 2w Ords, na przykład.
Strzały
W Vimie normalne klawisze strzałek / kursorów ( ← ↓ ↑ → ) działają zgodnie z oczekiwaniami. Jednak w przypadku maszyn do pisania dotykowego łatwiej jest używać klawiszy alternatywnych h j k l . Na typowej klawiaturze są one umieszczone obok siebie w tym samym rzędzie i łatwo dostępne za pomocą prawej ręki. Mnemoniczna technika zapamiętywania, która z nich jest następująca:
- h / l - są one umieszczone „najbardziej w lewo / w prawo” wśród czterech liter na klawiaturze, więc odpowiadają one odpowiednio „przejściu w lewo / w prawo”;
- j - mała litera „j” ma ogon opadający „w dół” poniżej typowych liter, takich jak mała strzałka - więc jest to odpowiednik „opadania”;
- k - odwrotnie, małe „k” ma „wznoszącą się” literę „w górę” powyżej typowych liter, jak mały wskaźnik - więc jest to odpowiednik „w górę”.
Podstawowe ruchy
Wszystkie poniższe polecenia powinny być wykonywane w trybie normalnym .
Komenda | Opis |
---|---|
h lub w lewo | idź [policz] znaki w lewo |
j lub w dół | Idź [policz] znaki poniżej |
k lub więcej | Idź [policz] znaki powyżej |
l lub w prawo | idź [policz] znaki w prawo |
gg | przejdź do pierwszej linii lub [zlicz] linię, jeśli podano |
H. | przejdź do pierwszego wiersza widocznego ekranu |
M. | przejdź do środkowej linii widocznego ekranu |
L. | przejdź do ostatniej linii widocznego ekranu |
sol | przejdź do ostatniej linii lub [policz] linię, jeśli podano |
Dom lub 0 | przejdź do pierwszego znaku linii |
^ | przejdź do pierwszego niepustego znaku linii |
+ | przejdź o jedną linię do pierwszego niepustego znaku |
- | przejdź o jedną linię do pierwszego niepustego znaku |
$ lub koniec | idź na koniec linii (jeśli podano [count] , idź [count - 1] linii w dół) |
| | przejdź do [liczba] znak lub przejdź do początku wiersza, jeśli count nie została określona |
f {char} | przejdź do [count] wystąpienia {char} w prawo włącznie |
F {char} | przejdź do [count] wystąpienia {char} w lewo włącznie |
t {char} | przejdź do [count] wystąpienia {char} w prawo wyłączne |
T {char} | przejdź do [count] wystąpienia {char} w lewej wyłączności |
; | powtórz ostatnie f , t , F lub T [zliczanie] razy |
, | powtórz ostatnie f , t , F lub T , w przeciwnym kierunku, [zliczanie] razy |
w | przejdź do początku następnego słowa |
b | przejdź do początku poprzedniego słowa |
mi | przejdź do końca następnego słowa |
ge | przejdź do końca poprzedniego słowa |
% | przejdź do pasujących par, np. (), [], {} , /* */ or #if, #ifdef, #else, #elif, #endif |
{ } | poprzedni / następny akapit |
[{ ]} | początek / koniec bloku |
'{zwęglać} | Idź do znaku (znak m {char} ) |
<CB> <CF> | poprzednia / następna strona |
<CO> <CI> | Wróć w przód lub w przód na „liście skoków” (wymaga funkcji jumplist , patrz :help jumps ) |
Uwaga: b, e, i w rozważać słowo aby być litery, cyfry i znaki podkreślenia Domyślnie (to może być skonfigurowany z iskeyword
ustawienia). Każda z nich może być również pisana wielkimi literami, co powoduje, że pomijają wszystko, co nie jest również spacją.
Uwaga: Vim rozpoznaje dwa rodzaje ruchów: ruch operatora ( :help movement
) i skoki ( :help jumplist
skok :help jumplist
). Ruchy podobne do tych wykonanych za pomocą g
( gg
, G
, g,
) liczą się jako skoki, podobnie jak zmiany. Zmiany otrzymują własną listę szybkiego dostępu, którą można nawigować, jak wspomniano powyżej, za pomocą g,
i g;
(patrz :help changelist
). Skoki nie są traktowane przez Vima jako polecenia ruchu
Podczas przesuwania w górę lub w dół między liniami kursor zachowuje swoją kolumnę, jak można by się spodziewać. Jeśli nowa linia jest zbyt krótka, kursor przesuwa się na koniec nowej linii. Jeśli kolumna znajduje się poza końcem linii, kursor jest wyświetlany na końcu linii. Początkowy numer kolumny jest nadal zachowywany, dopóki nie zostanie podjęte działanie w celu jego zmiany (takie jak edycja tekstu lub jawne przeniesienie kolumny).
Jeśli długość linii przekracza szerokość ekranu, tekst jest zawijany (w ustawieniach domyślnych to zachowanie można skonfigurować). Aby poruszać się po liniach wyświetlanych na ekranie zamiast linii w pliku, dodaj g przed zwykłym poleceniem. Na przykład gj przesunie kursor do pozycji wyświetlanej o jeden wiersz poniżej jego aktualnej pozycji, nawet jeśli znajduje się w tym samym wierszu pliku.
Wyszukiwanie wzoru
Vim obsługuje użycie wyrażeń regularnych podczas przeszukiwania pliku.
Znak wskazujący, że chcesz przeprowadzić wyszukiwanie, to /
.
Najprostsze wyszukiwanie, jakie możesz wykonać, jest następujące
/if
Spowoduje to przeszukanie całego pliku pod kątem wszystkich wystąpień if
. Jednak nasze wyszukiwanie, if
jest w rzeczywistości wyrażeniem regularnym, które będzie pasowało do każdego wystąpienia tego słowa, if
uwzględni się w innych słowach.
Na przykład nasze wyszukiwanie powiedziałoby, że wszystkie następujące słowa pasują do naszego wyszukiwania: if
, spiffy
, endif
itp.
Możemy przeprowadzać bardziej skomplikowane wyszukiwania, używając bardziej skomplikowanych wyrażeń regularnych.
Jeśli nasze wyszukiwanie było:
/\<if\>
wówczas nasze wyszukiwanie zwróciłoby tylko dokładne dopasowanie do pełnego słowa, if
. Powyższy spiffy
i endif
nie zostaną zwrócone przez wyszukiwanie, tylko if
.
Możemy również użyć zakresów. Biorąc pod uwagę plik:
hello1
hello2
hello3
hello4
Jeśli chcemy wyszukać wiersze zawierające „cześć”, a po nim cyfrę od 1 do 3, powiedzielibyśmy:
/hello[1-3]
Inny przykład:
/(?:\d*\.)?\d+
znajdzie wszystkie liczby całkowite i dziesiętne w pliku.
Przechodzenie do początku określonego słowa
Podczas edycji tekstu powszechnym zadaniem jest nawigacja do określonego słowa na ekranie. W tych przykładach badamy, jak możemy przejść do słowa updated
. W celu zachowania spójności między przykładami staramy się wylądować na pierwszej literze tego słowa.
Skok na środku ekranu
M $ B
To podejście jest szybkie, przy użyciu tylko 3 naciśnięć klawiszy. Wadą jest jednak to, że nie jest bardzo ogólna, ponieważ zdarza się, że nasza linia docelowa nie znajduje się na środku ekranu. Mimo to jest to użyteczny ruch podczas wykonywania mniej szczegółowych ruchów.
Za pomocą hrabiego
3j f u ; ;
Na pierwszy rzut oka może się to wydawać krok wstecz od pierwszego podejścia ze względu na liczbę naciśnięć klawiszy. Ale ponieważ używamy tutaj liczby zamiast M , jest ona bardziej elastyczna. Możemy szybko zidentyfikować prawidłową liczbę do użycia, jeśli włączona jest relatywna liczba . Aby przejść do słowa docelowego, używając f w połączeniu z ; może być zaskakująco skuteczny - i na pewno lepszy niż wielokrotne naciskanie w . Jeśli przekroczysz swój cel za pomocą ; Można przejść do tyłu,.
Jawne wyszukiwanie
/ up Wpisz n n
Nawigacja przez / może być bardzo wydajna. Często możemy przejść bezpośrednio do naszego słowa docelowego, wpisując je. W tym miejscu wpisujemy tylko dwa pierwsze znaki w nadziei, że wyjątkowo pasuje do naszego słowa. Niestety istnieje wiele dopasowań, ale możemy szybko przejść do następnego dopasowania za pomocą n .
Wyszukiwanie niejawne
/ y Spacja Wprowadź w
W niektórych przypadkach bardziej efektywne może być przeskakiwanie w pobliżu naszego celu niż dążenie do bezpośredniego przejścia do niego. Tutaj obserwujemy, że obok celu rzadko pojawia się litera y
. Możemy dodać spację do wyszukiwanego hasła, aby zmniejszyć szanse, że trafimy po drodze inną postać y
. Można to również wykorzystać z doskonałym efektem dla f {char} , jak w przykładzie Korzystanie z liczenia .
Używanie znaków do poruszania się
Znaki są jak zakładki; pomagają ci znaleźć miejsca, w których już byłeś.
TLDR
Ustaw je w trybie normalnym za pomocą m{a-zA-Z}
i przeskocz do nich w trybie normalnym lub wizualnym za pomocą '{a-zA-Z}
(pojedynczy cudzysłów) lub `{a-zA-Z}
(backstick). Małe litery oznaczają znaki w buforze, a wielkie litery i cyfry są globalne. Zobacz aktualnie ustawione znaki za pomocą :marks
, a aby uzyskać więcej informacji, zobacz :help mark
.
Ustaw znak
Wbudowana pomoc Vima mówi:
m{a-zA-Z} Set mark {a-zA-Z} at cursor position (does not move
the cursor, this is not a motion command).
Znak będzie śledził, w której linii i kolumnie został umieszczony. Nie ma wizualnego potwierdzenia, że znak został ustawiony lub jeśli znak miał poprzednią wartość i został zastąpiony.
Przejdź do znaku
Wbudowana pomoc Vima mówi:
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 używa pozycji kolumny, podczas gdy pojedynczy cudzysłów nie. Różnica między pozwala po prostu zignorować pozycję kolumny znaku, jeśli chcesz.
Oprócz trybu normalnego można przeskakiwać między znakami nieglobalnymi w trybie wizualnym, aby umożliwić zaznaczanie tekstu na podstawie znaków.
Znaki globalne
Znaki globalne (wielkie litery) umożliwiają przechodzenie między plikami. Oznacza to, że na przykład, jeśli znak A
jest ustawiony w foo.txt
, to z bar.txt
(gdziekolwiek w moim systemie plików), jeśli bar.txt
do znaku A
, mój bieżący bufor zostanie zastąpiony przez foo.txt
. Vim poprosi o zapisanie zmian.
Przeskakiwanie do znaku w innym pliku nie jest uważane za ruch, a selekcje wizualne (między innymi) nie będą działać jak przeskakiwanie do znaków w buforze.
Aby wrócić do poprzedniego pliku (w tym przypadku bar.txt
), użyj :b[uffer] #
(to znaczy :b#
lub :buffer#
).
Uwaga:
Znaki specjalne
Są pewne znaki, które Vim ustawia automatycznie (które możesz sam nadpisać, ale prawdopodobnie nie będziesz musiał tego robić).
Na przykład (parafrazowany z pomocy Vima):
`[` 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}.
Więcej dzięki wbudowanej pomocy Vima:
'' `` 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}
Dodatkowo, znaki (
, )
, {
i }
są znakami, które skaczą do tej samej pozycji, co ich polecenia w trybie normalnym - to znaczy '}
robi to samo w trybie normalnym co }
.
Przejdź do określonej linii
Aby przejść do określonej linii z numerem dwukropka. Aby przejść do pierwszego wiersza pliku, użyj
:1
Aby przejść do linii 23
:23