Aku punya ini:
pick 887b66f add 222 Dziewiecsil to flowers new title
pick dc331cb new name of beginning commit
Dan saya ingin mendapatkan ini:
pick dc331cb new name of beginning commit
pick 887b66f add 222 Dziewiecsil to flowers new title
Adakah cara untuk melakukan ini dengan cara cepat menggunakan pintasan keyboard?
git config --global core.editor <whatever>
, atau untuk banyak hal sekaligus (termasuk git) dengan memasukkanexport EDITOR=<whatever>
dalam Anda.bashrc
.Jawaban:
Untuk menukar baris saat ini dengan yang berikutnya, ketik
ddp
saat dalam mode perintah.sumber
ddp
. Jika Anda belum berada dalam mode perintah, tekanEsc
untuk masuk ke mode perintah.dd
menghapus baris saat ini setelah menyalinnya ke "register".p
copy ("put") isi register ke buffer Anda setelah baris saat ini. Demikian pula, Anda dapat menukar dua karakter denganxp
, atau dua kata dengandwwP
.dwwP
tidak bekerja dengan cara yang sama jika dua kata berada di akhir baris? (Dan menukar kata terakhir pada satu baris dengan kata pertama pada baris berikutnya bahkan lebih rumit.)dd
menghapus baris saat ini, lalu Anda dapat menempelkan baris yang dihapus menggunakanp
. Ada cara lain meskipun menggunakanm
. Denganm
Anda dapat memindahkan garis sekitar yaitu:m 1
akan memindahkan baris saat ini setelah baris 1:m 0
akan memindahkan baris saat ini ke atas:m $
akan memindahkan baris saat ini ke bawahDalam contoh Anda, letakkan kursor di baris dan ketik pertama
:m $
Info lebih lanjut: http://vim.wikia.com/wiki/Moving_lines_up_or_down
sumber
Terlepas dari kenyataan bahwa pertanyaan itu cukup lama dan ditandai sebagai terjawab, saya ingin memperluas jawaban dengan mengatakan bahwa Anda dapat menggunakan perintah mode normal, yang disediakan oleh Sven Marnach dengan
nnoremap
seperti ini:Ini akan memungkinkan Anda untuk memindahkan baris dengan Ctrl+ Updan Ctrl+ Downdalam file Anda. Namun ini akan menimpa
@"
register, yang menyimpan string / kata / huruf / dll yang terakhir disalin. Jadi dengan menambahkan "(reg) beforedd
danp
perintah kita bisa memperbaiki ini:Di sini kami menambahkan
"a
sebelum menghapus dan menempelkan perintah untuk menyimpan baris kami di@a
register, sehingga register salinan default Anda tidak akan ditimpa. Namun ini mungkin menimpa konten@a
register (siapa tahu, tapi Anda dapat menggunakannya untuk sesuatu yang penting dalam kasus penggunaan Anda, tetapi langkah ini agak paranoid, Anda dapat melewatkannya jika Anda mau), mari perbaiki itu juga:(
<silent>
diperlukan untuk mencegah menggemakan perintah kami ke baris pesan di bagian bawah.)Sekarang kami memiliki dua pemetaan yang memungkinkan kami untuk memindahkan baris di dalam file dengan pintasan keyboard. Anda dapat mendefinisikan ulang tombol, saya menggunakan Alt+ j/ k, yang akan menjadi
<A-j>
dan<A-k>
untuk perintah tersebut. Namun tidak semua emulator terminal mendukung pemetaan tombol Alt AFAIK.sumber
Contoh:
dengan
:m-2
, sakelar (baris saat ini - 2)dengan
:m+1
saklar (baris saat ini + 1)Anda bisa memetakan ini jika Anda mau.
sumber
Pemetaan yang diusulkan di halaman wiki Vim sebenarnya adalah cara terbaik untuk memetakan kombinasi tombol yang meniru cara Sublime dan editor lain menerapkan fitur ini.
Ini termasuk tindakan indentasi setelah pindah, yang juga bagus (itu adalah tanda ganda yang sama
==
, jika Anda tidak menginginkannya).Ini juga mendukung mode visual dan penyisipan , sehingga Anda dapat memindahkan garis saat mengedit atau dengan fulblock.
Saya pribadi memetakannya ke
<D-J>
dan<D-K>
di Mac saya, alih-alih<A-
memetakannya ke Altkunci. Dengan cara itu saya menggunakan Cmd+ Shift+ j/ k, yang terasa lebih alami di ujung jari saya.sumber