2010-01-14 19 views
51

Siempre que quiero añadir un comentario a una línea de sangría en vim, me golpeó Shift - o (abrir una nueva fila encima de la corriente, cambie al modo de inserción) y comience a escribir un comentario de Python (usando #). Ese hash se mueve mágicamente al principio de la línea (sin sangría) y tengo que hacer clic en la pestaña varias veces.Comentarios (#) van al inicio de la línea en el modo de inserción en Vim

¿Alguien sabe cómo evitarlo?

Respuesta

52

supongo que tienes set smartindent en su .vimrc

Ver :h smartindent

When typing '#' as the first character in a new line, the indent for 
that line is removed, the '#' is put in the first column. The indent 
is restored for the next line. If you don't want this, use this 
mapping: ":inoremap # X^H#", where ^H is entered with CTRL-V CTRL-H. 
When using the ">>" command, lines starting with '#' are not shifted 
right. 

Creo que no es necesario smartindenting mientras que la codificación pitón. Por lo que sólo sacarlo de su configuración o añadir lo siguiente a su .vimrc:

au! FileType python setl nosmartindent 
+0

Esa respuesta obviamente está en el dinero, muchas gracias. Me había perdido esto completamente. Sin embargo, no estoy de acuerdo con el hecho de que no necesito el smartindenting ya que Python se trata de eso. Solo puedo agregar la excepción, en su lugar. Me pregunto, sin embargo, ¿cuál es el mejor, el mapa inoremap del manual o el proporcionado por Haes? O más bien, ¿cuál es la diferencia? –

+2

Creo que para python 'smartindent' es inútil. El programador de Python no necesita una sangría para insertarse automáticamente 1. después de una línea que termina en '{'; 2. antes de una línea que comienza con '}'. Y las palabras clave de 'cinwords' se procesan correctamente mediante la sangría de tipo de archivo python. –

+0

Básicamente inoremaps son lo mismo. El único inconveniente que tiene este inoremap es que no puedes desplazar los comentarios a la derecha con '>>' –

1

Es posible que desee probar Nerd Commenter, que es un complemento que le permite agregar comentarios a las líneas en la mayoría de los idiomas automáticamente. Simplemente coloque el cursor en la línea que le interesa y escriba ,cEspacio y la línea se comentará. Las mismas teclas borrarán el comentario para revelar la línea.

Así que si usted tiene:

def func(): 
    print("indented") <- cursor position in command mode 

Tipo ,cespacio y se obtiene:

def func(): 
    #print("indented") 
+0

comments.vim es una alternativa ligera http://www.vim.org/scripts/script.php?script_id=1528 – Shaun

9

tratar de poner eso en su .vimrc:

autocmd BufRead *.py inoremap # X<c-h># 

Esto hará que la inserción del signo de almohadilla (almohadilla) siempre se sangra en los archivos fuente de Python.

+0

Gracias @Haes, en realidad preferiría dejar SmartIndent mientras edito archivos Python. Quizás es trivial agregar una 'pestaña' después de comenzar una nueva instrucción if, pero es a lo que estoy acostumbrado. – isaaclw

+1

Ok, en realidad lo que necesitaba era "sangría del complemento filetype", luego deshabilité smartindent para python. – isaaclw

Cuestiones relacionadas