AutoHotKey Hotstring не будет запускаться в gvim в Windows или vim в WSL Ubuntu - PullRequest
1 голос
/ 09 июля 2019

Я использую AHK для автоматического преобразования строки типа ]dd в текущую дату (см. Код ниже). При использовании этого в большинстве текстовых редакторов / областей Windows, это работает отлично. Но когда я использую gvim для Windows или vim в Ubuntu на WSL, мне часто приходится набирать символ «заправка» или пару раз использовать горячую строку для его работы. Поиск по форуму не дал результатов по этому конкретному вопросу.

#NoEnv  ; Recommended for performance and compatibility with future 

AutoHotkey releases.
; #Warn  ; Enable warnings to assist with detecting common errors.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.

; This allows me to quickly enter date and time stamps.
::]dd::
FormatTime, TimeString, , yyMMdd ; LongDate
Send, %TimeString%
Return

:*:]t::
FormatTime, TimeString, , HHmm
Send, %TimeString%
Return

:*:]dt::
FormatTime, TimeString, , yyMMdd HHmm
Send, %TimeString%
Return

Они работают практически безупречно в Блокноте или других немодальных текстовых редакторах / областях, которые я использовал, но мне действительно нравится vim.

Я предполагаю, что AHK отключает символ пробела, а не CR / LF, поэтому вводит режим insert в редакторе режима vim (включая PyCharm с использованием плагина IdeaVim) и нажимает Enter не дайте AHK знать, чтобы начать искать меня. Я должен нажать Space, а иногда и несколько раз, чтобы получить горячую строку, которая будет распознана.

Полагаю, я мог бы просто создать вместо этого горячие клавиши, но я использую этот подход в Keyboard Maestro для настроек macOS и клавиатуры в * NIX, и я ценю мышечную память.

Есть ли где-то конфигурация, которую я пропускаю, или это просто крайний случай?

1 Ответ

1 голос
/ 17 июля 2019

Чтобы обеспечить надежную и согласованную работу в Vim, в параметре «горячая строка» укажите знак вопроса и звездочку (:*?:...) вместо только звездочки или пустого параметра.Этот обходной путь - единственное, что работало для меня в Vim на Windows.В противном случае Autohotkey не будет расширяться при первом входе в режим вставки.

Таким образом, это может выглядеть так:

...

:*?:]dd::
FormatTime, TimeString, , yyMMdd ; LongDate
Send, %TimeString%
Return

:*?:]t::
FormatTime, TimeString, , HHmm
Send, %TimeString%
Return

:*?:]dt::
FormatTime, TimeString, , yyMMdd HHmm
Send, %TimeString%
Return

Однако это немного изменит поведение, так каквызовет горячую строку внутри слова, поэтому Hello]dd вызовет ]dd.Но я мог бы с этим смириться и избежать разочарования, всегда проверяя, вызывает ли оно горячую строку или нет.

В качестве альтернативы, чтобы полностью соответствовать начальному поведению, я бы воссоздал расширение текста в vim, используя UltiSnips плагин, но это будет немного больше работы, чем необходимо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...