Mam to:
pick 887b66f add 222 Dziewiecsil to flowers new title
pick dc331cb new name of beginning commit
Chcę to uzyskać:
pick dc331cb new name of beginning commit
pick 887b66f add 222 Dziewiecsil to flowers new title
Czy istnieje sposób, aby to zrobić w szybki sposób za pomocą skrótów klawiaturowych?
git config --global core.editor <whatever>
, albo do wielu rzeczy na raz (w tym git), włączającexport EDITOR=<whatever>
w twojej.bashrc
.Odpowiedzi:
Aby zamienić bieżącą linię z następną, wpisz
ddp
w trybie poleceń.źródło
ddp
. Jeśli nie jesteś jeszcze w trybie poleceń, naciśnij,Esc
aby przejść do trybu poleceń.dd
usuwa bieżącą linię po skopiowaniu jej do „rejestru”.p
kopiuje ("umieszcza") zawartość rejestru do twojego bufora po bieżącej linii. Podobnie możesz zamienić dwa znaki za pomocąxp
lub dwa słowa za pomocądwwP
.dwwP
nie działa to w ten sam sposób, jeśli dwa słowa znajdują się na końcu linii? (A zamiana ostatniego słowa w jednym wierszu z pierwszym słowem w następnym jest jeszcze trudniejsza.)dd
usuwa bieżącą linię, a następnie możesz wkleić usuniętą linię za pomocąp
. Jest inny sposób używaniam
. Za pomocąm
można przesuwać linie np:m 1
przeniesie bieżącą linię po linii 1:m 0
przeniesie bieżącą linię na górę:m $
przeniesie bieżącą linię na dółW twoim przykładzie umieść kursor w pierwszym wierszu i wpisz
:m $
Więcej informacji: http://vim.wikia.com/wiki/Moving_lines_up_or_down
źródło
Pomimo tego, że pytanie jest dość stare i oznaczone jako udzielone, chciałbym rozszerzyć odpowiedź, mówiąc, że możesz użyć poleceń trybu normalnego, które zostały dostarczone przez Svena Marnacha w następujący
nnoremap
sposób:Umożliwi to przenoszenie linii za pomocą Ctrl+ Upi Ctrl+ Downw pliku. Jednak spowoduje to nadpisanie
@"
rejestru, który przechowuje ostatnio skopiowany ciąg / słowo / literę / itd. Więc dodając komendy „(reg) przeddd
ip
, możemy to naprawić:Tutaj dodajemy
"a
przed usunięciem i wklejaniem poleceń, aby zapisać naszą linię w@a
rejestrze, więc domyślny rejestr kopii nie zostanie nadpisany. Jednak może nadpisać zawartość@a
rejestru (kto wie, ale możesz go użyć do czegoś ważnego w swoim przypadku użycia, ale ten krok jest nieco paranoiczny, możesz go pominąć, jeśli chcesz), naprawmy to również:(
<silent>
potrzebne, aby zapobiec wyświetlaniu naszych poleceń w wierszu komunikatów na dole).Teraz mamy dwa mapowania, które pozwalają nam przesuwać linie w pliku za pomocą skrótów klawiaturowych. Możesz przedefiniować przyciski, ja używam Alt+ j/ k, które byłyby
<A-j>
i<A-k>
dla tych poleceń. Jednak nie wszystkie emulatory terminali obsługują odwzorowania klawiszy Alt AFAIK.źródło
Przykład:
z
:m-2
przełącznikiem (bieżąca linia - 2)z
:m+1
przełącznikiem (bieżąca linia + 1)Możesz to zmapować, jeśli chcesz.
źródło
Mapowania proponowane na stronie wiki Vim są w rzeczywistości najlepszym sposobem na odwzorowanie kombinacji klawiszy, które emulują sposób, w jaki Sublime i inne edytory implementują tę funkcję.
Obejmuje to akcję wcięcia po ruchu, co jest również świetne (to podwójne
==
znaki równości , na wypadek, gdybyś tego nie chciał).Obsługuje również tryby wizualne i wstawiania , dzięki czemu można przesuwać linie podczas edycji lub za pomocą bloków.
Osobiście zamapowałem je na
<D-J>
i<D-K>
na moim Macu, zamiast<A-
mapować je na Altklucz. W ten sposób używam Cmd+ Shift+ j/ k, co jest bardziej naturalne dla moich palców.źródło