Domanda

Sarebbe apprezzata anche qualsiasi altra modifica per rendere emacs il più simile possibile a Vim.

Addendum:Il motivo principale per cui non uso solo vim è che adoro il modo in cui emacs ti consente di aprire un file in due frame diversi [AGGIUNTO:scusa, questo creava confusione:Voglio dire separato finestre, che emacs chiama "frame"].È come fare una divisione verticale ma non è necessario avere una finestra enorme.

È stato utile?

Soluzione

Potresti eseguire VIM modalità client-server, allora potresti avere due finestre connesse a un'istanza, eliminando così la necessità di Emacs.

Altri suggerimenti

Non so come far funzionare le macro di Vim, ma dal momento che mi hai chiesto delle modifiche per rendere emacs il più simile possibile a Vim, ecco alcune aggiunte a vimpulse che uso tutti i giorni:

(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)

Naturalmente, anche imparare Emacs è molto importante, ma Emacs si affida alla personalizzazione per farlo funzionare esattamente come lo desideri.E le associazioni dei tasti predefinite di Vim sono così comode che usare Viper significa semplicemente che Viper esegue alcune personalizzazioni di Emacs per te.

Per quanto riguarda l'utilizzo di Vim invece di Emacs, adoro Vim, ma adoro l'interattività del sistema Lisp che è Emacs.Non c'è niente di meglio che digitare una riga di codice in un punto qualsiasi del tuo editor e valutarla immediatamente con la semplice pressione di un tasto, modificando o ispezionando lo stato del tuo editor dal tuo editore (inclusa la documentazione live) premendo un solo tasto (C-M-x) mentre è in esecuzione.

Non ho modifiche a Viper o Vimpulse per te, ma ti consiglio di provare la modalità follow.

Naturalmente ti consiglio anche di iniziare a imparare Emacs.Voglio dire, se sei arrivato a questo punto potresti anche seguire il tutorial e magari dare un'occhiata a emacswiki.

La versione di VIM che utilizzo supporta (versione Windows) supporta la suddivisione di un file in 2 frame diversi utilizzando "Ctrl+W s"...

Vim ti consente facilmente di aprire un file in due frame diversi:

:split per dividerlo orizzontalmente

:vsplit per dividerlo verticalmente

Puoi dividere lo schermo quante volte vuoi tra lo stesso file, file diversi o entrambi.

CTRL-w-w cambia fotogramma.

:resize +n O :resize -n ridimensiona il fotogramma corrente.

Emacs+vimpulse è fantastico, ma penso che il suo giusto flusso di lavoro sia usare liberamente i comandi emacs in combinazione con le scorciatoie di Vim.Ad esempio, la scorciatoia macro di emacs F3 e F4 è più semplice di qq e @q di vim.Anche i comandi emacs sono accessibili tramite Alt+x, non:comandi.Sebbene vimpulse supporti alcuni importanti comandi vim, sono lì solo per compatibilità.

Di seguito sono riportate le mie personalizzazioni specifiche di 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))

Se ti piace il terminale, puoi usare emacs -nw.In questo caso, questo componente aggiuntivo degli appunti è utile. http://www.lingotrek.com/2010/12/integrating-emacs-with-x11-clipboard-in.html

.vipera

    (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.

Quasi tutto ciò che fa Vim può essere fatto altrettanto facilmente (se non nello stesso modo) in emacs+vimpulse ma sicuramente non viceversa!

p.s.la maggior parte dei suggerimenti sopra riportati sono supportati dal recente vimpulse BY DEFAULT.

Potresti sempre avviare Vim in un buffer di shell e ridimensionarlo in modo che riempia l'intero frame?

Se desideri la funzionalità VIM, ha più senso installare semplicemente VIM!

Non sono sicuro di rispondere alla tua domanda, poiché non è del tutto chiaro cosa stai chiedendo (perché le macro non funzionano o quali modifiche sono disponibili per emulare Vim in emacs)
quindi è questo il tuo problema?:

  • Un utente che utilizza un'antica istantanea di emacs (del 2005) menziona
    che questa modalità fa sì che tutte le chiavi sulla sua tastiera smettano di funzionare a meno che non elimini la riga che legge la viper-mappa delle chiacchiere dalla macro my-get-emulation-keymap in questo file

se lo è, puoi provare la soluzione indicata.

Ho preso queste informazioni da il wiki di emacs, ed è un bug noto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top