我正在使用vim来记录我的日常工作。我通常用矩阵有很多结果。当我在一天结束时粘贴那些时,我有(有时)0或2列矩阵的页面
我的问题是如何让vim以编程方式格式化 这样:
R) DT = data.frame(x=rnorm(6),y=rnorm(6))
R) DT
x y
1 -0.0007499 0.7661
2 1.5559552 -0.6664
3 0.2082094 -0.1598
4 -0.1684766 -0.0536
5 3.1014233 -0.7439
6 0.1985104 2.0415
R) DT2 = data.frame(x=rnorm(7),y=rnorm(7))
R) DT2
x y
1 -0.005116 -0.4388
2 2.317381 0.6597
3 0.359883 0.4770
4 -1.426220 0.4911
5 0.468820 -0.3260
6 0.626147 -0.6254
7 -1.086660 2.1973
对此:并排
R) DT = data.frame(x=rnorm(6),y=rnorm(6)) R) DT2 = data.frame(x=rnorm(7),y=rnorm(7))
R) DT R) DT2
x y x y
1 -0.0007499 0.7661 1 -0.005116 -0.4388
2 1.5559552 -0.6664 2 2.317381 0.6597
3 0.2082094 -0.1598 3 0.359883 0.4770
4 -0.1684766 -0.0536 4 -1.426220 0.4911
5 3.1014233 -0.7439 5 0.468820 -0.3260
6 0.1985104 2.0415 6 0.626147 -0.6254
7 -1.086660 2.1973
编辑:
谢谢大家,肯特解决方案工作,奇怪的是set ve=all
我的C-Q
不允许选择像
############
###############
#########
#########
#########
我无法到达第二行的最后一列(使用gvim
上的win XP
)。
现在效果很好
我还将使用Ingo Karkat
插件“
答案 0 :(得分:1)
关键是 blockwise visual mode 。转到第二个块的开头(应该成为第一个块旁边的右列),按 Ctrl + V (在Windows上,这通常会重新映射到 Ctrl + Q ),用 $ 和 j j j 创建选择。 。 。,然后使用d
删除。然后转到第一个块的第一行, $ 转到行尾(可选择附加填充空格),然后粘贴 p 。第二个块应粘贴到光标的右侧。最后,您可以删除第二个块所在的空行。
我的UnconditionalPaste plugin简化了这项任务:然后您只需删除第二个块 dd 或 V j Ĵ Ĵ。 。 。 d ,并使用插件的 gdp 映射以块模式强制粘贴。
如果你找到一种方法来确定块的大小(} 键,跳转到下一个空行,可能会派上用场),你可以将所有步骤放入自定义映射。
答案 1 :(得分:1)
尝试以下步骤:
:set ve=all
将光标移动到行R) DT2 = data.frame(x=rnorm(7),y=rnorm(7))
按C-V
,然后使用动画魔法选择第二个块
按d
将光标移动到第一行,即要粘贴第二个块的位置。输入p
如果您的文字总是那样,您可以尝试这种映射:
:nnoremap <leader>mt :let &ve='all'<cr>gg/^R)<CR>n<c-v>G$dgg$3lp
然后您可以在正常模式下键入<leader>mt
进行转换。
注意
我在Windows上没有vim的经验......所以你可能不得不改变windows blockwise选择的映射。 <C-Q>
?不确定。
我假设文件的第一行是R)...
这会将第二个块粘贴到位置:第一行结束后的3个空格,如果要调整它,请在映射中更改数字