Відповіді:
Я впевнений, що є інші способи зробити це ... але головна команда, яку ви хочете, - це те, :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>відображається як команда повтору?