2012-07-16 7 views
12

estoy tratando de crear una asignación de Vim que operará en la línea actual, teniendo una cadena como esta:¿Cómo puedo pasar la línea actual a una función de Vimscript?

[boiled cabbage, mad donkey, elephant, very dark fudge] 

Y citando a todos los elementos de la lista para terminar con esto:

["boiled cabbage", "mad donkey", "elephant", "very dark fudge"] 

Intenté con vim regexes, pero pensé que sería más fácil escribir una función que tome la línea actual como argumento y devuelva la línea transformada. No tengo problemas para realizar la transformación en vimscript. Pero ¿cómo puedo pasar la línea actual a la función, y cómo puedo reemplazar la línea con la línea transformada?

+2

te pregunta ha sido contestada, pero recomiendo que eche un vistazo a ': ayuda función list'. – Raimondi

Respuesta

29

Para obtener la línea actual se puede utilizar

let line=getline('.') 

(nota: también se puede hacer getline(10, 20) para obtener una lista de 11 líneas).

Para establecer la línea actual puede utilizar

call setline('.', line) 

. También puede reemplazar un número de líneas comenzando por el actual si pasa una lista a esta función.

Cuestiones relacionadas