Jak wracasz z „gf” w Vimie


187

Używam Vima dla Windows zainstalowanych w trybie Unix. Dzięki tej stronie używam teraz gfpolecenia, aby przejść do pliku pod kursorem.

Szukam polecenia do:

  1. wróć do poprzedniego pliku (podobnie jak Ctrl+ Tdla ctags) lub
  2. odwzoruj, gf aby automatycznie uruchomić nowy plik w nowym oknie.

Odpowiedzi:


294

Używam Ctrl-O


43
CTRL-O, aby przejść do starszej pozycji na liście skoków, <Tab> lub CTRL-I, aby przejść do nowszej pozycji.
Sébastien RoccaSerra

4
@ g33kz0r mnemonik to O = OUT, I = IN => Ctrl - O wyprowadza cię, Ctrl wprowadza cię. Jeśli każdy skok jest jak przejście przez drzwi, to znaczy.
kronn

CTRL-O przeskoczy do ostatnio odwiedzanej pozycji, jest to denerwujące, gdy przeszukano nowy plik. Wolę Shift-Ctrl-6 (w moim przypadku Ctrl-6 nie działa)
Adriano

71

Często używam Ctrl- 6do tego.

Jest to przydatne, ponieważ pozwala mi szybko przeskakiwać między dwoma plikami.


47

Możesz użyć CTRL-W gfdo otwarcia pliku w nowej karcie.

Możesz zamknąć nowo otwarty plik jak zawsze :bd, lub użyć CTRL-6innych zwykłych sposobów zmiany buforów.


7
karta jest dla mnie wygodniejsza niż bufor, a używanie jej nnoremap gf <C-W>gfdo otwierania w nowej karcie może być lepsze.
Searene

13

Użyj gf, aby zejść do pliku i użyj: bf, aby wrócić


1
Miałem otwarte dwa okna w zakładce i to właśnie otworzyło drugie okno w pierwszym zamiast skakać z powrotem do poprzedniego bufora.
Kenny Evitt,

12

Wystarczy użyć, :e#a następnie Enter- to w zasadzie oznacza edycję ostatniego (najnowszego) pliku.


9

Ctrl-Shift-6 to jeden.

:e#↲ jest inny.


8
Zmiana nie jest konieczna. Przestań nadużywać palców.
Zathrus,

6
Um. Jestem trochę starym timerem. Ctrl-6 nie działałby z vi na terminalu Wyse, który miałem w pracy lata temu. Widzisz, niektóre rzeczy pozostają wyryte. I nieużywanie Shift w tej kombinacji nie miałoby większego wpływu na moje całkowite nadużycie palców. Hej, przynajmniej starałeś się jak najlepiej. HTH. DŁOŃ.
tzot

Przełącza się na tak zwany plik alternatywny .
jpaugh

5

Mam CTRL-W f do pracy.
To przygnębiające, że spędziłem tak długo na doskonaleniu map dla tych poleceń, aby odkryć, że istnieją wbudowane wersje.


5

Nie znam odpowiedzi na część 2 twojego pytania, ale mogę pomóc z częścią 1. Użyj

:e#

Vim utrzymuje listę plików (buforów), które edytuje. Jeśli wpiszesz

:buffers

wyświetli listę wszystkich plików, które aktualnie edytujesz. Plik na tej liście z% obok jest plikiem bieżącym. Ten ze znakiem # obok jest plikiem alternatywnym. : e # przełącza między bieżącym a alternatywnym plikiem. Zamiast tyle pisać, odwzorowuję F2 na: e #, dzięki czemu mogę łatwo przełączać między plikami bieżącymi i alternatywnymi. Mapuję polecenie na F2, dodając je do .vimrc

nmap `<F2> :e#<CR>`

2
Nie sądzę, że chcesz użyć: e #, ponieważ może to potencjalnie przeładować plik. : b # robi odpowiednik bez tego problemu.
lambacck

Słuszna uwaga. Przełącza się na drugi bufor bez ponownego ładowania.
codebunny


2

Po otwarciu nowego pliku (za pomocą gf lub : n lub innego polecenia) stary plik pozostaje na liście buforów. Możesz wyświetlić listę otwartych plików za pomocą : ls

Jeśli chcesz łatwo nawigować między buforami w vimie, możesz utworzyć takie mapowanie:

nmap <M-LEFT> :bN<cr>
nmap <M-RIGHT> :bn<cr>

Teraz możesz przełączać się między buforami za pomocą Alt + strzałka w lewo lub Alt + strzałka w prawo.

Pełna dokumentacja mapowań znajduje się tutaj:

:help map.txt

0

Nie spojrzałem na twoje polecenie gf, ale wyobrażam sobie, że używa polecenia : e lub : find .
Zakładając, że to prawda, wystarczy wymienić : E lub : znaleźć się : nowa (lub : vnew do rozłamu pionowej) oraz plik otworzy się w nowym oknie zamiast tego samego jednego.

na przykład

„Przełączaj między nagłówkiem a cpp
nmap, s: find%: t: ​​r.cpp <CR>
nmap, S: nowy%: t: ​​r.cpp <CR>
nmap, h: znajdź%: t: ​​rh <CR>
nmap, H: nowy%: t: ​​rh <CR>
nmap, F: nowy = rozwiń („<plik>: t”) <CR> <CR>
nmap, d: nowy = rozwiń („<plik>>) <CR> <CR> 


2
gfjest wbudowany. Należy do nas wszystkich. :-)
jpaugh
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.