Como você obtém o conteúdo do buffer como uma string no vim?

4

Estou tentando usar o conteúdo do buffer em várias funções.

    
por Gavin Haynes 01.10.2016 / 21:06

1 resposta

4

Você pode usar join e getline . De :h join

join({list} [, {sep}])                  *join()*
        Join the items in {list} together into one String.
        When {sep} is specified it is put in between the items.  If
        {sep} is omitted a single space is used.
        Note that {sep} is not added at the end.  You might want to
        add it there too: >
            let lines = join(mylist, "\n") . "\n"
<       String items are used as-is.  |Lists| and |Dictionaries| are
        converted into a string like with |string()|.
        The opposite function is |split()|.

e de :h getline

getline({lnum} [, {end}])
        Without {end} the result is a String, which is line {lnum}
        from the current buffer.  Example: >
            getline(1)

...

        When {end} is given the result is a |List| where each item is
        a line from the current buffer in the range {lnum} to {end},
        including line {end}.
        {end} is used in the same way as {lnum}.
        Non-existing lines are silently omitted.
        When {end} is before {lnum} an empty |List| is returned.
        Example: >
            :let start = line('.')
            :let end = search("^$") - 1
            :let lines = getline(start, end)

Colocando tudo isso junto em um exemplo útil:

:let buff=join(getline(1, '$'), "\n")
    
por 01.10.2016 / 22:22

Tags