Monologo indekso » komputilo » tie ĉi
Enŝovi karaktrojn en ventan bufron
Merkredo 2011.08.10 22:06

Kaze de komandi karaktrojn en bufro per vim-skripto, vi utiligos funkcion kiel "setline" aŭ "append".

"setline" kapablas superskribi karaktrojn de difininta bufero, kaj "append" kapablas enŝovi karaktrojn al sekvanta linio de difininta.


setline(lnum, expr) : al ĝia "lnum" vi destinos lini-numeron, kaj al "expr" karaktrojn aŭ liston.

append(lnum, expr) : samkiel supera.


Se komandi kiel setline(11, 'foobar') , tuta 11-a linio fariĝos "foobar".

Se komandi kiel append(11, 'foobar') , karaktroj "foobar" enŝovos de 12-a linio, kaj eksa 12-a linio translokiĝos al 13-a.


Se al la bufro superskribi, vi devas utiligi "setline", se tie enŝovi, vi devas utiligi "append".


Ekzemple se substitui karaktrojn "tunnel" al "tunelo" en ĉiuj linioj inkludanta karaktrojn "Esperanto" en kuranta bufro, vi povos jena.

call cursor(1,1)
while (search('Esperanto', 'W') != 0)
    call setline('.', substitute(getline('.'), 'tunnel', 'tunelo', 'g'))
endwhile

Se enŝovi plurajn liniojn, vi utiligos liston.

call append('.', ['ABCĈDEFGĜ', 'HĤIJĵKLMN'])

Per tia vim-skripto, ekzemple vi eblas facile enŝovi ŝablonon de hiperteksto(HTML), ktp.


Kiam vi enŝovos ŝablonon en ventan bufron, ĝi estos enŝovata post 2-a linio se utiligi "append"-n kaj difini 1-an linion. (Rememoru ke "append" enŝovas karaktrojn al sekvanta linio de difininta.)

Tamen se difini 0-an, venta linio fariĝi en fino de la bufro. (Ĉar bufero havas 1 linion minimume, kaj funkcio de "append" estas enŝovi.)


Tial, se simple enŝovi karaktrojn en ventan bufron, vi devas utiligi "setline"-n, kaj difini 1-an utilige liston.

call setline(1, ['unua linio', 'dua linio', 'tria linio'])

Atentu se bufro ne estas venta. La funkcio de "setline" estas superskribi, tial se laŭ la supera, la linioj inter 1-a kaj 3-a estos superskribata al la superaj 3 linioj.

"append" enŝovas novajn liniojn por numero de elementoj de listo difininta, kaj "setline" superskribas liniojn por numero de elementoj de listo.


Tial mi supozas, ke se enŝovi ŝablonon en ventan bufron, vi devas utiligi la funkcion "setline".

« reen
Japane indekso
inserted by FC2 system