Как показать время в строке состояния после записи в vim? - PullRequest
4 голосов
/ 16 февраля 2011

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

Спасибо!

Ответы [ 2 ]

4 голосов
/ 16 февраля 2011

Посмотрите на вариант 'statusline'.Это позволяет полностью настроить то, что отображается в строке состояния.

:help 'statusline'

Вы можете либо создать функцию, которая создает всю строку состояния, либо использовать %{}, чтобы сделать ее часть результатомстрока функции.

%{strftime('%c',getftime(expand('%')))}

должна давать «время модификации» текущего файла.

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

 :help function-list
 :help strftime()
 :help getftime()
 :help expand()
 :help :function
3 голосов
/ 16 февраля 2011

Так вот, чем я закончил, в основном благодаря направлению Ала:

:hi User1 term=NONE cterm=NONE ctermfg=Magenta ctermbg=Black
:set laststatus=2 
:set statusline=%1*%F%h%m%w\ [Time:\ %{strftime(\"%H:%M\")}]\ [Mod\ Time:\ %{strftime(\"%H:%M:%S\",getftime(expand(\"\%\%\")))}]%=\ [%p%%]\ [%l/%L]

Описание:

:hi User1 term=NONE cterm=NONE ctermfg=Magenta ctermbg=Black

Эта команда устанавливает цвет фона профиля с именем user1 равным черномуи слово цвет, равный пурпурному.То, что мы делаем, это делаем строку состояния равной этому профилю, чтобы мы могли изменить цвет нашей строки состояния.

:set laststatus=2 

Эта команда делает строку состояния видимой постоянно, помещая ее двумя строками внизу.команды vim.

:set statusline=%1*%F%h%m\ [Time:\ %{strftime(\"%H:%M\")}]\ [Mod\ Time:\ %{strftime(\"%H:%M:%S\",getftime(expand(\"\%\%\")))}]%=\ [%p%%]\ [%l/%L]

Это команда, которая на самом деле показывает, что будет в строке состояния.В этой команде мы используем несколько функций (например, strftime, expand ...), специфичных для vim.Мы также используем% (букву) для обозначения определенных переменных vim.Остальная часть текста просто печатает то, что вы пишете на экран с помощью \, а затем пробел, чтобы представить пробел.Теперь, чтобы описать конкретные переменные.

  • %1* - это переменная, соответствующая цвету, который мы указали в первой команде, строка состояния устанавливается равной этим цветам
  • %F%h%m говорит, что отображать полныйИмя файла, флаг файла справки и измененный флаг
  • [Time:\ %{strftime(\"%H:%M\")}]\ говорят о том, что отображается [Время: (текущее время)] и отображается в часах и минутах.Если вы хотите использовать другой формат времени, например, возможно, включить год или что-то еще, сделайте: help strftime.
  • [Mod\ Time:\ %{strftime(\"%H:%M:%S\",getftime(expand(\"\%\%\")))}] сообщает display [Mod Time: (mod time)].В часах: минутах: секундах.
  • %=\ [%p%%]\ [%l/%L] говорит о выравнивании по правому краю и показывает процент файла, через который вы прошли, и [(номер текущей строки) / (номер строки максимальный)].
...