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

wprowadź opis zdjęcia tutaj

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 ; ;

wprowadź opis zdjęcia tutaj

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

wprowadź opis zdjęcia tutaj

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

wprowadź opis zdjęcia tutaj

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


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow