macros Vim não funcionam quando usando viper + vimpulse no Emacs
Pergunta
Quaisquer outros ajustes para fazer emacs como vim-like possível seria apreciada também.
Adenda: A principal razão pela qual eu não basta usar o vim é que eu amo como emacs permite abrir um arquivo em dois quadros diferentes [acrescentado: Desculpe, este foi confuso: Eu quero dizer separado Windows , que emacs chama de "frames"]. É como fazer uma divisão vertical, mas não tem que ter uma janela enorme.
Solução
Você pode executar VIM em cliente modo de servidor , então você pode ter duas janelas se conectar a uma instância, portanto, eliminando a necessidade de Emacs.
Outras dicas
Eu não sei como fazer o trabalho Vim macros, mas desde que você pediu ajustes para fazer emacs como vim-like possível, aqui vai algumas adições para vimpulse eu uso todos os dias:
(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)
Claro, aprender Emacs é muito importante também, mas Emacs depende de personalização para fazê-lo se comportam exatamente como você quer que ele. E os atalhos de teclado padrão Vim são tão confortáveis ??que usando Viper significa simplesmente que Viper faz alguma personalização Emacs para você.
Quanto a usar Vim em vez de Emacs, eu amo Vim, mas eu amo a interatividade do sistema Lisp que é Emacs. Nada sente como digitar uma linha de qualquer código em seu editor e instantaneamente avaliá-lo com uma única tecla, alterar ou inspecionar o estado de seu editor do seu editor (incluindo a documentação ao vivo) com uma única tecla ( C-M-x
) enquanto ele está executando .
Eu não tenho qualquer víbora ou tweaks vimpulse para você, mas eu recomendo que você tente seguir-mode.
É claro que eu também recomendo que você começar a aprender Emacs também. Quer dizer, se você está nesta longe você pode muito bem ir até o tutorial e talvez ter um olhar para emacswiki.
A versão do suporte uso VIM I (versão janela) apoio dividir um arquivo em 2 quadros diferentes usando "Ctrl + W s" ...
Vim facilmente permite que você abrir um arquivo em dois quadros diferentes:
:split
dividi-lo horizontalmente
:vsplit
dividi-lo na vertical
Você pode dividir a tela, como muitas vezes quiser entre o mesmo arquivo, arquivos diferentes, ou ambos.
CTRL-w-w
muda frames.
:resize +n
ou :resize -n
redimensiona o quadro atual.
Emacs + vimpulse é incrível, mas eu acho que o seu fluxo de trabalho certo é usar liberalmente comandos do Emacs em combinação para atalhos vim. Por exemplo, das emacs macro atalho F3 e F4 é mais fácil do que qq e @q do vim. Também comandos do Emacs são acessados ??através Alt + x, não: comandos. Embora o apoio vimpulse alguns comandos importantes vim, eles estão lá apenas para compatibilidade.
A seguir são meus personalizações específicas 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 você gosta de terminal, você pode usar emacs -NW. Neste caso, esta área de transferência add-on é útil. http://www.lingotrek.com/2010 /12/integrating-emacs-with-x11-clipboard-in.html
.viper
(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.
Quase tudo vim não pode ser tão facilmente feito (se não for da mesma maneira) no emacs + vimpulse mas definitivamente não vice-versa!
P.S. a maior parte das sugestões acima são suportados pelo recente vimpulse por padrão.
Você pode sempre começar vim em um buffer shell e redimensioná-la de modo que encheu toda a frame?
Se você quiser funcionalidade VIM, que faz mais sentido para apenas instalar VIM!
Eu não tenho certeza se eu responder a sua pergunta, uma vez que não é totalmente claro o que você está pedindo (porque a macro do não estão funcionando, ou que ajustes estão disponíveis para emular vim no emacs)
por isso, este é o seu problema:?
- Um usuário que usa uma antiga emacs-snapshot (de 2005) menciona
que este modo faz com que todas as teclas seu teclado para parar de trabalhar menos ele apaga a linha que lê 'Víbora - key-mapas do macro meu-obter-emulação-keymap neste arquivo
se for, você pode tentar a solução afirmou.
Eu tenho esta informação de o emacs wiki , e é um bug conhecido.