В Vim что такое "альтернативный файл"? - PullRequest
33 голосов
/ 03 марта 2011

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

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

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

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

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

Ответы [ 4 ]

24 голосов
/ 03 марта 2011

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

См. :help alternate-file.

17 голосов
/ 04 марта 2011

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

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

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

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

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

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

AnПример:

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

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

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

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

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

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

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

vim foo bar 
:n 
:e#

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

4 голосов
/ 03 марта 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...