Często piszę polecenia takie jak gg"+yG
lub ggdG
i chciałbym to zrobić bardziej efektywnie, bez konieczności dwukrotnego przesuwania kursora. Czy jest jakieś polecenie, którego mogę użyć, np. y[movement]
Aby skopiować cały bufor bez przesuwania kursora?
cut-copy-paste
cursor-motions
custom-text-object
Losowo 832
źródło
źródło
mmgg"+yG`m
i nigdy o tym nie myślałem. Dzięki, dzieje się to w .vimrc.C-o
dwukrotnie, aby wrócić.Innym rozwiązaniem jest użycie wtyczki o nazwie vim-textobj-whole . Domyślnie ta wtyczka udostępnia obiekt tekstowy
ae
dla całego bufora,ie
dla całego bufora, z wyjątkiem początkowych i końcowych pustych linii.Ta wtyczka zależy od vim-textobj-user tego samego autora, co pozwala użytkownikom wygodnie definiować dowolne obiekty tekstowe. Istnieje wiele wtyczek, które dobrze z tego korzystają.
źródło
Domyślnie dla całego pliku nie ma obiektu tekstowego, ale można go utworzyć za pomocą
omap
. W takim przypadku wyglądałoby to mniej więcej tak:Oto podział tego, jak to działa:
Uwagi:
Ctrlumoże być używany w trybie wiersza poleceń do usuwania wszystkiego po lewej stronie pozycji kursora. Powodem tego jest to, że jeśli wprowadzisz linię poleceń bezpośrednio z trybu wizualnego, zostanie ona automatycznie wstawiona
'<,'>
w linii poleceń, a to nie jest to, czego chcemy. Sugeruję również użycie czegoś innegof
, ponieważf
zwykle służy do przejścia do następnego szukanego znaku w linii. Na przykładfi
przejdzie do następnegoi
w bieżącym wierszu.Odpowiednie tematy pomocy:
źródło
``
końca spowoduje powrót kursora do poprzedniej lokalizacji.Oto kilka szybkich i brudnych mapowań umożliwiających wykonanie zadania:
Teraz możesz odpowiednio używać
yY
idD
szarpać / usuwać. Nie jest to tak przyjemne, jak użycie pełnego obiektu tekstowego, ale czasami najprostsze rozwiązania są najlepsze.Aby uzyskać więcej pomocy, zobacz:
źródło