gpt4 book ai didi

configuration - 如何在vim中连接几行

转载 作者:行者123 更新时间:2023-12-05 00:27:30 25 4
gpt4 key购买 nike

我正在使用 vim-screen使我能够编写脚本、在同一窗口中启动解释器并向解释器发送行的插件。问题是解释器不接受写在多行上的语句。

例子:
这将起作用 f:{[x] y:y+1; Z:y+1; :Z; };
但这不会

f:{[x] y:y+1;
Z:y+1;
:Z;
};

我如何编写一个 vim 函数,我可以调用它来 reshape 线条以便发送给解释器?

编辑 :
我在制作这个功能时没有成功,我想创建一个功能,从这样的输入(将在视觉上选择)
F:{[a;b;r]
//ccc1
aaa1;
aaa2;
//ccc2
aaa3;
};

输出这样的东西 F:{[a;b;r] aaa1; aaa2; aaa3; };所以我创造了一个赏金

最佳答案

如果要实际修改缓冲区,J/:join去做。如果您只想加入发送到解释器的行(但将它们分开在缓冲区中),您可以使用 getline() 检索所选行。 ,然后 join()他们。这是一个示例命令:

:command! -range Invoke echomsg join(getline(<line1>,<line2>), '')

编辑

基于此,您可以“按摩” getline() 返回的行列表。 .例如。忽略注释行:
:command! -range Invoke echomsg join(filter(getline(<line1>,<line2>), 'v:val !~# "^\\s*//"'), '')

另外去除前导空格(这在一行中变得笨拙;现在最好使用函数):
:command! -range Invoke echomsg join(map(filter(getline(<line1>,<line2>), 'v:val !~# "^\\s*//"'), 'substitute(v:val, "^\\s\\+", " ", "g")'), '')

关于configuration - 如何在vim中连接几行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20419485/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com