我正在使用一个
vim-screen插件,它使我能够编写脚本,在同一个窗口中启动一个解释器并发送解释器的行.问题是解释器不接受写在几行上的语句.
为例:
这将起作用f:{[x] y:y 1; Z:y 1;位:Z; };
但这不会
f:{[x] y:y+1; Z:y+1; :Z; };
如何编写一个vim函数,我可以调用它来重塑行以便发送给解释器?
编辑:
我没有成功完成这个功能,我想创建一个函数,从这样的输入(可视化选择)
F:{[a;b;r] //ccc1 aaa1; aaa2; //ccc2 aaa3; };
输出这样的东西F:{[a; b; r] aaa1; aaa2; aaa3; };
所以我创造了一笔赏金
解决方法
如果你想实际修改缓冲区,J /:join就是这样做的.如果您只想加入发送给解释器的行(但保持它们在缓冲区中分割),您可以使用getline()检索选定的行,然后加入()它们.这是一个示例命令:
:command! -range Invoke echomsg join(getline(<line1>,<line2>),'')
编辑
基于此,您可以“按摩”getline()返回的行列表.例如.忽略注释行:
:command! -range Invoke echomsg join(filter(getline(<line1>,'v:val !~# "^\\s*//"'),'')
另外剥离前导空格(这在单行中变得难以处理;现在更好地使用函数):
:command! -range Invoke echomsg join(map(filter(getline(<line1>,'substitute(v:val,"^\\s\\+"," ","g")'),'')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。