Vim - linea di commento surround con carattere di commento


27

Oggi mi sono reso conto che spesso mi piace definire le sezioni del mio codice in questo modo:

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

Ma è noioso da fare. Supponendo che ho una linea come questa:

# Helper Functions #

Qual è la serie più breve di vimtasti per avvolgerlo in un #? Shift non conta come una sequenza di tasti in questa sfida.

Casi test:

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#
########################################

3
Sto votando per chiudere questa domanda come off-topic perché "sequenze di tasti vim" sostanzialmente significa eseguire comandi di un IDE, come Ctrl - C o Ctrl - R in ST2. Non si tratta di codifica in nessuna forma.
Ottimizzatore del

3
@Optimizer Vim è un linguaggio completo turing (ad es. Utilizzando macro) con codifica di costrutti diversi e il metodo principale per l'editing si basa su verbi (azioni) e oggetti (movimenti). Esiste già una pagina Web popolare per il golf di Vim: www.vimgolf.com. (Ma sono d'accordo sul fatto che questa particolare domanda sia piuttosto noiosa)
Hjulle,

1
@Optimizer: esiste un sito SE più adatto in cui la domanda potrebbe essere spostata? Dato l'ampio linguaggio di scripting / macro di vim, alcune persone potrebbero considerarlo un linguaggio in sé.
shearn89,

1
@ shearn89 Hostile? Di cosa stai parlando ? PPCG è questo sito.
Ottimizzatore

2
Perché non dovrebbero essere consentiti anche altri IDE se si possono scrivere programmi nel loro sistema macro? Cosa lo rende "non programmatore"?
Hjulle,

Risposte:


40

11 8 7 sequenze di tasti

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.

(grazie alla maniglia della porta per aver ricordato Y = yy)


3
Sostituisci yycon Yper salvare un personaggio.
Maniglia della porta

2
Wow, quel rcomando è potente
solo il

10

16 15 14 sequenze di tasti

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

L'approccio diretto: duplica la linea, sostituisci tutti i caratteri con #, copia il risultato e incollalo sopra.

Sto contando Pe :premendo un tasto ciascuno (anziché due per Shift+ po Shift+ ;). Detto questo, la domanda specifica di contare i "comandi", dove non sono sicuro di come contare la sostituzione.


Stesso commento della risposta di @ rcrmn: sostituisci yycon Yper salvare un personaggio.
Maniglia della porta

Credo che siano in realtà 14 sequenze di tasti, poiché devi premere Intro per eseguire il comando di sostituzione
rorlork,

@rcrmn Oh, buona cattura.
Martin Ender,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.