Vim - yorum karakterli surround yorum satırı


27

Bugün kodumda bölümleri şöyle tanımlamak istediğimi farkettim:

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

Ama bunu yapmak sıkıcı. Bunun gibi bir hattım olduğunu varsayarsak:

# Helper Functions #

Bir içine vimsarmak için en kısa tuş vuruşları #hangisidir? Kaydırma yok değil bu meydan bir tuş olarak sayılır.

Test durumları:

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
"Vim tuş vuruşları" temel olarak ST2'de Ctrl - C veya Ctrl - R gibi bir IDE komutları çalıştırması anlamına geldiğinden bu soruyu konu dışı olarak oylamaya çalışıyorum. Bu herhangi bir biçimde kodlama değildir.
Doktor,

3
@Optimizer Vim, birkaç farklı yapı kodlayan bir turing tam dildir (örneğin makrolar kullanarak) ve düzenleme için birincil yöntem fiiller (eylemler) bir nesneye (hareketler) dayanmaktadır. Vim Golf için popüler bir web sayfası zaten var: www.vimgolf.com. (Ama bu belirli sorunun oldukça sıkıcı olduğuna katılıyorum)
Hjulle

1
@Optimizer: Sorunun taşınabileceği daha uygun bir SE sitesi var mı? Vim'in geniş kapsamlı komut dosyası / makro dili göz önüne alındığında, bazı insanlar bunu kendi dilleri olarak düşünebilir.
shearn89

1
@ shearn89 Düşman mı? Neden bahsediyorsun ? PPCG bu sitedir.
Doktor,

2
Makro sistemlerine programlar yazabiliyorsanız neden diğer IDE'lere izin verilmiyor? “Programlamamayı” sağlayan şey nedir?
Hjulle

Yanıtlar:


40

11 8 7 tuş vuruşlarını

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.

(Y = yy hatırlatması için kapı tokmağı sayesinde)


3
Karakter kaydetmek için yyile değiştirin Y.
Doorknob

2
Vay canına, bu remir güçlü
yarın

10

16 15 14 tuş vuruşlarını

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

Düzgün yaklaşım: çizgiyi çoğaltın, tüm karakterleri değiştirin #, sonucu kopyalayın ve üstüne yapıştırın.

Ben sayıyorum Pve :her biri bir tuşa basarken ( Shift+ pveya Shift+ için iki yerine ;). Söylenmekte olan soru, "komutları" saymayı belirtir, burada sübstitüsyonun nasıl sayılacağından emin değilim.


@ Rcrmn'ın cevabı yyile aynı yorum: YBir karakter kaydetmek için ile değiştirin .
Doorknob

Bunun yerine 14 tuşa
basıldığına

@ rcrmn Oh, iyi yakala.
Martin Ender
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.