Ответ 1
Чтобы заменить текущую строку следующей, введите ddp
находясь в командном режиме.
- dd - удалить строку (на самом деле называется cut в других редакторах) и сохранить ее в регистре
- p - вставить строку из регистра
У меня есть это:
pick 887b66f add 222 Dziewiecsil to flowers new title
pick dc331cb new name of beginning commit
И я хочу получить следующее:
pick dc331cb new name of beginning commit
pick 887b66f add 222 Dziewiecsil to flowers new title
Есть ли способ сделать это быстро, используя быстрые клавиши?
Чтобы заменить текущую строку следующей, введите ddp
находясь в командном режиме.
dd
удаляет текущую строку, затем вы можете вставить удаленную строку с помощью p
. Там другой способ, используя m
. С помощью m
вы можете перемещать линии вокруг i.e.
:m 1
будет перемещать текущую строку после строки 1
:m 0
переместит текущую строку вверх
:m $
переместит текущую строку вниз
В вашем примере поместите курсор в первую строку и введите :m $
Дополнительная информация: http://vim.wikia.com/wiki/Moving_lines_up_or_down
Несмотря на то, что вопрос довольно старый и помечен как ответ, я хотел бы расширить ответ, сказав, что вы можете использовать команды нормального режима, которые были предоставлены Свеном Марначом с помощью nnoremap
следующим образом:
:nnoremap <C-Up> <Up>ddp<Up>
:nnoremap <C-Down> ddp
Это позволит вам перемещать строки с Ctrl + Up и Ctrl + Down в вашем файле. Однако это перезапишет регистр @"
, в котором хранится ваша последняя скопированная строка/слово/буква/и т.д. Таким образом, добавив" (reg) перед командами dd
и p
мы можем исправить это:
:nnoremap <C-Up> <Up>"add"ap<Up>
:nnoremap <C-Down> "add"ap
Здесь мы добавляем команды "a
перед удалением и @a
для сохранения нашей строки в регистре @a
, поэтому ваш регистр копирования по умолчанию не будет перезаписан. Однако он может перезаписать содержимое регистра @a
(кто знает, но вы можете использовать его для чего-то важного в вашем случае использования, но этот шаг немного параноидален, вы можете пропустить его, если хотите), давайте исправим это тоже:
:nnoremap <silent><C-Up> :let [email protected]<Cr><Up>"add"ap<Up>:let @a=save_a<Cr>
:nnoremap <silent><C-Down> :let [email protected]<Cr>"add"ap:let @a=save_a<Cr>
(<silent>
необходимо, чтобы предотвратить вывод наших команд в строку сообщения внизу.)
Теперь у нас есть два сопоставления, которые позволяют нам перемещать строки в файле с помощью сочетаний клавиш. Вы можете переопределить кнопки, я использую Alt + j/k, которые будут <Aj>
и <Ak>
для этих команд. Однако не все эмуляторы терминала поддерживают сопоставления клавиш Alt AFAIK.