emacs をできるだけ vim のようにするためのその他の微調整も同様に高く評価されます。
補遺: 私が vim だけを使用しない主な理由は、emacs が 2 つの異なるフレームでファイルを開く方法が好きだからです [追加: 申し訳ありませんが、これは混乱を招きました: emacs が「フレーム」と呼ぶ個別のウィンドウを意味します]。縦に分割するようなものですが、巨大なウィンドウを 1 つ持つ必要はありません。
emacs をできるだけ vim のようにするためのその他の微調整も同様に高く評価されます。
補遺: 私が vim だけを使用しない主な理由は、emacs が 2 つの異なるフレームでファイルを開く方法が好きだからです [追加: 申し訳ありませんが、これは混乱を招きました: emacs が「フレーム」と呼ぶ個別のウィンドウを意味します]。縦に分割するようなものですが、巨大なウィンドウを 1 つ持つ必要はありません。
VIM をクライアント サーバー モードで実行すると、1 つのインスタンスに 2 つのウィンドウを接続できるため、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 が大好きですが、Emacs である Lisp システムの対話性が大好きです。エディターの任意の場所にコード行を入力し、1 回のキーストロークで即座に評価し、実行中の 1 回のキーストローク (ライブ ドキュメントを含む) でエディターからエディターの状態を変更または検査するような感覚はありません。C-M-x
viper や vimpulse の微調整はありませんが、フォローモードを試すことをお勧めします。
もちろん、Emacs の学習も開始することをお勧めします。つまり、ここまで来ているのであれば、チュートリアルを読んで、emacswiki を見てください。
Emacs+vimpulse は素晴らしいですが、適切なワークフローは emacs コマンドを組み合わせて vim ショートカットを自由に使用することだと思います。たとえば、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 で簡単に実行できますが、その逆は絶対にありません!
ps 上記の提案のほとんどは、最近の vimpulse BY DEFAULT によってサポートされています。
私が使用している VIM のバージョン (Windows バージョン) は、「Ctrl+W s」を使用してファイルを 2 つの異なるフレームに分割することをサポートしています...
Vim では、ファイルを 2 つの異なるフレームで簡単に開くことができます。
:split
水平に分割する
:vsplit
縦に分割する
同じファイル、異なるファイル、またはその両方の間で、画面を何度でも分割できます。
CTRL-w-w
フレームを切り替えます。
:resize +n
または:resize -n
現在のフレームのサイズを変更します。
あなたが何を求めているのか(なぜマクロが機能しないのか、またはemacsでvimをエミュレートするためにどの調整が利用できるのか)が完全に明確ではないため、私があなたの質問に答えるかどうかわかりません
。
- 古代の emacs-snapshot (2005 年以降) を使用しているあるユーザーは、
「viper--key-maps from the macro my-get-emulation-」という行を削除しない限り、このモードではキーボードのすべてのキーが機能しなくなると述べています。このファイルのキーマップ
そうである場合は、記載されている解決策を試すことができます。
この情報は emacs wikiから入手しましたが、これは既知のバグです。
いつでもシェル バッファで vim を起動し、サイズを変更してフレーム全体を埋めることができますか?
VIM 機能が必要な場合は、VIM をインストールするだけの方が理にかなっています!