Поиск истины значительно ценнее, чем обладание ею (Г. Лессинг).

Как отобразить временные метки отмены и повторной отмены в строке состояния Vim с помощью vim-airline

01.05.2025
Как отобразить временные метки отмены и повторной отмены в строке состояния Vim с помощью vim-airline

Vim — это мощный текстовый редактор с поддержкой клавиатуры и широкими возможностями настройки. Но по умолчанию он не показывает историю редактирования. Если вы когда-либо нажимали u или <Ctrl-r> и задавались вопросом, что именно изменилось и когда, вы не одиноки. К счастью, с помощью нескольких простых настроек в файле .vimrc и плагина vim-airline вы можете отображать временные метки отмены и повтора в реальном времени прямо в строке состояния Vim.

В этой статье мы обсудим, как:

  • Подсчитайте и отобразите статистику количества отмен и повторов
  • Показывает, когда в последний раз была запущена отмена или повтор
  • Интегрируйте эти показатели в динамическую строку состояния Vim, используя vim-airline.

Зачем отслеживать отмену и повтор в Vim?

В Vim есть встроенная поддержка отмены (u) и повтора (<Ctrl-r>), но по умолчанию она не показывает никаких результатов. Вы нажимаете клавишу, что-то меняется, но нет ни метки времени, ни счётчика, ни записи о том, что произошло.

Отслеживание действий по отмене и повтору помогает несколькими ключевыми способами:

  • Осведомленность: Точно знайте, когда было отменено последнее изменение.
  • Управление: посмотрите, сколько раз вы отменяли или повторяли действие.
  • Обратная связь: Получите подтверждение того, что ваша команда отмены / повтора что-то сделала.

 

Настроив vim-airline для отображения временных меток отмены и повторной отмены, вы сможете легко отслеживать, когда были отменены/повторно отменены изменения и сколько раз вы отменяли/повторно отменяли действия.

На следующих этапах мы узнаем, как интегрировать эту функцию в нашу версию Vim.

 

Предварительные условия

Прежде чем приступить к выполнению этого руководства, убедитесь, что у вас есть следующее:

  • Vim или Neovim установлены в вашей системе.
  • vim-plug или vundle или любой другой менеджер плагинов для простой установки плагинов Vim.
  • Базовое понимание того, как редактировать файлы конфигурации Vim (например, .vimrc или init.vim).

 

Установите vim-плагин авиакомпании

vim-airline — это лёгкий и простой в использовании плагин для строки состояния Vim. Он предоставляет настраиваемую строку состояния, которая легко интегрируется с другими плагинами Vim.

Для начала давайте установим vim-airline.

 

Читать  Как указать имя файла с пробелами в Linux

1. Откройте файл конфигурации:

Для Vim:

vim ~/.vimrc

 

Для Neovim:

nvim ~/.config/nvim/init.vim

 

2. Добавьте настройку плагина vim-plug:

Внутри файла добавьте следующие строки:

call plug#begin('~/.vim/plugged')
Plug 'vim-airline/vim-airline'
call plug#end()

 

Эти строки сообщают vim-plug:

  • Начните загружать плагины (plug#begin).
  • Загрузить vim-airline с GitHub.
  • Прекратите загрузку плагинов (plug#end).

 

Сохраните файл и закройте его, набрав :wq и нажав клавишу ENTER.

 

3. Установите плагин

После сохранения файла откройте Vim (или Neovim) и выполните:

:PlugInstall

 

После установки vim-airline автоматически заменит строку состояния в Vim.

Вот как выглядит строка состояния после установки и включения vim-airline:

Как отобразить временные метки отмены и повторной отмены в строке состояния Vim с помощью vim-airline

Строка состояния Vim

 

Как видите, плагин vim-airline добавил в редактор Vim аккуратную строку состояния.

По умолчанию vim-airline отображается такая информация, как:

  • Раздел A: Режим Vim (например, NORMALINSERT)
  • Раздел B: Состояние окружающей среды (информация VCS)
  • Раздел C: имя файла и флаги (например, изменено +, только для чтения RO)
  • Раздел X: Тип файла (vim)
  • Раздел Y: Кодировка файла
  • Раздел Z: Текущее время или информация о линии

 

Отображение меток отмены и повторной отмены в Vim с помощью vim-airline

Откройте свой .vimrc или init.vim файл:

vim .vimrc

Добавьте следующие строки в конце:

" ----------------------------
" Настройка отслеживания отмены/повторения
" ----------------------------
let g:undo_count = 0
let g:redo_count = 0
let g:last_undo_time = ""

" Сопоставьте 'u' для обновления счетчика отмены и метки времени
nnoremap  u :let g:undo_count += 1 \| let g:last_undo_time = strftime("%Y-%m-%d %H:%M:%S") \| normal! u


" Настройте Ctrl-r для обновления счетчика повторов и метки времени
nnoremap   :let g:redo_count += 1 \| let g:last_undo_time = strftime("%Y-%m-%d %H:%M:%S") \| redo

«Отобразить статистику отмены и повтора в разделе X авиакомпании
let g:airline_section_x = '%{g:last_undo_time != "" ? g:last_undo_time . " (undos:" . g:undo_count . ", redos:" . g:redo_count . ")" : strftime("%H:%M:%S")}'

 

Введите :wq и нажмите ENTER, чтобы сохранить файл и закрыть его. С этого момента, если произойдёт отмена или повторная обработка, в строке состояния отобразится что-то вроде этого:

2025-04-29 16:33:10 (undos: 3, redos: 1)

 

Тестирование Вашей конфигурации

 

Для проверки просто откройте любой файл. В режиме вставки введите несколько строк текста.

This is first line.
This is second line.
This is third line.

 

Читать  Установите и используйте Hex-редактор в Kali Linux 2020

Затем выйдите из режима вставки и нажмите u для отмены строки и <Ctrl-r> для повторного выполнения.

Следите за обновлением строки состояния vim-airline с новыми показателями и отметками времени. В правой части строки состояния вы должны увидеть отметку времени, например:

2025-04-29 17:00:17 (undos:2, redos:2)

 

Как отобразить временные метки отмены и повторной отмены в строке состояния Vim с помощью vim-airline

Отображение временных меток отмены и повтора в Vim

 

Вы также увидите, что при взаимодействии с файлом счётчики отмены/повторения будут увеличиваться.

 

Дополнительные советы и настройки

Отображения лидеров:

Вместо использования <Ctrl-r> вы можете сопоставить redo с чем-то вроде <Leader>r.

nnoremap <Leader>r <C-r>

 

Постоянная отмена:

Включите постоянную отмену с помощью:

set undofile
set undodir=~/.vim/undodir

 

Ведение журнала:

Чтобы сохранить информацию об отслеживании между сеансами, вы можете записать подсчёты в файл при выходе из Vim.

 

Устранение неполадок

Если отметка времени отображается не так, как ожидалось, проверьте следующее:

  • Убедитесь, что вы используете Vim 8 или более позднюю версию (поскольку функция strftime доступна в Vim 8+).
  • Убедитесь, что vim-airline правильно установлен: используйте :PlugStatus для проверки загрузки плагина.

Конфигурация My .vimrc

Вот моя полная конфигурация файла .vimrc . Вы можете просто скопировать/вставить всё содержимое или его часть в свой файл .vimrc .

" ----------------------------
" Основные настройки
" ----------------------------
set nocompatible

" ----------------------------
" Настройка менеджера плагинов vim-plug
" ----------------------------
call plug#begin('~/.vim/plugged')

" vim-airline status bar
Plug 'vim-airline/vim-airline'

call plug#end()
filetype plugin indent on

" ----------------------------
" Настройка отслеживания отмены/повтора
" ----------------------------
let g:undo_count = 0
let g:redo_count = 0
let g:last_undo_time = ""

" Сопоставьте 'u' для обновления счетчика отмены и метки времени
nnoremap  u :let g:undo_count += 1 \| let g:last_undo_time = strftime("%Y-%m-%d %H:%M:%S") \| normal! u


" Настройте Ctrl-r для обновления счетчика повторов и метки времени
nnoremap   :let g:redo_count += 1 \| let g:last_undo_time = strftime("%Y-%m-%d %H:%M:%S") \| redo

«Отобразить статистику отмены и повтора в разделе X авиакомпании
let g:airline_section_x = '%{g:last_undo_time != "" ? g:last_undo_time . " (undos:" . g:undo_count . ", redos:" . g:redo_count . ")" : strftime("%H:%M:%S")}'

 

Распад моего .vimrc

Вот описание того, что делает каждая строка в моей конфигурации .vimrc:

Базовая настройка Vim

set nocompatible

 

  • Отключает совместимость с очень старым редактором «vi».
  • Включает все функции, специфичные для Vim, и следит за корректной работой плагинов.
Читать  Примеры команд pushd и popd в Linux

Настройка менеджера плагинов (vim-plug)

call plug#begin('~/.vim/plugged')

 

  • Инициализирует загрузку плагина с помощью vim-plug.
  • ~/.vim/plugged это каталог, в котором будут храниться ваши плагины.
Plug 'vim-airline/vim-airline'
  • Загружает плагин vim-airline, который предоставляет компактную настраиваемую строку состояния.
call plug#end()
  • Завершает блок плагинов. Все плагины должны быть перечислены между plug#begin() и plug#end().
filetype plugin indent on

 

Это позволяет:

  • Определение типа файла
  • Загрузка плагинов, зависящих от типа файла
  • Автоматическое выделение отступов для распознанных типов файлов

 

Переменные отслеживания отмены/ Повтора

let g:undo_count = 0
let g:redo_count = 0
let g:last_undo_time = ""

 

  • g:undo_count: Отслеживает, сколько раз вы нажимаете u (отмена).
  • g:redo_count: Отслеживает, сколько раз вы нажимаете <C-r> (повторить).
  • g:last_undo_time: Сохраняет временную метку последней отмены или повтора.

 

Пользовательские Сопоставления ключей

Отменить:

nnoremap <silent> u :let g:undo_count += 1 \| let g:last_undo_time = strftime("%Y-%m-%d %H:%M:%S") \| normal! u<CR>

 

Заменяет команду по умолчанию u пользовательской версией, которая:

  1. Приращения undo_count
  2. Обновления last_undo_time
  3. Выполняет фактическую отмену с помощью normal! u
  4. <silent> останавливает отображение команды в командной области.

 

Повторить:

nnoremap <silent> <C-r> :let g:redo_count += 1 \| let g:last_undo_time = strftime("%Y-%m-%d %H:%M:%S") \| redo<CR>

 

  • Аналогично отображению отмены, но для повтора.
  • Увеличивает redo_count и обновляет временную метку.

 

Конфигурация строки состояния авиакомпании

let g:airline_section_x = '%{g:last_undo_time != "" ? g:last_undo_time . " (undos:" . g:undo_count . ", redos:" . g:redo_count . ")" : strftime("%H:%M:%S")}'

 

  • Настраивает X раздел в vim-airline строке состояния.
  • Если last_undo_time установлено значение, оно показывает:
    YYYY-MM-DD HH:MM:SS (undos:X, redos:Y)
  • Если нет отменённых или повторных действий, отображается только текущее время (strftime("%H:%M:%S")).

 

Заключение

С помощью всего нескольких строк Vimscript и лёгкого плагина мы добавили удобную функцию просмотра истории редактирования в Vim. Теперь вы можете работать эффективнее, отслеживая и отображая полезную информацию, например, временные метки отмены и повтора, в строке состояния.

Отслеживание операций отмены и повтора в строке состояния повышает осведомлённость, делает редактирование более безопасным и помогает работать увереннее.

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
Если статья понравилась, то поделитесь ей в социальных сетях:

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

**ссылки nofollow

Это может быть вам интересно


Загрузка...

Спасибо!

Теперь редакторы в курсе.

Scroll to Top