VIMRC код для вставки пути текущего файла в верхней части файла? - PullRequest
2 голосов
/ 04 апреля 2019

Я хочу добавить (или обновить, если имеется) путь к текущему файлу, над которым я работаю, вверху этого файла.

Например, если я помещу File: рядом с вершинойфайла, который я редактирую в vim (neovim), я хочу автоматически обновить эту строку путем указания пути и имени файла файла, который я редактирую;например,

File: /mnt/Vancouver/this_file.sh

Если это поможет, у меня есть следующее в моем файле .vimrc, который автоматически добавляет дату после строки Last modified: (если присутствует) в верхней части моегофайл, в любое время я сохраняю этот буфер.(Положение курсора также автоматически восстанавливается через keepjumps.)

" http://vim.wikia.com/wiki/Insert_current_date_or_time 
" If buffer modified, update any 'Last modified: ' in the first 30 lines.
" 'Last modified: ' can have up to 10 characters before (they are retained).
" Restores cursor and window position using save_cursor variable.

function! LastModified()
  if &modified
    let save_cursor = getpos(".")
    let n = min([30, line("$")])
    keepjumps exe '1,' . n . 's/^\(^Last modified: \).*/\1' .
          \ strftime('%Y-%m-%d') . '/e'
    call histdel('search', -1)
    call setpos('.', save_cursor)
  endif
endfun
autocmd BufWritePre * call LastModified()

" TEST:
" Last updated: 
" (indented line below: should not update)
"  Last modified: 
" Last modified: 2018-11-21

1 Ответ

3 голосов
/ 05 апреля 2019

Следующая функция добавляет полный путь к файлу (%:p), если первая строка файла начинается с File:

autocmd! insertleave * call PutPath()                                     
function! PutPath()                                                      
    let file=expand("%:p")                                               
    silent! execute '1s@^File:$@& '.file                                 
endfunction         

Подстановка выполняется автоматически при выходе из режима вставки (autocmd insertleave) и после File:.

не должно быть завершающих пробелов.
...