vim中有一个简单的命令可以循环旋转数组吗?
例如,在文本中选择“1,2,3”并按快捷键 应将所选文本替换为“2,3,1”。
理想情况下,该命令应允许任意循环移位。
答案 0 :(得分:4)
你的意思是:
function! s:Rotate(list, rot)
let res = a:list[a:rot :] + a:list[: (a:rot-1)]
return res
endfunction
xnoremap <silent> <c-x>r s<c-r>=join(s:Rotate(split(@", ', *'), v:count1), ', ')<cr><esc>gv
直观地选择您的列表。点击CTRL-X
然后r
和tada!。如果您想一次旋转多个元素,请在CTRL-X_r
答案 1 :(得分:3)
Argumentative.vim插件允许转换参数。这个想法是你用一个过大的数量来移动第一个参数,例如99。
99>,
这会将第一个参数移动到数组的末尾。然后,您可以使用边界运动[,
99[,
您可能还想看一下sideways.vim,它提供与argumentative.vim类似的功能。
答案 2 :(得分:1)
我不知道Vim是否有某种内置的“移位技术”,但我建议使用yank和put命令,甚至更好地使用exchange.vim。有关详细信息,请在video上观看此vimcast.org。