(注:这是我的第一篇帖子)
在Vim文件中,我如何一次性交换第15行和第33行(例如)?
最快的方法是移动行:
:33m 15|15m 33
将第33行移动到第15行下面,然后将第15行移动到第33行下面。
最好先按“将高行号移至低行号”进行操作,否则您必须调整偏移量:
:15m 33|32m 14
:33 | delete | 15 | put | 15 | delete | 32 | put
...or...
13ggdd15ggPjdd33ggP
当写下来时,这种方法需要的按键较少,但有点难以理解!
:33 | delete | 15 | put | 15 | delete | 32 | put
。 - Amarghosh如果我已经在文件中,我发现这个命令是最快的方式:
:15mo33
我经常使用以下内容:
" Tip #470 : Piet Delport & Anthony (ad_scriven)
vnoremap <silent> g" <esc>:call <sid>SwapVisualWithCut()<cr>
function! s:SwapVisualWithCut()
normal! `.``
if line(".")==line("'.") && col(".") < col("'.")
let c = col('.')
normal! gvp```]
let c = col('.') - c
normal! ``
:silent call cursor(line("."),col(".")+c)
normal! P
else
normal! gvp``P
endif
endfunction
这个想法是在任何地方删除一些内容,然后去选择其他字符,按下g"
键,将删除的字符与新选择的字符交换。
:put
和 delete
更简单。 - Luc Hermitte
dd14jpkdd14kP
。 - Amarghosh