在 vim 中如何以字串形式取得緩衝區的內容?

在 vim 中如何以字串形式取得緩衝區的內容?

我正在嘗試在各種函數中使用緩衝區內容。

答案1

您可以使用joingetline。從: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()|.

和來自: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)

將所有這些放在一起成為一個有用的範例:

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

相關內容