Ortalanmış metin içeren 80 sütunlu geniş yorum başlığı bloğu ekleme


9

Bir nedenden ötürü, kodu genellikle aşağıdaki gibi üstbilgilerle ayrılmış alt bölümlere ayırırım:

################################################################################
#################################### LOAD ######################################
################################################################################

Bunlar #, ortada bir başlık bulunan 3 80 sütun genişliğindeki çizgilerdir . Şimdiye kadar bunları vim'de oluşturmanın hızlı bir yolunu bulamadım.

Genellikle yaptığım şey satır boyunca bir şey 80i#ve sonra yyppbana 3 satır vermek, ama sonra ortaya gidin ve metin eklemek gerekir. Bunu genellikle replace ile yaparım, ancak replace içerideki başlığı ortalamaz ##Bu yüzden fazla olanlarını #manuel olarak silerim .

Metin orta satırda nasıl ortalanır? Ve bu sonuca ulaşmanın daha hızlı bir yolu ne olabilir?

Yanıtlar:


16

İşte biraz daha verimli / daha kolay bir yöntem. Ortalamak istediğiniz metin satırının (yani LOAD) başına imleçle yazın.

  • :center 80<cr>: metni Vim'in yerleşik işleviyle ortalayın
  • hhv0r#: #soldaki s işaretini ekleyin
  • A<space><esc>40A#<esc>: #sağ tarafa bolca s ekleyin
  • d80|: #sağdaki fazlalıkları silin
  • YppVr#kk.: üst ve alt #s ekle

Yani, tam komut:

:center 80<cr>hhv0r#A<space><esc>40A#<esc>d80<bar>YppVr#kk.

Uygun bir eşleme eklemek için .vimrc'nize böyle bir şey koyabilirsiniz:

nnoremap <C-b> :center 80<cr>hhv0r#A<space><esc>40A#<esc>d80<bar>YppVr#kk.

Mini ekran gösterimi:

gösteri


3

İlk olarak, ihtiyacınız var :set expandtab.

  1. 80i#Esc en üst çizgiyi oluşturmak için
  2. Yp çoğaltmak için
  3. OSpaceLOADSpaceEsc
  4. :center 80( Ayarınıza 80bağlı olarak atlanabilir textwidth.)
  5. hhv0r# sol tarafı doldurmak için (görsel seçme ve değiştirme kullanarak)
  6. $hjlly$kp sağ tarafı doldurmak için (en alt satırdaki bazı karakterleri çoğaltarak)

3

Bunun için bir vimscript işlevi kullanırdım.

function Header(width, word)
    let a:inserted_word = ' ' . a:word . ' '
    let a:word_width = strlen(a:inserted_word)
    let a:length_before = (a:width - a:word_width) / 2
    let a:hashes_before = repeat('#', a:length_before)
    let a:hashes_after = repeat('#', a:width - (a:word_width + a:length_before))
    let a:hash_line = repeat('#', a:width)
    let a:word_line = a:hashes_before . a:inserted_word . a:hashes_after

    :put =a:hash_line
    :put =a:word_line
    :put =a:hash_line
endfunction

Ve şöyle denebilir

: call Header(80, 'Hello')

1
Teşekkür ederim, bu gerçekten harika bir cevap. Herhangi bir sayıda satır için çalışır ve hatta diğer karakterleri (sadece # değil) içerecek şekilde değiştirilebilir. Utanç Sadece 1 oy verebilir ve sadece tek bir cevap kabul edebilirim. Bu kez daha aşina olduğum kişi ile gitmek zorunda kaldım (ve yazma fonksiyonları - buna aşina değilim, ama sayende nasıl çalıştıklarını görüyorum).
Karolis Koncevičius

2

Veya görsel blokları kullanabilirsiniz:

  1. Üstte zaten en az üç boş satır olduğundan emin olun, ardından CtrlV80L

  2. R#

  3. Bloğun ortasına git (bunu göz atmak zorunda kalacaksın)
  4. CtrlV ve bloğun kaldırmak istediğiniz alanını seçin
  5. RSpace
  6. Boş alanın başlangıcına gidin, vurup Rbaşlığınızı yazın.

Verilen bir başlık oluşturmak için en mükemmel yol değil, ancak göz küresi yapmak zorundasınız, ancak Görsel Blok seçimi için ilginç bir durum.

Sonuç

#################################################################################
##########################    this is a header      #############################
#################################################################################
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.