2017-04-24 47 views
0

我试图让当前缓冲区的全部文本。我相信这是由“%”来表示(见答案由SnoringFrog在https://vi.stackexchange.com/questions/2319/is-there-a-text-object-for-the-entire-buffer)。但是,下面的函数给出了一个错误:没有能够得到当前缓冲区的整个文本在vim

function Check() 
    echo % 
endfunction 

我用下面的命令调用它:

:call Check() 

的错误是:

Error detected while processing function Check: 
line 1: 
E15: Invalid expression: % 
E15: Invalid expression: % 

问题出在哪里以及如何可以解决?

回答

1

根据上下文,%可以是1,$范围的快捷方式或与当前缓冲区关联的文件名的占位符。

在第一种情况下(一个在您的链接),它并不意味着在所有这将是完全没有意义的,要回馈。

在第二种情况下,它需要与expand('%')扩大,如果你想在函数中使用它。

无论如何,没有关系,因为%不是你想要的根本就是。你想要的是:help getline()

function Check() 
    echo getline(1,'$') 
endfunction 
+0

是的,它的工作原理。但空白行被忽略。也可以将它们包含在从getline函数获得的列表中。 – rnso

+0

没有,空行不会被忽略。 – romainl

相关问题