Я только начал работать над инструментом, который поможет мне увеличить производительность с помощью Vim. Я хочу, чтобы он записывал каждое нажатие клавиши в файл, а затем идентифицировал неэффективные шаблоны использования. Я бы хотел, чтобы он хранил временную метку для каждого нажатия клавиши.Запуск/перехват всех нажатий клавиш в Vim
Я попытался использовать опции -w и -W vim, чтобы сбрасывать каждое нажатие клавиши на трубу. Тем не менее, Vim не сообщает о нажатиях клавиш в режиме онлайн, поэтому я не мог получить надежные временные метки.
Я также пытался перехватить входные данные из tty, записав его в трубку и перенаправив его как stdin для Vim. Но тогда Vim просто завершает работу с:
Vim: Warning: Input is not from a terminal
Я также нашел этот трюк, чтобы захватить все ключевые: http://vim.wikia.com/wiki/Capture_all_keys. Я ничего не знаю о vimscript, но я чувствую, что это не то, что я ищу.
Итак, теперь я думаю: мне нужно перехватить входные данные из tty, обработать его, а затем записать его на какой-то поддельный tty, который Vim будет использовать в качестве входа. Согласитесь ли вы, что это лучший подход? Если да, то какие намеки на то, как я могу это сделать?
Я сделал еще несколько поисков, но не смог найти ничего, что могло бы подойти мне. «Экран» способен регистрировать вывод, но не вход. «script» регистрирует вход и выход, но вы не можете заставить его регистрировать только входные данные. Все клавиатурные шпионы, которые я обнаружил, либо регистрируют все входные данные клавиатуры (независимо от tty/процесса, которые его получают), либо требуют специальных драйверов на уровне ядра. Я бы предпочел использовать то, что даже не требует прав root, и IMO это должно быть выполнимо. –
Прошу прощения за некропость, но я вижу пример использования для Vim. Если у вас есть несколько уровней для устранения неполадок (tmux + zsh + ssh + ... + Vim), то устранение неполадок с отображением ключей Vim также означает устранение неполадок с любым количеством родительских слоев. http://stackoverflow.com/a/10805437/1043529 - кажется, есть встроенная опция для ведения журнала, хотя я еще не тестировал ее http://vim.wikia.com/wiki/Map_Ctrl-S_to_save_current_or_new_files - пример ключевой команды, предназначенной для Vim, но обычно перехваченной терминалами –