Как я могу вызвать путь к текущему файлу в командной строке, чтобы ввести аналогичное имя файла? Я не хочу аббревиатуру, которая будет заменена текущим именем файла, я хочу отредактировать имя файла вместе с путем к каталогу. Например, я хочу :edit
файл с похожим именем или в аналогичном каталоге, например
vim src/submodule/frontend/frobnicate2.c
и теперь я хочу редактировать ../trunk/src/submodule/frontend/frobnicate.c
, и я только хочу вставить ../trunk
и удалить 2
, а не перепечатывать полный путь.
Я, конечно, могу вернуться к оболочке и использовать историю команд, или я могу скопировать и вставить путь через графический интерфейс, но я ищу более эффективный способ, который не требует выхода из Vim.
источник
Ctrl-r =expand('%:p')
. Это использует регистр = .Если вы установили
path
переменную vim , вы обладаете всей мощью:find
команды, а именно завершением табуляции имен файлов (без необходимости указывать часть каталога!)В вашем случае что-то вроде
может быть, все, что вам нужно для
:fin frob<tab>
работы. Для окровавленных деталей,:help find
,:help file-searching
.источник
Вот карта, которую вы можете попробовать:
Это сохраняет текущую команду, а затем устанавливает регистр 'a' в имя текущего файла. Затем последняя команда вызывается и добавляется с содержимым регистра «a». Конечно, если у вас есть что-то полезное в регистре 'a', это перезапишет это.
Вы можете изменить сопоставленные символы на что-то другое. Мне нравится использовать клавишу Alt, но она не работает в некоторых терминалах.
Как указал Carpetsmoker в своем ответе, вы можете изменить вызов функции на
заставить полный путь.
источник
a
. Попробуйте что-то вроде этого:cnoremap <M-q> <C-r>=fnameescape(expand('%:p'))<CR>