加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

配置 – 如何在vim中连接多行

发布时间:2020-12-15 21:33:56 所属栏目:安全 来源:网络整理
导读:我正在使用一个 vim-screen插件,它使我能够编写脚本,在同一个窗口中启动一个解释器并发送解释器的行.问题是解释器不接受写在几行上的语句. 为例: 这将起作用f:{[x] y:y 1; Z:y 1;位:Z; }; 但这不会 f:{[x] y:y+1; Z:y+1; :Z; }; 如何编写一个vim函数,我
我正在使用一个 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")'),'')

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读