配置 – 如何在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; }; 如何编写一个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")'),'') (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |