2011-12-31 13 views
17

Puedo usar vi{ y va{ para seleccionar bloques de código C++. Me ayuda mucho cuando necesito jalar/eliminarlos.¿Cómo seleccionar el bloque de código Python usando Vim?

Pero Python usa la sangría para indicar bloques de código. No puedo encontrar una mejor manera. ¿Algunas ideas?

+0

posible duplicado de [Mark block basado en el nivel de sangrado en Vim] (http://stackoverflow.com/questions/7377771/mark-block-based-on-indentation-level-in-vim) –

Respuesta

23

No he tenido mucha ocasión de usarlo todavía, pero el vim-indent-object de Michael Smith parece que puede estar cerca de lo que desea.

Ejemplo de uso (los números de línea que se muestran al igual que con set number activo):

1 This is 
    2 some text 
    3  with multiple 
    4 levels of 
    5 indentation. 
    6 There is also 
    7  another stanza. 

Con el cursor en la línea 2, 4 o 5, tipo Vii para seleccionar las líneas 2 a 5.
Con el cursor en línea 3, tipo Vai para seleccionar las líneas 2 a 3.
Con el cursor en la línea 3, escriba Vaiii (o Viiii), para seleccionar las líneas 2 a 5 (en modo visual, los usos múltiples de los objetos de indentación amplían la selección al siguiente nivel subir).

Los objetos de texto que define son:

  • ai: el nivel de sangría actual más la línea anterior
    útil cuando se quieren agarrar la línea de introducción (por ejemplo, agarrar el if y su bloque “y luego”)
  • ii: el nivel
  • aI indentación actual: el nivel actual de indentación más la una línea por encima y una línea por debajo de
    USEF ul para lenguajes que usan enunciados "finales": if/endif).
  • iI: el nivel de sangría actual (efectivamente, ii, y iI son los mismos)

Los objetos también se pueden utilizar con otros comandos que esperan los objetos de texto (es decir cii para borrar el nivel de sangría actual y de inicio insertando su reemplazo).

+0

¿Funciona cuando el nivel de sangría actual tiene líneas en blanco? – industryworker3595112

6

Simplemente presiono v para el modo visual y luego ( o ). Esto lo llevará a la siguiente línea en blanco. Eso debería corresponder a sus bloques de código si está formateando muy bien.

+1

¿Es esto correcto?'{}' son para párrafos y pasarían a la siguiente línea en blanco. – progo

+1

'(' y ')' son para oraciones. "Una oración se define como que termina en un' .', '!' O '?' Seguido por el final de una línea o por un espacio o pestaña. " –

1

Puede mostrar líneas (: establecer nu) y luego ir a la línea donde comienza el bloque de código (: lineNumber) y tirar de ellas.

0

Para python, generalmente utilizo "zM" para doblar todo el archivo, y luego "2yy" para extraer toda la función.

Si su función es en el interior un poco de clase, puede utilizar "ZC" en lugar de "zM"

Es necesario añadir siguiente línea a ~/.vimrc hacer zM/trabajo ZC:

autocmd FileType python set foldmethod=indent 
Cuestiones relacionadas