>

]dd 와 같은 문자열을 자동 변환하기 위해 AHK를 사용합니다.  현재 날짜까지 (아래 코드 참조) 대부분의 Windows 텍스트 편집기/영역에서 이것을 사용하면 정상적으로 작동합니다. 하지만 gvim 를 사용할 때  Windows 또는 vim 용  WSL의 Ubuntu에서 종종 "프라이밍"문자를 입력하거나 핫 스트링을 몇 번 시도하여 작동합니다. 포럼을 검색해도이 특정 문제에 대한 검색 결과가 없습니다.

#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 모드 편집기 (IdeaVim 플러그인을 사용하는 PyCharm 등 포함)에서 Enter 를 누르십시오.  AHK에게 muh hawtstrangs를 찾기 시작한다고 알려주지 않습니다. 나는 Space 를 명중해야 핫 스트링을 인식하기 위해 때때로 몇 번 누르십시오.

단지 단축키를 만들 수 있다고 생각하지만 macOS의 키보드 Maestro 및 * NIX의 키보드 설정에서이 방법을 사용하고 근육 메모리를 소중하게 생각합니다.

어딘가에 간과되어있는 구성이 있습니까, 아니면 가장 단순한 구성입니까?

  • 답변 # 1

    핫 스트링 옵션에 Vim에서 안정적으로 일관되게 작동하려면 물음표와 별표 ( :*?:... )를 모두 포함하십시오. ) 만 별표 또는 빈 옵션 대신 사용하십시오. 이 해결 방법은 Windows의 Vim에서 저에게 효과적이었습니다. 그렇지 않으면 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 를 트리거합니다 . 그러나 나는 이것으로 살 수 있고 그것이 핫 스트링을 유발했는지 아닌지를 항상 확인하는 좌절을 피할 수 있습니다.

    또는 초기 동작과 완벽하게 일치시키기 위해 UltiSnips 를 사용하여 vim에서 텍스트 확장을 다시 만듭니다.  플러그인이지만 필요한 것보다 약간 더 많은 작업이 필요합니다.

관련 자료

  • 이전 c# - 동일한 기능으로 생성 한 후 업데이트하면 "{id}의 동일한 키 값이 이미 추적되고 있습니다"예외가 발생 함
  • 다음 c - 쓰기 기능을 사용하여 stdout에 이중 쓰기