Vim-コメント行をコメント文字で囲む


27

今日、私はコードのセクションを次のように定義したいことが多いことに気付きました。

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

しかし、それは面倒です。次のような行があると仮定します。

# Helper Functions #

vimそれを包むための最短のキーストロークのセットは何#ですか?このチャレンジでは、Shiftはキーストロークとしてカウントされませ

テストケース:

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 keystrokes」とは基本的に、ST2でCtrl-CやCtrl-RなどのIDEのコマンドを実行することを意味するため、この質問をトピック外として終了することを決めています。これはいかなる形式でもコーディングされていません。
オプティマイザー

3
@Optimizer Vimは、いくつかの異なるコンストラクトコーディングを備えたチューリング完全言語です(マクロを使用するなど)。編集の主な方法は、動詞(アクション)とオブジェクト(動き)に基づいています。vimゴルフの人気Webページはすでにwww.vimgolf.comにあります。(しかし、この特定の質問はかなり退屈であることに同意します)
Hjulle

1
@Optimizer:質問を移動できるより適切なSEサイトはありますか?vimの広範なスクリプト/マクロ言語を考えると、一部の人々はそれをそれ自体が言語だと考えるかもしれません。
–shearn89

1
@ shearn89敵対者?あなたは何について話していますか ?PPCGはこのサイトです。
オプティマイザー

2
マクロシステムでプログラムを作成できる場合、他のIDEも許可されないのはなぜですか?「プログラミングではない」のはなぜですか?
ユール

回答:


40

11 8 7キーストローク

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を思い出させてくれたdoorknobに感謝)


3
で置換yyYてキャラクターを保存します。
ドアノブ

2
うわー、そのrコマンドは強力です
ちょうど半分

10

16 15 14キーストローク

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

簡単なアプローチ:行を複製し、すべての文字を#で置き換え、結果をコピーして上に貼り付けます。

私は(+ または+の2つではなく)それぞれ1つのキーストロークとしてカウントP:ています。そうは言っても、質問は「コマンド」を数えることを指定していますが、置換を数える方法がわかりません。ShiftpShift;


@rcrmnの答えと同じコメント:文字を保存するために置換yyYます。
ドアノブ

replaceコマンドを実行するにはIntroを
押す

@rcrmnああ、いいキャッチ。
マーティンエンダー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.