Pregunta

También se agradecería cualquier otro ajuste para hacer que emacs se parezca lo más posible a vim.

Apéndice:La razón principal por la que no uso vim es que me encanta cómo emacs te permite abrir un archivo en dos marcos diferentes [AÑADIDO:Lo siento, esto fue confuso:me refiero a separar ventanas, que emacs llama "marcos"].Es como hacer una división vertical pero no es necesario tener una ventana enorme.

¿Fue útil?

Solución

Podrías ejecutar VIM en modo cliente servidor, entonces podría tener dos ventanas conectadas a una instancia, eliminando así la necesidad de Emacs.

Otros consejos

No sé cómo hacer que las macros de Vim funcionen, pero como usted solicitó ajustes para hacer que emacs se parezca lo más posible a vim, aquí hay algunas adiciones a vimpulse que uso todos los días:

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

Por supuesto, aprender Emacs también es muy importante, pero Emacs depende de la personalización para que se comporte exactamente como usted desea.Y las combinaciones de teclas predeterminadas de Vim son tan cómodas que usar Viper simplemente significa que Viper realiza algunas personalizaciones de Emacs por usted.

En cuanto a usar Vim en lugar de Emacs, me encanta Vim, pero me encanta la interactividad del sistema Lisp que es Emacs.No hay nada como escribir una línea de código en cualquier lugar de tu editor y evaluarla instantáneamente con una sola pulsación de tecla, cambiando o inspeccionando el estado de tu editor. de tu editor (incluida la documentación en vivo) con una sola pulsación de tecla (C-M-x) mientras esta corriendo.

No tengo ajustes de Viper o Vimpulse para ti, pero te recomiendo que pruebes el modo de seguimiento.

Por supuesto, también te recomiendo que empieces a aprender Emacs.Quiero decir, si has llegado hasta aquí, también puedes leer el tutorial y quizás echar un vistazo a emacswiki.

La versión de VIM que uso admite (versión de Windows) la división de un archivo en 2 marcos diferentes usando "Ctrl+W s"...

Vim te permite abrir fácilmente un archivo en dos marcos diferentes:

:split dividirlo horizontalmente

:vsplit dividirlo verticalmente

Puedes dividir la pantalla tantas veces como quieras entre el mismo archivo, diferentes archivos o ambos.

CTRL-w-w cambia de marco.

:resize +n o :resize -n cambia el tamaño del fotograma actual.

Emacs+vimpulse es increíble, pero creo que su flujo de trabajo correcto es usar generosamente los comandos de emacs en combinación con los atajos de vim.Por ejemplo, los atajos de macros F3 y F4 de emacs son más fáciles que qq y @q de vim.También se accede a los comandos de emacs mediante Alt+x, no:comandos.Aunque vimpulse admite algunos comandos vim importantes, están ahí solo por compatibilidad.

Las siguientes son mis personalizaciones específicas de 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))

Si te gusta la terminal, puedes usar emacs -nw.En este caso, este complemento del portapapeles resulta útil. http://www.lingotrek.com/2010/12/integrating-emacs-with-x11-clipboard-in.html

.víbora

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

Casi todo lo que hace vim se puede hacer con la misma facilidad (si no de la misma manera) en emacs+vimpulse, ¡pero definitivamente no al revés!

PD.la mayoría de las sugerencias anteriores están respaldadas por vimpulse reciente POR DEFECTO.

¿Siempre puedes iniciar vim en un búfer de shell y cambiar su tamaño para que ocupe todo el marco?

Si desea la funcionalidad VIM, ¡tiene más sentido simplemente instalar VIM!

No estoy seguro de responder a su pregunta, ya que no está del todo claro lo que está preguntando (por qué las macros no funcionan o qué ajustes están disponibles para emular vim en emacs).
Entonces, ¿este es tu problema?:

  • Un usuario que utiliza una antigua instantánea de emacs (de 2005) menciona
    Que este modo hace que todas las teclas en su teclado dejen de funcionar a menos que elimine la línea que lea el víborante: llave de teclas de la macro my-get-emulación-keymap en este archivo

Si es así, puede probar la solución indicada.

Obtuve esta información de la wiki de emacs, y es un error conocido.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top