Często piszę polecenia takie jak gg"+yGlub ggdGi 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?
Ponieważ vim używa znaku procentu do odniesienia do bieżącego bufora, możesz go użyć, aby szybko uzyskać wszystko.
:%ybędzie szarpał cały bufor
:%y+szarpnie go do +rejestru (i prawdopodobnie do schowka, pod warunkiem, że vim został skompilowany z odpowiednimi opcjami).
:%di :%d+zrobi to samo dla usunięcia.
W każdym z tych przypadków kursor pozostaje na swoim miejscu.
Innym rozwiązaniem jest użycie wtyczki o nazwie vim-textobj-whole . Domyślnie ta wtyczka udostępnia obiekt tekstowy aedla całego bufora, iedla 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ą.
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:
onoremap f :<c-u>normal! mzggVG<cr>`z
Oto podział tego, jak to działa:
onoremap f " make 'f' the text object name
:<c-u> " use <c-u> to prevent vim from inserting visual selection marker at the beginning of the command automatically.
normal! " use normal to make key presses ignoring any user mappings
mzggVG<cr>`z " make a marker in register z, select the entire file in visual line mode and enter the normal command, and go back to the z marker
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ś innego f, ponieważ fzwykle służy do przejścia do następnego szukanego znaku w linii. Na przykład fiprzejdzie do następnego iw bieżącym wierszu.
Teraz możesz odpowiednio używać yYi dDszarpać / usuwać. Nie jest to tak przyjemne, jak użycie pełnego obiektu tekstowego, ale czasami najprostsze rozwiązania są najlepsze.
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.
mmgg"+yG`m
i nigdy o tym nie myślałem. Dzięki, dzieje się to w .vimrc.