sta*_*ant 4 vim configuration screen kdb
我使用的vim-screen插件使我能够编写脚本,在同一窗口中启动解释器并向解释器发送行.问题是解释器不接受写在几行上的语句.
例如:这将有效 f:{[x] y:y+1; Z:y+1; :Z; };
但这不会
f:{[x] y:y+1;
Z:y+1;
:Z;
};
Run Code Online (Sandbox Code Playgroud)
如何编写一个vim函数,我可以调用它来重塑行以便发送给解释器?
编辑:我没有成功完成这个功能,我想创建一个函数,从这样的输入(可视化选择)
F:{[a;b;r]
//ccc1
aaa1;
aaa2;
//ccc2
aaa3;
};
Run Code Online (Sandbox Code Playgroud)
输出这样的东西F:{[a;b;r] aaa1; aaa2; aaa3; };
所以我创造了一个赏金
如果你想实际修改缓冲区,J/ :join做那个.如果您只想加入发送到解释器的行(但保持它们在缓冲区中分割),您可以使用getline(),然后检索所选行join().这是一个示例命令:
:command! -range Invoke echomsg join(getline(<line1>,<line2>), '')
Run Code Online (Sandbox Code Playgroud)
基于此,您可以"按摩"返回的行列表getline().例如,忽略注释行:
:command! -range Invoke echomsg join(filter(getline(<line1>,<line2>), 'v:val !~# "^\\s*//"'), '')
Run Code Online (Sandbox Code Playgroud)
另外剥离前导空格(这在单行中变得难以处理;现在更好地使用函数):
:command! -range Invoke echomsg join(map(filter(getline(<line1>,<line2>), 'v:val !~# "^\\s*//"'), 'substitute(v:val, "^\\s\\+", " ", "g")'), '')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
282 次 |
| 最近记录: |