Emacs에서 viper + vimpulse를 사용할 때 Vim 매크로가 작동하지 않습니다.

StackOverflow https://stackoverflow.com/questions/98225

  •  01-07-2019
  •  | 
  •  

문제

emacs를 가능한 한 vim처럼 만들기 위한 다른 조정 사항도 높이 평가될 것입니다.

부록:내가 vim을 사용하지 않는 주된 이유는 emacs를 사용하여 두 개의 서로 다른 프레임에서 파일을 열 수 있는 방식이 마음에 들기 때문입니다.죄송합니다. 혼란스러웠습니다.따로 말이에요 창문들, emacs는 "프레임"이라고 부릅니다.]이는 수직 분할을 만드는 것과 같지만 거대한 창을 하나 가질 필요는 없습니다.

도움이 되었습니까?

해결책

VIM을 실행할 수 있습니다 클라이언트 서버 모드, 그러면 하나의 인스턴스에 두 개의 창을 연결할 수 있으므로 Emacs가 필요하지 않습니다.

다른 팁

Vim 매크로를 작동시키는 방법을 모르지만 emacs를 vim과 비슷하게 만들기 위한 조정을 요청하셨기 때문에 제가 매일 사용하는 vimpulse에 다음과 같은 몇 가지 추가 사항이 있습니다.

(define-key viper-vi-global-user-map [(delete)] 'delete-char)
(define-key viper-vi-global-user-map "/" 'isearch-forward-regexp)
(define-key viper-vi-global-user-map "?" 'isearch-backward-regexp)
(define-key viper-vi-global-user-map "\C-wh" 'windmove-left)
(define-key viper-vi-global-user-map "\C-wj" 'windmove-down)
(define-key viper-vi-global-user-map "\C-wk" 'windmove-up)
(define-key viper-vi-global-user-map "\C-wl" 'windmove-right)
(define-key viper-vi-global-user-map "\C-wv" '(lambda () (interactive)
                                                (split-window-horizontally)
                                                (other-window 1)
                                                (switch-to-buffer (other-buffer))))

(define-key viper-visual-mode-map "F" 'viper-find-char-backward)
(define-key viper-visual-mode-map "t" 'viper-goto-char-forward)
(define-key viper-visual-mode-map "T" 'viper-goto-char-backward)
(define-key viper-visual-mode-map "e" '(lambda ()
                                         (interactive)
                                         (viper-end-of-word 1)
                                         (viper-forward-char 1)))

(push '("only" (delete-other-windows)) ex-token-alist)
(push '("close" (delete-window)) ex-token-alist)

물론 Emacs를 배우는 것도 매우 중요하지만 Emacs는 사용자가 원하는 대로 정확하게 동작하도록 하기 위해 사용자 정의에 의존합니다.그리고 기본 Vim 키 바인딩은 매우 편안하여 Viper를 사용한다는 것은 단순히 Viper가 Emacs 사용자 정의 작업을 수행한다는 것을 의미합니다.

Emacs 대신 Vim을 사용하는 것에 관해서는 Vim을 좋아하지만 Lisp 시스템인 Emacs의 대화형 기능도 좋아합니다.편집기의 아무 곳에나 코드 한 줄을 입력하고 한 번의 키 입력으로 즉시 평가하고 편집기 상태를 변경하거나 검사하는 것만큼 쉬운 일은 없습니다. 편집자로부터 (라이브 문서 포함) 한 번의 키 입력(C-M-x) 실행되는 동안.

나는 당신을 위한 독사 또는 vimpulse 조정을 가지고 있지 않지만 팔로우 모드를 시도해 보는 것이 좋습니다.

물론 Emacs도 배우기 시작하는 것이 좋습니다.내 말은, 당신이 여기까지 왔다면 튜토리얼을 살펴보고 emacswiki를 살펴보는 것이 좋을 것입니다.

내가 사용하는 VIM 버전(Window 버전)은 "Ctrl+W s"를 사용하여 파일을 2개의 다른 프레임으로 분할하는 기능을 지원합니다.

Vim을 사용하면 두 가지 다른 프레임에서 파일을 쉽게 열 수 있습니다:

:split 가로로 나누려면

:vsplit 세로로 나누려고

동일한 파일, 다른 파일 또는 둘 다 간에 원하는 만큼 화면을 분할할 수 있습니다.

CTRL-w-w 프레임을 전환합니다.

:resize +n 또는 :resize -n 현재 프레임의 크기를 조정합니다.

Emacs+vimpulse는 훌륭하지만 vim 단축키와 함께 emacs 명령을 자유롭게 사용하는 것이 올바른 작업 흐름이라고 생각합니다.예를 들어 emacs의 매크로 단축키 F3 및 F4는 vim의 qq 및 @q보다 쉽습니다.또한 emacs 명령은 다음이 아닌 Alt+x를 통해 액세스됩니다.명령.vimpulse는 몇 가지 중요한 vim 명령을 지원하지만 이는 단지 호환성을 위한 것입니다.

다음은 vimpulse 관련 사용자 정의입니다.

.emacs

   ; I use C-d to quit emacs and vim
   (vimpulse-global-set-key 'vi-state (kbd "C-d") 'save-buffers-kill-terminal)
   ; use ; instead of :
   (vimpulse-global-set-key 'vi-state (kbd ";") 'viper-ex)
   ; use C-e instead of $. This works for all motion command too! (e.g. d C-e is easier to type than d$)
   (vimpulse-global-set-key 'vi-state (kbd "C-e") 'viper-goto-eol)
   (defun t_save() (interactive)(save-buffer)(viper-change-state-to-vi)) 
   (global-set-key (kbd "\C-s") 't_save) ; save using C-s instead of :w<CR> or C-x-s

    (defun command-line-diff (switch)
          (let ((file1 (pop command-line-args-left))
                (file2 (pop command-line-args-left)))
            (ediff file1 file2)))

    ;; Usage: emacs -diff file1 file2 (much better then vimdiff)
    (add-to-list 'command-switch-alist '("-diff" . command-line-diff))

터미널을 좋아한다면 emacs -nw를 사용할 수 있습니다.이런 경우에는 이 클립보드 추가 기능이 유용합니다. http://www.lingotrek.com/2010/12/integrating-emacs-with-x11-clipboard-in.html

.독사 같은 사람

    (setq viper-inhibit-startup-message 't)
    (setq viper-expert-level '3)
    (setq viper-ESC-key "\C-c") ; use C-c instead of ESC. unlike vim, C-c works perfectly with vimpulse.

vim이 수행하는 거의 모든 작업은 emacs+vimpulse에서 (같은 방식은 아니지만) 쉽게 수행할 수 있지만 그 반대는 절대 아닙니다!

추신.위 제안의 대부분은 최근 vimpulse BY DEFAULT에서 지원됩니다.

언제든지 쉘 버퍼에서 vim을 시작하고 크기를 조정하여 전체 프레임을 채울 수 있습니까?

VIM 기능을 원한다면 VIM을 설치하는 것이 더 합리적입니다!

귀하가 질문하는 내용(매크로가 작동하지 않는 이유 또는 emacs에서 vim을 에뮬레이트하는 데 사용할 수 있는 조정 사항)이 완전히 명확하지 않기 때문에 귀하의 질문에 대답할지 잘 모르겠습니다.
그렇다면 이것이 당신의 문제인가요?:

  • 고대 emacs-snapshot(2005년부터)을 사용하는 한 사용자는 다음과 같이 언급합니다.
    이 모드는 키보드의 모든 키 가이 파일의 매크로 마이 get-emulation-keymap에서 키를 읽는 선을 삭제하지 않는 한 작동을 중지합니다.

그렇다면 명시된 해결 방법을 시도해 볼 수 있습니다.

나는 이 정보를 다음으로부터 얻었습니다. 이맥스 위키, 이는 알려진 버그입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top