3

Я пытаюсь создать сопоставление ключей vim, которое будет инициировать создание нового файла с именем файла с префиксом текущей даты, ожидая, когда я закончу набирать имя файла.

Точнее говоря, я хочу нажать <Leader>n , и у меня vim enter для меня в командной строке:

:new 2014-08-05- ... ждет, когда я закончу имя файла и нажму <CR> .

Как я могу это сделать? Я попробовал это, но это не совсем то, что я ожидал, так как просто повторил дату. Как я могу получить vim для динамического добавления символов в командную строку? Я что-то упустил?

function! NewNotesFile()
    echon ":new " . strftime("%F")
endfunction

nnoremap <Leader>n :call NewNotesFile()<CR>

2 ответа2

4

Есть два способа. Вы можете просто вставить результат выражения в командную строку с помощью :help c_CTRL-R:

:nnoremap <Leader>n :new <C-r>=strftime('%F')<CR>

Это отображение отражает, как вы бы сделали это в интерактивном режиме. Кроме того, вы можете оценить правую часть сопоставления с помощью :help map-expr:

:nnoremap <expr> <Leader>n ':new ' . strftime('%F')
3

Используя c_CTRL-\_e (это тег справки, поэтому смотрите :h c_CTRL-\_e если что-то кажется неясным), например:

nnoremap <Leader>n :<C-\>e"new " . strftime("%F")<CR>

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .