4

В Vim, когда я нахожусь в режиме вставки и хочу использовать завершение имени файла, я хочу, чтобы путь поиска был относительно текущего файла, а не текущего рабочего каталога. Например, если в режиме вставки я набираю следующее:

./ ^ X ^ F

Меню завершения показывает мне файлы в :pwd, но я бы предпочел видеть файлы в %:p:h списке.

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

2 ответа2

11

если ты

:set autochdir

вы получите поведение, которое вы желаете. Однако, если вам нужно сохранить рабочий каталог (например, чтобы легко открывать другие файлы проекта), вам придется сохранить / восстановить CWD с помощью autocmds:

:autocmd InsertEnter * let save_cwd = getcwd() | set autochdir
:autocmd InsertLeave * set noautochdir | execute 'cd' fnameescape(save_cwd)
2

Ответ @ Ingo Karkat хорош, но я не решаюсь добавить это в мой vimrc, потому что даже страница справки для 'autochdir' указывает, что его использование сломает некоторые плагины.

Я придумал собственное решение, которое может быть очень нишевым для моих сценариев использования:

inoremap ./<CX> <CF> <CO> :lcd %:p:h <CR> <CX> <CF>

Я планирую извлечь его в функцию и установить переменную для pwd перед выполнением команды lcs, а затем сбросить ее в некоторый момент времени. Было бы неплохо, если бы было меню autocmd.

Я могу или не могу использовать это, но я думал, что выкину другое решение.

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