У меня есть это:
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
Есть ли способ сделать это быстро с помощью сочетаний клавиш?
git config --global core.editor <whatever>
или сразу для многих (включая git), включивexport EDITOR=<whatever>
в свой.bashrc
.Ответы:
Чтобы заменить текущую строку на следующую, введите
ddp
в командном режиме.источник
ddp
. Если вы еще не находитесь в командном режиме, нажмите,Esc
чтобы перейти в командный режим.dd
удаляет текущую строку после копирования в "регистр".p
копирует («помещает») содержимое регистра в ваш буфер после текущей строки. Точно так же вы можете поменять местами два символа с помощьюxp
или два слова с помощьюdwwP
.dwwP
это не работает одинаково, если два слова находятся в конце строки? (И поменять местами последнее слово в одной строке на первое слово в следующей строке еще сложнее.)dd
удаляет текущую строку, затем вы можете вставить удаленную строку с помощьюp
. Однако есть другой способ использованияm
. С помощьюm
вы можете перемещать строки, т.е.:m 1
переместит текущую строку после строки 1:m 0
переместит текущую строку наверх:m $
переместит текущую строку внизВ вашем примере поместите курсор в первую строку и введите
:m $
Подробнее: http://vim.wikia.com/wiki/Moving_lines_up_or_down
источник
Несмотря на то , что вопрос довольно старый и помечено как ответили, я хотел бы расширить ответ, говоря , что вы можете использовать обычные команды режима, которые были предоставлены Sven Marnach с
nnoremap
примерно так:Это позволит вам перемещать строки с помощью Ctrl+ Upи Ctrl+ Downвнутри вашего файла. Однако это перезапишет
@"
регистр, в котором хранится ваша последняя скопированная строка / слово / буква / и т. Д. Итак, добавив "(reg) передdd
иp
команды, мы можем исправить это:Здесь мы добавляем
"a
перед удалением и вставкой команды для сохранения нашей строки в@a
регистре, поэтому ваш регистр копирования по умолчанию не будет перезаписан. Однако он может перезаписать содержимое@a
регистра (кто знает, но вы можете использовать его для чего-то важного в вашем случае использования, но этот шаг немного параноидален, вы можете пропустить его, если хотите), давайте исправим и это:(
<silent>
необходимо для предотвращения вывода наших команд в строку сообщений внизу.)Теперь у нас есть два сопоставления, которые позволяют нам перемещать строки в файле с помощью сочетаний клавиш. Вы можете переопределить кнопки, я использую Alt+ j/ k, который был бы
<A-j>
и<A-k>
для этих команд. Однако не все эмуляторы терминала поддерживают сопоставление клавиш Alt AFAIK.источник
Пример:
с
:m-2
, переключатель (текущая строка - 2)с
:m+1
переключателем (текущая строка + 1)Вы можете нанести это на карту, если хотите.
источник
Сопоставления, предлагаемые на странице викии Vim , на самом деле являются лучшим способом сопоставления комбинаций клавиш, которые имитируют то, как Sublime и другие редакторы реализуют эту функцию.
Это включает в себя действие отступа после хода, что тоже здорово (это двойные
==
знаки равенства , если вы этого не хотите).Он также поддерживает режимы визуализации и вставки , так что вы можете перемещать строки во время редактирования или с помощью фулблоков.
Я лично сопоставил их с моим Mac
<D-J>
и<D-K>
на нем, а не<A-
с Altключом. Таким образом я использую Cmd+ Shift+ j/ k, что кажется мне более естественным для кончиков пальцев.источник