Vim - otaczający wiersz komentarza ze znakiem komentarza

27

Dzisiaj zdałem sobie sprawę, że często lubię definiować sekcje w moim kodzie w następujący sposób:

####################
# Helper Functions #
####################

Ale to nużące. Zakładając, że mam taką linię:

# Helper Functions #

Jaki jest najkrótszy zestaw vimnaciśnięć klawiszy, aby go owinąć #? Shift nie liczy się jako naciśnięcie klawisza w tym wyzwaniu.

Przypadki testowe:

Input: "#test test test#"
Output:
################
#test test test#
################

Input: "#this is a nice block comment#"
Output:
##############################
#this is a nice block comment#
##############################

Input: "# s p a c e s must be supported a l s o#"
Output:
########################################
# s p a c e s must be supported a l s o#
########################################
shearn89
źródło
3
Głosuję za zamknięciem tego pytania jako nie na temat, ponieważ „naciśnięcia klawiszy vim” w zasadzie oznaczają uruchamianie poleceń IDE, takich jak Ctrl - C lub Ctrl - R w ST2. To nie jest kodowanie w żadnej formie.
Optymalizator
3
@Optimizer Vim to pełny język turinga (np. Przy użyciu makr) z kilkoma różnymi kodami konstrukcji, a podstawowa metoda edycji opiera się na czasownikach (działaniach) i obiektach (ruchach). Istnieje już popularna strona internetowa do gry w golfa vim: www.vimgolf.com. (Ale zgadzam się, że to pytanie jest dość nudne)
Hjulle
1
@Optimizer: czy istnieje bardziej odpowiednia witryna SE, na którą można przenieść pytanie? Biorąc pod uwagę szeroki język skryptów / makr vima, niektórzy ludzie mogą uznać go za język sam w sobie.
shearn89
1
@ shearn89 Hostile? O czym mówisz ? PPCG to ta strona.
Optymalizator
2
Dlaczego inne IDE nie byłyby dozwolone, jeśli można pisać programy w ich systemie makr? Co sprawia, że ​​„nie programuje”?
Hjulle

Odpowiedzi:

40

11 8 7 klawiszy

YpVkr#p

Yp - duplicate current line, leaving the cursor at the lower of the two
V - enter visual line mode
k - go up and select both lines
r# - replace every selected character with #. Leaves visual mode and leaves cursor at the upper line.
p - put the yanked line (the original) on the next line.

(dzięki klamce za przypomnienie Y = yy)

rorlork
źródło
3
Wymień yysię Yzapisać charakter.
Klamka
2
Wow, to rpolecenie jest potężne
pół
10

16 15 14 klawiszy

Yp
:s/./#/g
<cr>
YkP

Proste podejście: zduplikuj linię, zamień wszystkie znaki na #, skopiuj wynik i wklej go powyżej.

Liczę Pi :jako jedno naciśnięcie klawisza (zamiast dwóch dla Shift+ plub Shift+ ;). Biorąc to pod uwagę, pytanie określa, jak liczyć „polecenia”, w których nie jestem pewien, jak liczyć podstawienie.

Martin Ender
źródło
Sama uwaga jak na @ rcrmn za odpowiedź: Wymień yysię Yzapisać charakter.
Klamka
Wydaje
@rcrmn Oh, good catch.
Martin Ender