我在 vi 编辑器中打开了一个包含 9 列的文本,我喜欢用逗号替换第 9 列(最后一个)中的制表符,后跟一个空格。到目前为止,我想出了这个;
'2,$s#\(^.\{8\}\)\\t#\1\(\,\)#'
但这似乎不匹配任何东西......可能是我逃避了太多东西,但我也不知道您是否需要指定列分隔符(在这种情况下也是一个制表符)。对此的任何帮助将不胜感激。
%s/^\(\%(\t\?[^\t]\+\)\{8\}\)\t\(.*\)$/\1, \2/
这将替换 ( s):
^- 线的开始\(开始(第 1 组)
\%(内部组的开始
\t?0 或多个s(以说明在行Tab首缺少 a )Tab[^\t]\+后跟 1 个或多个Tab非\)内组结束\{8\}上述内组重复8次\)结束(第 1 组)\t其次是Tab\(.*\)以及其他(第 2 组)$直到行尾和:
\1- (第 1 组)(直到 8号Tab), - 逗号和空格\2- (第 2 组)(从第 8Tab行到行尾的所有内容)在整个缓冲区 ( %)。
如果这是一次性替换,您可以改用宏(从您希望更改的第一行的第一个字符开始):
qqfTab7;cl,SpaceEscj0q
其中按键如下:
然后使用@q播放下一行(或99@q播放接下来的 99 行等)。