Відкрити ім'я файлу під курсором, наприклад, gf, але на новій вкладці (або розділити)?


43

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

Але це робиться в поточному вікні, замінюючи поточний текст. Це означає, що вам потрібно явно перейти назад, щоб пізніше повернутися назад, і що вам потрібно записати зміни в поточний буфер.

Я впевнений, що можливо, відкривши файл під курсором у новому перегляді вкладки?


3
Якщо ввімкнути 'hidden'параметр ( set hidden), ви можете перейти від збережених буферів. Для мене це був величезний приріст продуктивності, і це було життєво важливо, щоб так не покладатися на розбивки та вкладки.
tommcdo

Відповіді:


56

EDIT: Запропонуйте добре симетричні відображення для вертикального розбиття, оскільки Vim за замовчуванням має два відображення для горизонтального розділеного випадку.

Існує кілька способів відредагувати "файл під курсором", і хоча ви, звичайно, можете перезавантажити gfредагування на новій вкладці, як згадує @ alexander-myshov, це означає, що у вас є два способи редагувати його на новій вкладці, але ніяк не можна відредагуйте його у поточному вікні, що ви також можете іноді зробити. Використовувати стандартні зіставлення не важко, але якщо ви хочете перезавантажити одне з них gf, я б запропонував переключити відображення, щоб ви не втратили жодне з них.

Деякі способи редагування імені файлу під курсором є

  • gf - Відредагуйте наявний файл під курсором у цьому ж вікні
  • C-Wf - Відредагуйте існуючий файл під курсором у розділеному вікні
  • C-WC-F - Відредагуйте існуючий файл під курсором у розділеному вікні
  • C-Wgf - Відредагуйте існуючий файл під курсором на новій вкладці

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

  • C-Wv+ gf- Редагувати існуючий файл під курсором у вертикально розділеному вікні

Як ви бачите вище, є два відображення за замовчуванням для редагування файлу під курсором у горизонтальному розділенні. Таким чином, ви можете перевстановити один із них у рядок ключових рядків, розширивши групу карт, щоб також охопити вертикальний розділений регістр. Ви можете зв'язати що - небудь, звичайно, але це , здається , щоб закінчити симетрію красиво: nnoremap <C-W><C-F> <C-W>vgf. Тепер у вас є

  • gf - Відредагуйте наявний файл під курсором у цьому ж вікні
  • C-Wf - Відредагуйте існуючий файл під курсором у розділеному вікні
  • C-WC-F - Відредагуйте наявний файл під курсором у вертикально розділеному вікні
  • C-Wgf - Відредагуйте існуючий файл під курсором на новій вкладці

Ви також можете перейти до певного рядка у файлі, якщо за ім'ям файлу під курсором слідує номер рядка. Якщо у вас є

filename:10

ви можете відредагувати файл і перемістити курсор до рядка 10 gF. Еквівалент справедливий для C-WFрозділення та C-WgFдля вкладки. Виконання симетрії для вертикального розщеплення тут не так просто, але я б запропонував, щоб C-WC-S-Fкарта, отримана за допомогою nnoremap <C-W><C-S-F> <C-W>vgF, імітуючи Fабо Shift+ fз карт за замовчуванням, як кандидат.

:Приклад, ви можете використовувати будь-який символ , який не є ім'я файлу символів (див :h 'isfname').


Всі ці команди поставляються з яблучним соусом, наприклад

  • розширити дикі тварини
  • шукати в інших місцях, ніж поточний каталог, відповідно до вашого 'path'варіанту
  • додавання розширення до імені файлу, відповідно до вашого 'suffixesadd'варіанту
  • в іншому випадку змініть вказане ім’я фільму, щоб знайти відповідність, відповідно до вашого 'includeexpr'варіанту

Прочитайте більше на :help gfта довідкові теми для цих різних варіантів.


Якщо ім'я файлу під курсором називає файл, який не існує, можливо, вам буде краще використовувати стандартні команди редагування за допомогою <cfile>, наприклад

:edit <cfile> // edit non-existent file under cursor in current window
:split <cfile> // edit non-existent file under cursor in split window
:vsplit <cfile> // edit non-existent file under cursor in vertical split window
:tabe <cfile> // edit non-existent file under cursor in new tabpage

і, звичайно, можна використовувати такі речі, як :spl+10 filenameпереміщення курсору до певної лінії або :tabe+/cologne filenameпереміщення курсору до першого появи шаблону.


+1 Найкращий коментар із чітким поясненням, набагато кращий за документацію, розділену на кілька тем.
Любить ймовірність

8

Просто використовуйте прив'язки для цього:

відкриття у новому вікні (розділення):

nnoremap gf <C-W>f
vnoremap gf <C-W>f

відкриття в новій вкладці:

nnoremap gf <C-W>gf
vnoremap gf <C-W>gf

також перевірте це: :help CTRL-W_gf


Ці остаточно працюють для вас? Vim, схоже, не хоче, щоб я перевзявся gfна щось інше. Навіть по- nnoremap gf :echo "hello"<CR> , як і раніше відкриває файл під курсором в новому буфері (і так, я соерсед vimrc).
tandrewnichols

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