Robię, C-a
C-k
C-k
żeby zabić cały punkt linii jest włączony.
Jeśli chcę skopiować wiersz zamiast go zabić, mogę uderzyć C-/
C-/
zaraz po wpisaniu powyższej sekwencji.
Alternatywnie mogę to zrobić C-a
C-SPC
C-n
M-w
.
Czy istnieje szybszy sposób na zabicie lub skopiowanie całego punktu linii?
copy-paste
editing
itsjeyd
źródło
źródło
kill-whole-line
. :)evil-mode
. Naucz się poleceń Vima, nie pożałujesz!Odpowiedzi:
Możesz użyć,
kill-whole-line
aby zabić cały punkt linii jest włączony. Pozycja punktu nie ma znaczenia. C-S-DELDomyślnie to polecenie jest powiązane .Możesz także poinstruować
kill-line
(powiązanego z C-k) zabić całą linię, ustawiając zmiennąkill-whole-line
nanil
wartość inną niż wartość:Zauważ, że punkt musi znajdować się na początku linii, aby to zadziałało.
Są jeszcze dwa klejnoty (przez emacs-fu ):
Po ich wprowadzeniu możesz zabić lub skopiować punkt linii za jednym naciśnięciem klawisza :
Zauważ, że jeśli istnieje aktywny region
kill-region
ikill-ring-save
nadal będziesz robić to, co zwykle: zabij lub skopiuj go.Przeniesienie
slick-cut
islick-copy
do nowego systemu poradEmacs 24.4 wprowadza nowy system porad . Chociaż
defadvice
nadal działa , istnieje szansa, że może być przestarzały na korzyść nowego systemu w przyszłych wersjach Emacsa. Aby się do tego przygotować, możesz użyć zaktualizowanych wersjislick-cut
islick-copy
:źródło
kill-region
ikill-ring-save
nadal działać nawet wtedy, gdy obszar nie jest „aktywny”. To zastąpi to zachowanie. Od czasu do czasu używam tego zachowania, ale jeśli nie jesteś przyzwyczajony do korzystania z nich w ten sposób, prawdopodobnie nie zauważysz różnicy.kill-region
itp. jest użyteczne / przydatne, kiedymark-active
jestnil
.C-SPC
dwa razy, aby aktywować, a następnie dezaktywować znak. Przesuń kursor w inne miejsce pliku i uruchom,kill-region
a to zabije region między punktem i znakiem, nawet jeśli znak nie jest aktywny. Kilka przykładów poleceń, które ustawiają (ale nie aktywują) znak toyank
iisearch
. Po wykonaniu tych poleceń sortowania wiem, gdzie jest znak, nawet jeśli nie jest aktywny, a wiele poleceń (w tymkill-region
) pozwoli mi użyć znaku bez wyraźnej jego aktywacji.Rozwiązaniem, które znalazłem dla siebie, jest użycie argumentów z przedrostkiem.
Dla mnie zabicie połowy linii jest przydatną funkcją, ale chcę też łatwiejszego sposobu zabijania całych linii. Zrobiłem to, aby
kill-line
po prostu mordować wszystko w zasięgu wzroku, gdy podano argument prefiksowy.Z tym małym makro
C-k
nadal zabija od punktu, aleC-3 C-k
połyka trzy całe linie. Jako bonus otrzymujemy takiekill-whole-line
zachowanieC-1 C-k
.źródło
kill-ring-save
nie akceptuje argumentów z prefiksem ...kill-visual-line
jest zobowiązany doC-k
. Naprawię to. Dzięki jeszcze raz.Jest tak zwany pakiet,
whole-line-or-region
który radzi różnym wbudowanym poleceniom, aby działały na bieżącej linii, jeśli żaden region nie jest aktywny, więcM-w
skopiują bieżącą linię iC-w
na przykład ją zabiją. Korzystam z pakietu od lat i uważam go za niezbędny.Dodatkowo ten pakiet sprawia, że przedrostek numeryczny będzie wskazywał liczbę linii, na których ma działać, więc
M-2 M-w
skopiuje dwie linie. Inne odpowiedzi tutaj nie zapewniają tej przydatnej funkcjonalności.Przejęłem utrzymanie pakietu na moim koncie github, gdy autor przestał go utrzymywać i przestał odpowiadać.
whole-line-or-region
zapewnia także możliwości dodawania tego zachowania do dalszych poleceń, jeśli zajdzie taka potrzeba.źródło
To nie jest odpowiedź na prawosławne emacsy. Jeśli jednak chcesz bluźnić za pomocą
evil
modalnej edycji, możesz:dd
dla linii zabiciacc
dla linii kopiowaniaOba mogą być poprzedzone liczbą linii do zabicia / skopiowania (np.
4cc
Skopiują kolejne 4 linie).źródło
Oprócz odpowiedzi @itsjeyd, czy mogę zasugerować te dwie funkcje?
Następnie kluczowe definicje (prawdopodobnie będziesz chciał je dostosować):
(global-set-key (kbd "<f2>") 'xah-cut-line-or-region) ; cut
(global-set-key (kbd "<f3>") 'xah-copy-line-or-region) ; copy
(global-set-key (kbd "<f4>") 'yank) ; paste
Dzięki uprzejmości ErgoEmacs
źródło
Jako rozszerzenie powyższej odpowiedzi @ itsjeyd mam następujące. (Prawdopodobnie logika mogłaby zostać nieco oczyszczona i zrobię to, kiedy przeniesie się do nowego systemu porad, prawdopodobnie również rozszerzę ją, aby rozszerzyć do
sexp
/paragraph
jeśli powtórzę ponownie).Inicjał
C-w
/M-w
pobierze tylko słowo w punkcie, a wywołanie go po raz drugi przejmie całą linię.źródło
Ponieważ chcesz to robić przy minimalnym naciśnięciu klawisza, możesz użyć doskonałego pakietu akordów Davida Anderssona . „Akord klawiszy” to dwa klawisze naciskane jednocześnie lub jeden klawisz naciskany dwukrotnie.
Możesz powiązać dowolne akordy klawiszowe z tymi funkcjami.
źródło
Mniej doraźnym sposobem jest zdefiniowanie
mark-whole-line
, dla którego Emacs naprawdę powinien mieć domyślną komendę.Następnie
C-2 C-w
wykona robotę.Ułatwia to także komentowanie bieżącej całej linii.
źródło
To jest modyfikacja odpowiedzi od itsjeyd - obecnie najwyżej głosowanej odpowiedzi, z której korzystałem od lat. Ma jednak problemy: zalecana wersja
kill-ring-save
czasami zawiedzie, ponieważ znak nie jest ustawiony (zazwyczaj w nowym buforze), a nawet gdy zadziałał, kursor wykonał dziwny taniec po użyciu funkcji do skopiowania pojedynczego wiersza . Po pewnym kopaniu dotarło do mnie, że dzieje się tak, ponieważkill-ring-save
połączeniaindicate-copied-region
wykonały swoją pracę, ale ponieważ punkt i znak nie pasują do skopiowanego regionu,indicate-copied-region
oznaczono niewłaściwy region.Wystarczająco powiedziane. Oto rozwiązanie, które temu zaradzi:
Nie ma nic złego w poradach itsjeyd na temat
kill-region
. Oto jego wariant, bardziej stylistycznie zgodny z powyższym:Pamiętaj, że jeśli
transient-mark-mode
nie jest włączony, te porady nic nie robią.źródło
whole-line-or-region
; zobacz odpowiedź @sanityinc.Używam pakietu o nazwie composable.el . Ciekawą rzeczą w pakiecie jest to, że modyfikuje Mw i Cw (polecenia kopiowania i zabijania), aby były bardziej podobne do Vima, z tym, że akceptuje tradycyjne polecenia emacsa. Więc
C-w l
zabija całą linię. Ale możesz także robić rzeczy takie jakC-w M->
zabijanie końca pliku. Oba polecenia działają normalnie podczas oznaczania regionu.źródło