VIM: как обновить текст при сохранении - PullRequest
2 голосов
/ 09 марта 2011

Я пытаюсь привыкнуть использовать один редактор (gVim 7.3 для Windows XP) для всех задач программирования и разработки.

Я бы хотел обновить заголовок в любом открытом файле при сохранении с помощью: w

Заголовок выглядит так (в файле C):

/* Filename: hello.c
 * Filesize: 345 bytes
 * Last Modified: Fri Feb 25, 2011  01:55PM
 */

Я уже выяснил, как обновить Last Modified, включив в файл _vimrc следующее:

" If buffer modified, update any 'Last modified: ' in the first 20 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([20, line("$")])
    keepjumps exe '1,' . n . 's#^\(.\{,10}Last Modified:\).*#\1' .
          \ strftime(' %a %b %d, %Y  %I:%M%p') . '#e'
    call histdel('search', -1)
    call setpos('.', save_cursor)
  endif
endfun

autocmd BufWritePre * call LastModified()   

У меня такой вопрос, используя аналогичный подход, как я могу также обновить Filename и Filesize? Спасибо за вашу помощь.

Ответы [ 2 ]

3 голосов
/ 10 марта 2011

Не делайте этого вообще.

Ваша система контроля версий хранит ту же информацию.Если вы не используете его, начните.

1 голос
/ 09 марта 2011

Вы можете добавить текущее имя файла, используя @%:

keepjumps exe '1,' . n . 's#^\(.\{,10}Filename:\).*#\1' .
      \ ' ' . @% . '#e'

Хотя понятия не имеете о размере файла.

Не говоря уже о том, что вы действительно будете изменять файлРазмер, добавив размер файла, так что это может быть невозможно получить право.

...