В Vim, что такое "альтернативный файл"?
Я только что запустил :help registers
в Vim и заметил, что #
'содержит имя альтернативного файла.
Я видел пример для переименования файлов, который выглядит следующим образом:
" Save the current file, foo.txt, as bar.txt
:w bar.txt
" Start editing bar.txt
:e#
Таким образом, очевидно, что в этом случае файл, который вы только что сохранили, является "альтернативным файлом".
Может ли кто-нибудь дать мне более общее определение для "альтернативного файла" и для чего еще вы можете его использовать?
Ответы
Ответ 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
Я всегда интерпретировал "альтернативный файл" как "предыдущий файл", поэтому это удобный способ вернуться к буферу, который вы редактировали.