Vim: поменяйте местами 2 дальние линии за один ход - PullRequest
4 голосов
/ 03 июня 2010

(NB: мой первый пост)

Как мне поменять местами в Vim-файле строку 15 и строку 33 (например,)?

Ответы [ 4 ]

8 голосов
/ 08 июня 2010

Самый быстрый способ - переместить строки:

:33m 15|15m 33

Переместить строку 33 ниже строки 15, затем переместить строку 15 ниже строки 33.

Лучше всего это сделатьсначала «переместить старшее число ниже младшего», в противном случае вам необходимо отрегулировать смещения:

:15m 33|32m 14

4 голосов
/ 03 июня 2010

Два способа, о которых я могу думать. С Vim возможно больше!

:33 | delete | 15 | put | 15 | delete | 32 | put

... или ...

13ggdd15ggPjdd33ggP

... что меньше нажатий клавиш, но немного менее понятно, когда записано!

3 голосов
/ 10 декабря 2012

Я нашел эту команду самым быстрым способом, если я в файле:

:15mo33
1 голос
/ 03 июня 2010

Я часто использую следующее:

" 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", чтобы поменять удаляемые символы на недавно выбранные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...