Eu tenho isto:
pick 887b66f add 222 Dziewiecsil to flowers new title
pick dc331cb new name of beginning commit
E eu quero pegar isso:
pick dc331cb new name of beginning commit
pick 887b66f add 222 Dziewiecsil to flowers new title
Existe uma maneira de fazer isso de forma rápida usando atalhos de teclado?
git config --global core.editor <whatever>
ou para muitas coisas de uma vez (incluindo git) incluindoexport EDITOR=<whatever>
em seu.bashrc
.Respostas:
Para trocar a linha atual pela próxima, digite
ddp
enquanto estiver no modo de comando.fonte
ddp
. Se você ainda não está no modo de comando, pressioneEsc
para entrar no modo de comando.dd
apaga a linha atual após copiá-la em um "registro".p
copia ("coloca") o conteúdo do registro em seu buffer após a linha atual. Da mesma forma, você pode trocar dois caracteres comxp
, ou duas palavras comdwwP
.dwwP
não funciona da mesma maneira se as duas palavras estão no final de uma linha? (E trocar a última palavra em uma linha com a primeira palavra na linha seguinte é ainda mais complicado.)dd
apaga a linha atual, então você pode colar a linha removida usandop
. Há outra maneira de usarm
. Comm
você pode mover as linhas, ou seja,:m 1
irá mover a linha atual após a linha 1:m 0
irá mover a linha atual para o topo:m $
irá mover a linha atual para o fundoNo seu exemplo, coloque o cursor na primeira linha e digite
:m $
Mais informações: http://vim.wikia.com/wiki/Moving_lines_up_or_down
fonte
Apesar de a pergunta ser bastante antiga e marcada como respondida, gostaria de estender a resposta dizendo que você pode usar os comandos do modo normal, que foram fornecidos por Sven Marnach com
nnoremap
:Isso permitirá que você mova as linhas com Ctrl+ Upe Ctrl+ Downdentro do arquivo. No entanto, isso irá sobrescrever o
@"
registro, que armazena sua última string / palavra / letra / etc copiada. Então, adicionando "(reg) antesdd
ep
comandos, podemos corrigir isso:Aqui, adicionamos
"a
comandos antes de excluir e colar para armazenar nossa linha no@a
registro, para que o registro de cópia padrão não seja sobrescrito. No entanto, ele pode sobrescrever o conteúdo do@a
registro (quem sabe, mas você pode usá-lo para algo importante no seu caso de uso, mas esta etapa um pouco paranóica, você pode pular se quiser), vamos consertar isso também:(
<silent>
necessário para evitar o eco de nossos comandos na linha de mensagens na parte inferior.)Agora temos dois mapeamentos que nos permitem mover linhas dentro do arquivo com atalhos de teclado. Você pode redefinir botões, eu uso Alt+ j/ k, que seria
<A-j>
e<A-k>
para esses comandos. No entanto, nem todos os emuladores de terminal suportam mapeamentos de teclas Alt AFAIK.fonte
Exemplo:
com
:m-2
, switch (linha atual - 2)com
:m+1
interruptor (linha atual + 1)Você pode mapear isso, se quiser.
fonte
Os mapeamentos propostos na página wikia do Vim são, na verdade, a melhor maneira de mapear combinações de teclas que emulam a maneira como o Sublime e outros editores implementam esse recurso.
Isso inclui uma ação de recuo após o movimento, o que também é ótimo (são os
==
sinais de igual duplos , caso você não queira).Ele também suporta modos visuais e de inserção , para que você possa mover as linhas durante a edição ou com fulblocks.
Eu os mapeei pessoalmente para
<D-J>
e<D-K>
no meu Mac, em vez de<A-
mapear para a Altchave. Assim, uso Cmd+ Shift+ j/ k, que é mais natural para as pontas dos meus dedos.fonte