Establecer sangría para la función de script de shell


11

Estoy tratando de establecer el número de espacios por sangría para iniciar una nueva función en sh-mode(sub-modo bash). He intentado configurar:

'(sh-basic-offset 2)
'(sh-indentation 2)
'(smie-indent-basic 2)

(como se muestra en custom-set-variablesen .emacs) y algunos otros también, pero ninguno de ellos ha tenido ningún efecto!


La forma de establecer variables no es a través de custom-set-variables(que es lo que internamente utiliza Customize pero que no debe usarse a mano). Mejor usar cosas como (setq sh-basic-offset 2).
— Stefan

Respuestas:


7

sh-basic-offsetLo que se necesita es establecer la sangría requerida, pero de lo que no me di cuenta es que también es necesario cerrar y volver a abrir todos los archivos de script de shell antes de que la personalización surta efecto. No recuerdo haber tenido que hacer esto antes en emacs.


1
Después de cambiar .emacs, debe salir de emacs y reiniciarlo, o usarlo M-x load-filepara volver .emacsa cargar el archivo. Si desea volver a cargar un archivo que tiene abierto en su editor, puede decir C-x C-v RETURN"volver a visitarlo".
— Alex L

El archivo de carga @AlexL no funciona en este caso particular. Como dije, esto es muy inusual. Por lo general, simplemente personalizar una variable es suficiente.
— Robin Green

Hmm ... ¿sabes por qué esto sería @ robin-green? Soy curioso.
— Alex L

También puede usarlo M-x set-variablesi desea cambiar esto para el búfer en el que está trabajando.
— kotakotakota

1

Configuré-basic-offset en 2 pero eso no pareció funcionar, volví a presionar C-h v sh-<TAB>y me di cuenta de que había una sh-indentationvariable que configuré en 2 y todo parece funcionar como un encanto ahora.


Aclare lo que quiere decir con "set-basic-offset" y también aclare exactamente cómo "establece esa variable en 2".
— Stefan

El foro omitió la pestaña porque puse entre el carácter mayor y menor que. Ch v sh- "presionar tab" autocompletar le mostrará una lista de variables.
— Albaro Pereyra

Arregle su marcado, pero su comentario aún no explica qué quería decir con "set-basic-offset" ni cómo "establece esa variable en 2".
— Stefan

Esta variable es obsoleta desde 26.1, use sh-basic-offseten su lugar.
— goetzc

0

Tuve la misma experiencia que Albaro: configurar sh-basic-offset sin efecto, pero configurar sh-indentación funcionando como se esperaba.

En mi caso, evalué (setq sh-basic-offset 2)con emacs, por ejemplo. a través de Mx eval-expression. Estoy funcionando GNU Emacs 25.2.2 (x86_64-pc-linux-gnu, GTK+ Version 3.22.21) of 2017-09-22, modified by Debian. Mi modo principal es Shell-script.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.