Wie erhalten Sie den Inhalt des Puffers als Zeichenfolge in vim?

Wie erhalten Sie den Inhalt des Puffers als Zeichenfolge in vim?

Ich versuche den Pufferinhalt in verschiedenen Funktionen zu verwenden.

Antwort1

Sie können joinund verwenden getline. Von: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()|.

und von: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)

Fassen wir das alles in einem nützlichen Beispiel zusammen:

:let buff=join(getline(1, '$'), "\n")

verwandte Informationen