После некоторых поисков я узнал, :echo @%
отображает текущее имя файла в нижней строке vim-screen.
Я хотел бы сбросить имя файла (с и без полного пути) в содержимое файла, не выходя vim
.
Есть какой-либо способ сделать это?
Я уверен, что есть другие способы сделать это ... но основная команда, которую вы хотите, - :r[ead]
это вставка вывода команды в буфер.
Итак, чтобы вставить только имя файла:
:r! echo %
И, чтобы включить полный путь:
:r! echo %:p
Для получения дополнительной информации:
:help read
:help filename-modifiers
Текущее имя файла находится в "%
регистре, поэтому вы можете вставить его (в режиме вставки) с помощью <c-r>%
; полный путь можно вставить с помощью <c-r>=expand("%:p")
. Вы можете сделать макрос из этого, если вы используете его часто. Для более похожих трюков смотрите :h expand
и :h "=
.
<c-r>
отображается как команда повтора?<c-r>
указывает, что следующий символ является регистром."%p
в обычном или визуальном режимах.Как видно из этого
:h registers
,"%
регистр содержит текущее имя файла. Команда:pu[t]
вставляет содержимое регистра в текст.Таким образом, чтобы вставить фактическое имя файла, вы можете ввести любой из них в командном режиме:
или
Чтобы вставить имя файла с полным путем, введите
в командном режиме.
Больше информации:
Набрав
"rp
можно вставить содержимое реестра"r
.источник
:put "%:p"
Не похоже на работу для меня. Кажется, он работает только с расширением () , как в:,:put =expand('%:p')
что делает его не намного менее громоздким, чем,<c-r>=expand('%:p')
к сожалению.Простой способ - запустить:
!!
заменяет текущую строку результатом команды, следующей за ней.%
заменяется именем отредактированного файла в команде, так что это фактически вставит это имя в отредактированный файл.Это имя файла, которое вы передали команде vi (m), и может содержать относительный или абсолютный путь. Если вы хотите удалить его и сохранить только имя файла, запустите
источник
Если вам нужно делать это часто, может быть полезно связать последовательность клавиш с тем, что вы хотите, в соответствии с http://vim.wikia.com/wiki/Insert_current_filename
Все вышеперечисленное работает непосредственно
vim
для сеанса, или вы можете поместить его в.vimrc
(где начальное двоеточие в строке необязательно).источник
Я гуглил самый простой способ вставить текущее имя файла (без пути или расширения) в текущую позицию (без новой строки, без замены текущей строки). Таким образом, объединяя предыдущие ответы и эту ссылку , это то, что я искал.
В режиме вставки :
Затем в следующий раз (с командой уже в истории):
источник