使用Vim替换方法时出错
我正在使用使用Vim替换方法时出错,vim,Vim,我正在使用substitute()方法编写Vim脚本,以便代码折叠看起来不同 ~/.vimrc中的代码如下: function! FoldText() let width = winwidth(0) - &foldcolumn - (&number ? 4 : 0) let first_line = getline(v:foldstart) . " ..." let edited_line = subsitute(first_line, "{ \.\.\.", "{
substitute()
方法编写Vim脚本,以便代码折叠看起来不同
~/.vimrc
中的代码如下:
function! FoldText()
let width = winwidth(0) - &foldcolumn - (&number ? 4 : 0)
let first_line = getline(v:foldstart) . " ..."
let edited_line = subsitute(first_line, "{ \.\.\.", "{ ... }", "")
let expansion_string = repeat(" ", width)
return edited_line . expansion_string
endfunction
set foldtext=FoldText()
问题是这不起作用,我每次折叠都会得到:
0-------------------------------------------------------------------------------
如果我取出编辑的\u行
并返回第一行。扩展\u text
第一部分工作:
class Whatever { ...
但出于纯粹的美学原因,我喜欢以支架开始的褶皱来显示支架:
class Whatever { ... }
我没有太多地使用VimScript,这主要是从中删减的,所以我想我缺少一些基本的东西。谢谢
表示“任何字符”。必须将其转义以匹配实际的
:
let edited_line = substitute(first_line, "{ \.\.\.", "{ ... }", "")
请注意,您可以使用以下内容避免这种替换:
return getline(v:foldstart) . " ... }" . repeat(" ", width)
表示“任何字符”。必须将其转义以匹配实际的
:
let edited_line = substitute(first_line, "{ \.\.\.", "{ ... }", "")
请注意,您可以使用以下内容避免这种替换:
return getline(v:foldstart) . " ... }" . repeat(" ", width)
0
来自函数名中的输入错误。当Vim计算'foldtext'
函数时,它显然会抑制错误(这会使编辑器不知所措),因此未定义的函数substitute()
返回默认值0
此外,(虽然在这里不会造成伤害),您应该在模式中避开
,因为这指定了正则表达式,而不是文本;要么单独逃离它们({\.\.\.
),要么切换到非常游牧的状态:
0
来自函数名中的输入错误。当Vim计算'foldtext'
函数时,它显然会抑制错误(这将淹没编辑器),因此未定义的函数substitute()
返回默认值0
此外,(虽然在这里不会造成伤害),您应该转义模式中的
,因为这指定了一个正则表达式,而不是文本;或者单独转义({\.\.\.\.
),或者切换到非常正常的模式:
你在原稿中也有那个打字错误吗?好吧,达格·纳米特:)很好,这就是问题所在!绊脚石是正常的错误被抑制了。我在回答中添加了更多细节。你有那个打字错误吗(
substitute
)同样在原稿中?!嗯,达格·纳米特:)很好地发现了,这就是问题所在!绊脚石是正常的错误被抑制了。我在我的答案中添加了更多细节。这是一个很好的观点,我通过避开
,更新了我的代码,使之更具体。然而,Ingo Karkat发现了实际的问题这是我的一个输入错误。哎呀。事实上,既然这些都是双引号,你不也需要转义你添加的“\”字符(“{\\\\\\\\\\\\\\\\\\.”
)吗?还是只使用单引号,{\.\.\.\.
这是一个很好的观点,我通过转义
s更新了我的代码,使之更加具体。然而,Ingo Karkat发现了实际的问题,这是我的错别字。哎哟。事实上,既然这些是双引号,你不也需要转义你添加的“\”字符(“{\.\.\.\.\\.\.\”
)或者只使用单引号,“{\.\.\.\.\..