Подтвердить что ты не робот

В Vim, что такое "альтернативный файл"?

Я только что запустил :help registers в Vim и заметил, что # 'содержит имя альтернативного файла.

Я видел пример для переименования файлов, который выглядит следующим образом:

" Save the current file, foo.txt, as bar.txt
:w bar.txt
" Start editing bar.txt
:e#

Таким образом, очевидно, что в этом случае файл, который вы только что сохранили, является "альтернативным файлом".

Может ли кто-нибудь дать мне более общее определение для "альтернативного файла" и для чего еще вы можете его использовать?

4b9b3361

Ответ 1

Альтернативный файл - это файл, последний раз редактировавшийся в текущем окне. Фактически, когда вы используете какую-либо команду для открытия нового буфера, если в буфере, который был отображен, есть имя файла, связанное с ним, это имя файла записывается как альтернативное имя файла.

См. :help alternate-file.

Ответ 2

Очень полезно для...

Вставка имени файла, который я только просматривал в текущем файле.

Вы можете использовать <C-R># для этого в режиме вставки или "#p в нормальном режиме.

Не полезно для...

Перепрыгивание назад и вперед между двумя файлами. Это делает работу очень хорошо, но это просто то, что мне обычно не нужно делать.

Даже в приведенном примере я бы использовал вместо :saveas bar.txt.

Пример:

Скажем, если вы выполняете немного программирования на C и хотите вызвать некоторую функцию. Вы не можете запомнить имя функции, поэтому вы помещаете метку в текущее местоположение mA и переходите к нескольким различным файлам с помощью тегов или grep, чтобы узнать, где функция объявлена ​​и что она на самом деле вызывала.

А - нашел его. Вы можете скопировать имя и вернуться к отметке yiw'A

Uh-oh - нам также нужно # включить файл! Легко - просто используйте альтернативный регистр имен файлов, чтобы вставить имя файла в... Gi#include"<C-R>#"

Будьте довольны тем, что вы избегаете отвлечения от необходимости вернуться к объявлению функции и скопировать имя файла через: let @"= @% или что-то подобное.

Что я предпочитаю делать при переходе между файлами:

  • При редактировании двух файлов, возможно, проще их разделить, поэтому вы можете одновременно сохранять оба экрана. Если я редактирую 2 файла, я обычно их каким-то образом сравниваю.
  • Обычно меня интересуют 1-3 файла (и я смущаюсь). Я часто впадаю в или открываю много других файлов. Маркировка интересных файлов или перемещение списка переходов обычно является способом обойти в этом случае.
  • Если вы редактируете C/С++, где вы переключаетесь между файлом и заголовком, используйте плагин! Это будет намного удобнее.

Ответ 3

Я использую его в контексте буфера, чтобы вернуться в последний буфер, который я редактировал.

vim foo bar 
:n 
:e#

вернет вас в foo в этом случае

Ответ 4

Я всегда интерпретировал "альтернативный файл" как "предыдущий файл", поэтому это удобный способ вернуться к буферу, который вы редактировали.