中央揃えのテキストを含む80カラム幅のコメントヘッダーブロックを追加する


9

なんらかの理由で、コードを次のようなヘッダーで区切られたサブセクションに分割することがよくあります。

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

これらは#、中央にタイトルが中央に配置された3つの80列幅の行です。これまでのところ、vimでこれらを生成する簡単な方法を見つけていません。

私は通常、やることの線に沿って何かで80i#、その後、yypp私の3行を与えるために、その後私は真ん中に移動し、テキストを追加する必要があります。私は通常置き換えでこれを行うが、ヘッダの内部をセンタリングしません置き換える#... #だから私はの過剰削除#「手動だが。

テキストを中央の行の中央に配置するにはどうすればよいですか?そして、この結果を達成するためのより速い方法は何でしょうか?

回答:


16

これは、少し効率的で簡単な方法です。LOAD中央に配置したいテキスト行(つまり)の先頭にカーソルを置いて入力します。

  • :center 80<cr>:Vimの組み込み関数でテキストを中央揃えにします
  • hhv0r##左側にsを追加します
  • A<space><esc>40A#<esc>#右側にsをたくさん追加します
  • d80|#右側の余分なsを削除
  • YppVr#kk.:上部と下部#のsを追加

したがって、完全なコマンド:

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

便利なマッピングを追加するために、.vimrcに次のようなものを置くことができます。

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

ミニスクリーンキャストのデモ:

デモンストレーション


3

まず、する必要があり:set expandtabます。

  1. 80i#Esc トップラインを作成する
  2. Yp それを複製する
  3. OSpaceLOADSpaceEsc
  4. :center 80(設定80によっては省略される場合がありますtextwidth。)
  5. hhv0r# 左側を埋める(視覚的な選択と置換を使用)
  6. $hjlly$kp 右側を埋める(下の行からいくつかの文字を複製することにより)

3

そのためにvimscript関数を使用します。

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

そしてそれは

: call Header(80, 'Hello')

1
ありがとう、これは本当に素晴らしい答えです。任意の数の行で機能し、他の文字(#だけでなく)を含めるように簡単に変更することもできます。残念ですが、私は1つの賛成票のみを与え、1つの回答のみを受け入れることができます。今回は、私がより慣れ親しんだもの(そして関数の記述-私はそれに慣れていませんが、あなたのおかげでそれらがどのように機能するかを理解しています)を使用する必要がありました。
KarolisKoncevičius15年

2

または、ビジュアルブロックを使用することもできます。

  1. 上部に少なくとも3つの空白行があることを確認してから、 CtrlV80L

  2. R#

  3. ブロックの真ん中に移動します(これを目で確認する必要があります)
  4. CtrlV 削除するブロックの領域を選択します
  5. RSpace
  6. 空のスペースの先頭に移動し、ヒットRしてヘッダーを入力します。

確かに、目で確認する必要があるため、ヘッダーを作成するのに最適な方法ではありませんが、ビジュアルブロックを選択する場合の興味深いケースです。

結果

#################################################################################
##########################    this is a header      #############################
#################################################################################
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.