¿Cómo puedo sangrar automáticamente en nuevas líneas?

15

Trabajo en proyectos con diferentes niveles de sangría. En muchos de estos proyectos, debido a la estructura típica de los archivos, la mayoría de las líneas tienen sangría al menos en dos niveles (como los métodos en archivos Java).

Esto significaría que crear una nueva línea cuando está en una línea

public void something () {

Traería mi cursor a la siguiente línea, sangrado automáticamente, como

public void something () {
    [cursor]

Si bien puedo presionar la tecla Tab varias veces en una nueva línea para que se alinee, ¿hay una mejor manera de hacerlo (posible automáticamente)?

Kevin Brown
fuente

Respuestas:

12

Esto se puede hacer usando una combinación de la autoindentopción y el filetypecomplemento.

La autoindentopción copiará su sangría actual al crear una nueva línea. Entonces, si su nivel de sangría actual es 4 cuando comienza la nueva línea, el cursor se moverá al mismo nivel de sangría en la siguiente línea.

En tu ~/.vimrcarchivo, pondrías

set autoindent

También puede usar el filetypecomplemento para determinar automáticamente el siguiente nivel de sangría según el tipo de archivo.

Puede habilitar esto sobre la marcha con

:filetype indent on

O, en su ~/.vimrcarchivo pondría

filetype plugin indent on

Lo que determinará automáticamente la sangría según el tipo de archivo.

Kevin Brown
fuente
6

Use :set cindent( :set cinpara abreviar) o :set smartindent( :set sipara abreviar). Si su línea termina en una llave de apertura, y usted golpea Enter, la siguiente línea se sangrará automáticamente un nivel adicional. (Esto es mejor que :set autoindent, lo que simplemente sangra la siguiente línea en el mismo nivel). cindentSe adapta mejor a los lenguajes tipo C, mientras que smartindentes más versátil para usar con otros lenguajes de programación.

La cantidad y el tipo de indentación está controlada por :set shiftwidth=…, :set tabstop=…y :set expandtab.

200_success
fuente
'smartindent'está en desuso, por lo que no es la mejor opción. Ha sido reemplazado por 'cindent'y 'cinoptions'para lenguajes tipo C. Sin embargo, en general, la sangría de tipo de archivo es el camino a seguir, con 'autoindent'una alternativa.
jamessan
@jamessan smartindentno está en desuso, pero cindentvale la pena señalar. He actualizado la respuesta. (¡Gracias!)
200_success
También te recomiendo que eches un vistazo a editorconfig.org . Por supuesto, hay un complemento para vim (y muchos otros editores) y es una excelente manera de mantener los valores predeterminados de su editor en su VCS
Cyber ​​Oliveira
0

Al final del archivo, estoy usando:

# vim: ts=2 sw=2 sts=2 sr noet st ai si

Por ejemplo Dockerfile:

FROM centos-7
RUN ...
CMD ...

# vim: ts=2 sw=2 sts=2 sr noet st ai si

Si desea mantener solo la sangría, use # vim: st ai si

Eduardo Cuomo
fuente