我知道我可以使用:!
通过外部命令通过视觉选择来管理选定的行,但有没有办法对一行中的单个单词执行相同的操作?我需要在配置文件中使用base64编码令牌,我遇到了麻烦,整条线都被发送到base64
。如果我将单词移动到它自己的行,我最后会在base64字符串中编码一个尾随的\n
字符。我知道有一个专门为此设计的插件,但一般情况下,可以通过外部程序将缓冲区的单元管道小于整行吗?
答案 0 :(得分:4)
Ex命令(:!
是其中之一)都是基于行的,因为此模式所基于的 ex编辑器是行 - 基于
如果您经常需要过滤部分行,我确实建议使用其中一个插件。如果您想手动执行此操作,@ romainl的答案概述了(繁琐的)步骤 - 插件可以大大简化:
:B !base64
]Y
/ [Y
映射直接编码/解码Base64(在Vimscript中实现)g=
运算符,然后将查询要应用于它的表达式。您可以在此处使用!base64
。答案 1 :(得分:3)
Ex命令(以:
开头的所有内容)在线上工作,你无能为力。
过滤"非线路"更多参与。你需要:
简而言之:
c<C-r>=system('echo "<C-r>"" | base64 | tr -d "\n"')<CR>
这显然比过滤线要多得多。将它映射到更容易的东西。