Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Vim替换方法时出错_Vim - Fatal编程技术网

使用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发现了实际的问题,这是我的错别字。哎哟。事实上,既然这些是双引号,你不也需要转义你添加的“\”字符(
“{\.\.\.\.\\.\.\”
)或者只使用单引号,
“{\.\.\.\.\..