我有一套代表设计的平面文件(对于好奇的,这些是游戏矮人要塞的堡垒蓝图):
其中一个看起来像这样:
`,`,`,`,`,`,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,d,d
`,`,`,`,`,`,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,d,d
`,`,d,d,d,d,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,d,d
`,`,d,d,d,d,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,d,d
`,`,d,d,d,d,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,d,d
`,`,d,d,d,d,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,d,d
`,`,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d
`,`,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d
`,`,d,d,d,d,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,d,d
`,`,d,d,d,d,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,d,d
`,`,d,d,d,d,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,d,d
`,`,d,d,d,d,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,d,d
`,`,`,`,`,`,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,d,d
`,`,`,`,`,`,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,d,d
`,`,`,`,`,`,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,d,d
我想镜像左边的图案,然后粘贴在右边。
使用简单的视觉选择我可以从右到左猛拉并粘贴图案,结果是:
`,`,`,`,`,`,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,d,d`,`,`,`,`,`,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,
`,`,`,`,`,`,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,d,d`,`,`,`,`,`,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,
`,`,d,d,d,d,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,d,d`,`,d,d,d,d,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,
`,`,d,d,d,d,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,d,d`,`,d,d,d,d,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,
`,`,d,d,d,d,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,d,d`,`,d,d,d,d,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,
`,`,d,d,d,d,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,d,d`,`,d,d,d,d,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,
`,`,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d`,`,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,
`,`,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d`,`,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,
`,`,d,d,d,d,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,d,d`,`,d,d,d,d,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,
`,`,d,d,d,d,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,d,d`,`,d,d,d,d,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,
`,`,d,d,d,d,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,d,d`,`,d,d,d,d,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,
`,`,d,d,d,d,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,d,d`,`,d,d,d,d,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,
`,`,`,`,`,`,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,d,d`,`,`,`,`,`,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,
`,`,`,`,`,`,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,d,d`,`,`,`,`,`,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,
`,`,`,`,`,`,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,d,d`,`,`,`,`,`,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,
所需的结果大致(手动完成):
`,`,`,`,`,`,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,d,d,`,`,`,`,`,`
`,`,`,`,`,`,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,d,d,`,`,`,`,`,`
`,`,d,d,d,d,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,d,d,d,d,d,d,`,`
`,`,d,d,d,d,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,d,d,d,d,d,d,`,`
`,`,d,d,d,d,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,d,d,d,d,d,d,`,`
`,`,d,d,d,d,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,d,d,d,d,d,d,`,`
`,`,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,`,`
`,`,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,`,`
`,`,d,d,d,d,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,d,d,d,d,d,d,`,`
`,`,d,d,d,d,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,d,d,d,d,d,d,`,`
`,`,d,d,d,d,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,d,d,d,d,d,d,`,`
`,`,d,d,d,d,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,d,d,d,d,d,d,`,`
`,`,`,`,`,`,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,d,d,`,`,`,`,`,`
`,`,`,`,`,`,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,d,d,`,`,`,`,`,`
`,`,`,`,`,`,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,d,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,d,d,`,`,`,`,`,`
如何将粘贴的视觉选择水平镜像到位?什么是镜像任意视觉选择块到位?
的解决方案我尝试过直观地选择它并运行:'<,'>!rev
,但这会导致视觉选择中的每一行都反转,而不是只是实际选择的列。 (pastebin of result)
我已经尝试了建议here的;rv
映射,虽然这确实反转了视觉块,但它将它放在一个新行(pastebin of result)上
后者ALMOST做我想要的,因为我可以手动将反转的块拉回/粘贴到位,但是如果它不在线的末尾则不会很好。
注意上面关于任意块的问题的第二部分,我希望这适用于其他情况,其中要被镜像的块位于行的末尾,行的开头或者在中间
答案 0 :(得分:3)
vim有一个选项ri
,它会反向插入,我认为它可以帮助您解决问题,但我没有弄清楚如何将它用于您的问题。
但总有办法做到这一点。我用映射写了一个小函数:
function! Mirror()
try
let v_save = @v
normal! gv"vy
let l = split(@v,'\n')
call map(l,'join(reverse(split(v:val,"\\ze")),"")')
call setreg('v',join(l,"\n"),visualmode())
normal! $"vp
finally
let @v=v_save
endtry
endfunction
noremap <silent> <leader>mr :<c-u>call Mirror()<cr>
获取源代码,然后直观地选择要“镜像”的块文本,然后按:
<leader>mr
它会为你做镜子。新文本总是在行尾。这适用于您当前的问题。如果您想要更改它,可以修改行
normal! $"vp
好吧,我也制作了动画:(我缩短了你的示例文字,用于展示演示)
答案 1 :(得分:0)
这对我有用,它是一个bash cmd,你可以编写脚本:
while read line; do reverse="$(echo "$line" | awk -F "," 'BEGIN {OFS=","} {rev="";for(i=NF-2;i>0;i--) {rev= rev "," $i}; print rev }')"; echo "$line,$revers";done < yourFile
请注意,它假定您不想复制模式的最后两列。
好吗?