comandos - ¿Cómo hago de Emacs la sangría automática de mi código C?
emacs ubuntu (7)
Además de las otras sugerencias, intente Cc Ca
para alternar la función de nueva línea automática para que su modeline lea C/la
. Entonces, ni siquiera necesita presionar Enter la mayor parte del tiempo; en cambio, cuando escribe un punto y coma o una llave, las nuevas líneas se insertan y su código se sangra. A veces es necesario presionar Entrar y no se obtiene la autoindentación (a menos que se vuelva a encuadernar RET
, como se sugiere en otra respuesta), pero si comienza a escribir la siguiente línea de todos modos, puede notar que se sangra correctamente al escribir algo. carácter de puntuación.
Para comenzar con su "grado de Lisp", escriba Ch i
para el navegador de información y vaya al nodo para "Modo CC" (está separado del nodo para Emacs; escriba d
para Directorio y encuentre el Modo CC allí).
Estoy empezando a sentir emacs, pero me siento frustrado por su tendencia a no sangrar cuando presiono la tecla de retorno. Sé que si presiono Cj lo hará, pero no puedo entrar en ese hábito. Simplemente no puedo Necesito hacer clic en regresar, y odio volver a tabular cada vez.
Entré en las opciones y encontré el modo C y el modo C ++, etc., y definieron dos pulsaciones de teclas (10 y 13, y recordé que 0A y 0D son CR / LF porque las usé mucho en el ensamblaje). -Pensé que desde que uno dijo " (lambda nil (define-key lisp-mode-map [13] (quote newline-and-indent))
" y el otro es igual pero con (quote newline)
lugar, simplemente puse el Y, al final de la misma, y luego pensé que funcionaría.
Pero no es así: lo puse y lo guardé, lo intenté, en vano. Reiniciado emacs, todavía no hay éxito. ¿Cómo hago que sea sangría mi código? Es terriblemente loco que emacs requiera un título en lisp solo para configurarlo para sus necesidades básicas.
Además, como una especie de pregunta complementaria: ¿cómo puedo copiar y pegar desde el portapapeles? Matar / tirar es práctico y todo, pero odio ir a editar-> copiar cada vez que quiera pegar en otro lugar.
- EDITAR -
bien, puse las siguientes líneas en mis .emacs y funcionó:
(add-hook ''c-mode-common-hook (lambda () (local-set-key (kbd "RET") ''newline-and-indent)))
gracias por la ayuda
Configuro la clave de retorno para que actúe globalmente como una nueva línea e intención en mi archivo ~/.emacs
:
(global-set-key "/C-m" ''newline-and-indent)
Funciona para mi.
Echa un vistazo a emacswiki - autoindent
Como se sugiere allí, ponga el siguiente código en su .emacs
(defun set-newline-and-indent ()
(local-set-key (kbd "RET") ''newline-and-indent))
(add-hook ''c-mode ''set-newline-and-indent)
Puede personalizar la variable C Default Styl. En su emacs vaya a Opciones-> Personalizar Emacs-> Opción específica, luego escriba c-default-style y configúrelo a su elección. Al hacer esto, no necesitas golpear TAB. Escribe desde el inicio de la línea y al presionar ";" , será automáticamente sangrado.
Espero que esto ayude
La forma más fácil de hacerlo es usar electric-indent-mode
. Si desea habilitarlo manualmente, simplemente haga
M-x electric-indent-mode
Para habilitarlo automáticamente, diga lo siguiente en su .emacs
:
(electric-indent-mode)
Este será el predeterminado en Emacs 24.4.
Prueba [enter], (kbd "enter") o (read-kbd-macro "enter"), todos hacen cosas sutilmente diferentes;)
Además, para mí copiar / pegar simplemente funciona. ¿Puedes intentar ejecutar emacs -q y ver si funciona? Si lo hace, puede ser un problema con sus .emacs.
Tambien tengo:
(when window-system
;; use extended compound-text coding for X clipboard
(set-selection-coding-system ''compound-text-with-extensions))
pero eso podría hacer otra cosa;)
Si desea sangrar todo el archivo c / c ++, simplemente haga
- marca todo: CTRL-x h
- presiona TAB
Eso, por cierto, funciona también para xml, código python y otros tipos.
copia: mover para iniciar, CTRL-espacio, mover para finalizar, ALT-W
pegado: CTRL-y
en unix: mouse izquierdo para copiar, mouse derecho para pegar