4

emacs をできるだけ vim のようにするためのその他の微調整も同様に高く評価されます。

補遺: 私が vim だけを使用しない主な理由は、emacs が 2 つの異なるフレームでファイルを開く方法が好きだからです [追加: 申し訳ありませんが、これは混乱を招きました: emacs が「フレーム」と呼ぶ個別のウィンドウを意味します]。縦に分割するようなものですが、巨大なウィンドウを 1 つ持つ必要はありません。

4

9 に答える 9

7

VIM をクライアント サーバー モードで実行すると、1 つのインスタンスに 2 つのウィンドウを接続できるため、Emacs が不要になります。

于 2009-01-27T16:38:56.577 に答える
3

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

于 2009-01-27T10:13:36.327 に答える
2

viper や vimpulse の微調整はありませんが、フォローモードを試すことをお勧めします。

もちろん、Emacs の学習も開始することをお勧めします。つまり、ここまで来ているのであれば、チュートリアルを読んで、emacswiki を見てください。

于 2008-09-19T05:14:26.230 に答える
1

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 によってサポートされています。

于 2011-05-21T02:55:07.537 に答える
1

私が使用している VIM のバージョン (Windows バージョン) は、「Ctrl+W s」を使用してファイルを 2 つの異なるフレームに分割することをサポートしています...

于 2009-01-27T16:44:31.607 に答える
1

Vim では、ファイルを 2 つの異なるフレームで簡単に開くことができます。

:split水平に分割する

:vsplit縦に分割する

同じファイル、異なるファイル、またはその両方の間で、画面を何度でも分割できます。

CTRL-w-wフレームを切り替えます。

:resize +nまたは:resize -n現在のフレームのサイズを変更します。

于 2009-01-28T15:32:21.703 に答える
0

あなたが何を求めているのか(なぜマクロが機能しないのか、またはemacsでvimをエミュレートするためにどの調整が利用できるのか)が完全に明確ではないため、私があなたの質問に答えるかどうかわかりません

  • 古代の emacs-snapshot (2005 年以降) を使用しているあるユーザーは、
    「viper--key-maps from the macro my-get-emulation-」という行を削除しない限り、このモードではキーボードのすべてのキーが機能しなくなると述べています。このファイルのキーマップ

そうである場合は、記載されている解決策を試すことができます。

この情報は emacs wikiから入手しましたが、これは既知のバグです。

于 2009-01-27T09:05:30.440 に答える
0

いつでもシェル バッファで vim を起動し、サイズを変更してフレーム全体を埋めることができますか?

于 2008-09-19T00:12:03.727 に答える
0

VIM 機能が必要な場合は、VIM をインストールするだけの方が理にかなっています!

于 2008-09-19T00:13:57.530 に答える