Як ти повертаєшся з 'gf' у Vim


187

Я використовую Vim для вікон, встановлених в режимі Unix. Завдяки цьому сайту я тепер використовую gfкоманду для переходу до файлу під курсором.

Я шукаю команду для:

  1. повернутися до попереднього файлу (аналогічно Ctrl+ Tдля ctags), або
  2. перезавантажити, gf щоб автоматично запустити новий файл у новому вікні.

Відповіді:


294

Я використовую Ctrl-O


43
CTRL-O для переходу до старшої позиції у списку стрибків, <Tab> або CTRL-I для переходу на нову позицію.
Sébastien RoccaSerra

4
@ g33kz0r мнемонічне було б O = OUT, I = IN => Ctrl - O виводить вас, Ctrl приносить вас. Якщо кожен стрибок - це як пройти через двері, тобто.
kronn

CTRL-O перейде на останню відвідувану позицію, це дратує, коли шукали новий файл. Я віддаю перевагу Shift-Ctrl-6 (у моєму випадку Ctrl-6 не працює)
Адріано

71

Я часто використовую Ctrl- 6для цього.

Це зручно, оскільки дозволяє мені швидко переходити між двома файлами.


47

Ви можете скористатися CTRL-W gfдля відкриття файлу на новій вкладці.

Ви можете закрити щойно відкритий файл, як завжди :bd, або використовувати CTRL-6інші звичні способи зміни буферів.


7
вкладка для мене зручніше, ніж буфер, і використання nnoremap gf <C-W>gfдля відкриття в новій вкладці може бути краще.
Searene

13

Використовуйте gf, щоб спуститися у файл і використовуйте: bf, щоб повернутися назад


1
У мене було відкрито два вікна на вкладці, і це тільки що відкрило друге вікно в першому замість того, щоб перейти назад до попереднього буфера.
Кенні Евітт

12

Просто скористайтеся :e#подальшим текстом Enter- що в основному говорить, щоб редагувати останній (останній) файл.


9

Ctrl-Shift-6 - це один.

:e#↲ інша.


8
Зміна не потрібна. Перестаньте зловживати пальцями.
Затрус

6
Гм. Я такий собі старий таймер. Ctrl-6 не працюватиме з vi на терміналі Wyse, який я мав на роботі років тому. Дивіться, деякі речі залишаються травленими. І не використовувати Shift у цій комбінації навряд чи змінить моє загальне зловживання пальцем. Гей, принаймні ти постарався з усіх сил. HTH. РУКА.
tzot

Це переходить до того, що називається альтернативним файлом .
jpaugh

5

Я працював CTRL-W f.
Це досить гнітюче, що я витратив так довго вдосконалюючи карти для цих команд, лише щоб виявити, що є вбудовані версії.


5

Я не знаю відповіді на частину 2 вашого запитання, але я можу допомогти у частині 1. Використовуйте

:e#

Vim підтримує список файлів (буферів), які він редагує. Якщо ви введете

:buffers

він перелічить усі файли, які ви зараз редагуєте. Файл у цьому списку з% біля нього - це поточний файл. Той, який є поряд із #, - це альтернативний файл. : e # переключиться між поточним та альтернативним файлом. Замість того, щоб набрати стільки, я картографую F2 на: e #, щоб я міг легко переходити між поточним та альтернативним файлами. Я зіставляю команду на F2, додаючи це до .vimrc

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

2
Я не думаю, що ви хочете використовувати: e # тому що це може потенційно перезавантажити файл. : b # робить еквівалент без цієї проблеми.
lambacck

Гарна думка. Він переходить на інший буфер, не завантажуючи його.
codebunny


2

Коли ви відкриєте новий файл (з gf або : n або іншою командою), старий файл залишається у списку буферів. Ви можете перелічити відкриті файли за допомогою : ls

Якщо ви хочете легко переходити між буферами vim, ви можете створити відображення таким чином:

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

Тепер ви можете перемикатися між буферами за допомогою Alt + стрілка вліво або Alt + стрілка праворуч.

Повна документація щодо відображень карт тут:

:help map.txt

0

Я не переглянув вашу команду gf, але думаю, що вона використовує команду : e або : find .
Припустивши, що це правильно, просто замініть : e або : find на : new (або : vnew для вертикального розщеплення), і файл відкриється у новому вікні замість того самого.

напр

"Перемикання між заголовком і cpp
nmap, s: знайти%: t: ​​r.cpp <CR>
nmap, S: new%: t: ​​r.cpp <CR>
nmap, h: знайти%: t: ​​rh <CR>
nmap, H: new%: t: ​​rh <CR>
nmap, F: new = розширити ("<cfile>: t") <CR> <CR>
nmap, d: new = розширити ("<cfile>") <CR> <CR> 


2
gfвбудований. Він належить усім нам. :-)
jpaugh
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.