2

Согласно "Practical Vim" и справке Vim, ярлык <C-^> должен вернуть меня в отредактированный файл. Я вхожу в NetRW, используя :E

В качестве эксперимента я попытался переназначить ярлык по умолчанию следующим образом:

:nnoremap <C-y> <C-^>

Как только я использую <C-y> я получаю обратную связь:

E23: No alternate file

... но я не вернусь к отредактированному буферу.

Как я могу вернуться в отредактированный буфер, или, если на то пошло, как я могу отладить эту проблему, чтобы выяснить, что мешает мне вернуться к ней в соответствии с документированной процедурой?

NB. Я устанавливаю сопоставление в командной строке, а не в .vimrc .

2 ответа2

4

Альтернативный файл - это, фактически, буфер, который был открыт ранее в том же окне:

:e file1
:e file2
<C-^> shows file1
<C-^> shows file2
<C-^> shows file1
…

<C-^> используется для быстрого переключения между двумя буферами в одном окне.

У вас может не быть "альтернативного файла", к которому можно перейти (вероятно, вещь netrw, которая на самом деле не имеет смысла для меня), и <C-^> здесь бесполезен.

Вместо этого используйте :bd который удаляет текущий буфер (netrw) и возвращает вас в предыдущий буфер. Обратите внимание, что вы можете использовать :Rex чтобы в любой момент вернуться к последнему окну netrw.

Если вы не открываете файлы (вы используете netrw для поиска какой-либо информации), ваш рабочий процесс может быть:

:Ex
(exploration)
:bd
if you want to start a new exploration,
    :Ex
    :bd
if you want to explore from where you were,
    :Rex
    :bd

Тем не менее, вы должны прочитать :h netrw потому что он имеет больше команд, которые, вероятно, вам сильно помогут :Hex[plore] (открывает netrw в горизонтально разделенном окне),: :Vex[plore] (открывает netrw в вертикально разделенном окне), :Tex[plore] (открывает netrw в новой вкладке)… Эти команды позволят вам перейти в ваше сафари, сохраняя некоторое "состояние".

В качестве альтернативы <C-o> и <C-i> - два удобных ярлыка, которые позволяют вам перемещаться вверх и вниз по списку переходов. В вашей ситуации <C-o> может быть самым быстрым способом возврата к предыдущему буферу.

0

Я не понимаю, как это связано с E23 ; вы должны получить ту же ошибку с оригинальной командой <C-^> . Возможно, альтернативный файл еще не установлен; некоторые плагины также явно используют команду :keepalt чтобы избежать записи изменения буфера.

Вы можете проверить альтернативное имя файла через

:echo expand('#')

или в выводе :ls найдите строку с символом # .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .