2014-12-12 2 views
0

Есть ли способ только скопировать/вывести имя файла в буфер обмена? Согласно этим источникам:
Yank file name/path of current buffer in Vim
How can I expand the full path of the current file to pass to a command in Vim?
Get name of the current file in Vim
ясно, что expand() функция использовать и следующее может быть определена:Скопируйте только имя файла без расширения в системный буфер обмена

" Full path 
nnoremap <leader><leader>f :let @* = expand("%:p")<CR> 
" File name, with extension. 
nnoremap <leader><leader>n :let @* = expand("%:t")<CR> 
" Extension. 
nnoremap <leader><leader>e :let @* = expand("%:t:e")<CR> 
" Parent directory, full. 
nnoremap <leader><leader>p :let @* = expand("%:p:h")<CR> 

Однако я не нашел способ копирования только имя файла. Я имею в виду имя файла без расширения. Это вообще возможно? Я попробовал "%" и "%:. Ничего не сработало.

+2

Что вы хотите сделать в Unix, если файл не имеет расширения? Что, если имя файла * является * расширением (например, файл называется '.txt')? – Kevin

+0

@Kevin: Ну, поскольку Vim чувствителен к регистру, я зарезервирую ' N' для копирования имени файла с расширением, используя' '%: t" '. Этот параметр скопирует имя файла, на котором не добавлено расширение. (Как '_vimrc' на моей машине Window) – llinfeng

ответ

4
expand("%:t:r") 

делает то, что вы хотите, но Кевин поднял очень хорошие моменты.

См. :help filename-modifiers.

+0

Благодарим вас за это. Для точки @ Кевина, как я протестировал в Windows, 'expand ("%: t ")' скопирует имя файла '_vimrc', что именно то, что он желал. Для Linux я так считаю. – llinfeng

Смежные вопросы