После некоторых поисков я узнал, :echo @%отображает текущее имя файла в нижней строке vim-screen.
Я хотел бы сбросить имя файла (с и без полного пути) в содержимое файла, не выходя vim.
Есть какой-либо способ сделать это?
После некоторых поисков я узнал, :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>указывает, что следующий символ является регистром.
"%pв обычном или визуальном режимах.
Как видно из этого :h registers, "%регистр содержит текущее имя файла. Команда :pu[t]вставляет содержимое регистра в текст.
Таким образом, чтобы вставить фактическое имя файла, вы можете ввести любой из них в командном режиме:
:put %
или
"%p
Чтобы вставить имя файла с полным путем, введите
:put=expand('%:p')
в командном режиме.
Больше информации:
:h pu[t]
Набрав "rpможно вставить содержимое реестра "r.
:put "%:p"Не похоже на работу для меня. Кажется, он работает только с расширением () , как в:, :put =expand('%:p')что делает его не намного менее громоздким, чем, <c-r>=expand('%:p')к сожалению.
Простой способ - запустить:
!!echo %
!! заменяет текущую строку результатом команды, следующей за ней.
% заменяется именем отредактированного файла в команде, так что это фактически вставит это имя в отредактированный файл.
Это имя файла, которое вы передали команде vi (m), и может содержать относительный или абсолютный путь. Если вы хотите удалить его и сохранить только имя файла, запустите
!!basename %
Если вам нужно делать это часто, может быть полезно связать последовательность клавиш с тем, что вы хотите, в соответствии с http://vim.wikia.com/wiki/Insert_current_filename
вставляет текущее имя файла без расширения в позиции курсора, когда вы находитесь в режиме вставки.
:inoremap \fn <C-R>=expand("%:t:r")<CR>Чтобы сохранить расширение используйте:
:inoremap \fn <C-R>=expand("%:t")<CR>Чтобы вставить абсолютный путь к каталогу, файл используется:
:inoremap \fn <C-R>=expand("%:p:h")<CR>Чтобы вставить относительный путь к каталогу, файл используется:
:inoremap \fn <C-R>=expand("%:h")<CR>
Все вышеперечисленное работает непосредственно vimдля сеанса, или вы можете поместить его в .vimrc(где начальное двоеточие в строке необязательно).
Я гуглил самый простой способ вставить текущее имя файла (без пути или расширения) в текущую позицию (без новой строки, без замены текущей строки). Таким образом, объединяя предыдущие ответы и эту ссылку , это то, что я искал.
В режиме вставки :
<C-R>=expand("%:t:r")
Затем в следующий раз (с командой уже в истории):
<C-R>=<UP>
<c-r>отображается как команда повтора?