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