2016-06-29 8 views
0

私は.vimrcに省略形を設定しようとしています。これは、CSSファイル内の見出しレベルのコメントのテンプレートを挿入するものです。省略形を使用してコメントを挿入する

私は挿入するコメントは以下のとおりです。私は当時#にジャンプし、そこに(例えばBUTTONS)私のタイトルを追加します

/* ========================================================================== 
    # 
    ========================================================================== */ 

。右離れて、このかなりの粗さを感じ

iab comsec· 
\/* ========================================================================== 
\<Cr># 
\<Cr>========================================================================== */ 

·は、末尾のスペースを表します。)

が、具体的な問題がある:

略語私はこのようなルックスを設定しようとしてきました試して、私のCSSにcomsecを落とした場合、それはにそれをラップし始めます。コメント。出力は次のようになります。

/* ========================================================================== 
* # 
* ========================================================================== */ 

お知らせ線2と3の始まりで2 *

vimに試して賢明ではなく、私が言ったことをちょうど捨てる方法はありますか? vimがコメントの周りにコメントを囲まないようにする方法?

私は特にハードコアのvimユーザーではないので、私は事を過度に複製している、明らかに何かを見つけていない、または間違ったツールを使用している可能性があります。

ありがとうございます!

+1

'set paste'。ただし、代わりにスニペット・ソリューションを使用することを検討することもできます。彼らは最近かなり良いです。 –

+0

コメントに*を挿入したくない場合や、ステートメント内の先頭のタブ/スペースを*に挿入したくない場合は、複数行のコメントを挿入するためのソリューションを探しているときに 'set paste.'を使用できます。星だけを取り除く? – SibiCoder

+0

@SibiCoderペーストの設定と解除の省略形を教えてもよろしいですか?あるいは、省略形を呼び出す前と後で自分で設定したり解除したりする必要がありますか?また、複数行コメントのすべてを挿入したいと思います。 – csswizardry

答えて

0

これは、行がコメントテンプレートに囲まれているかどうかを毎回チェックするコメントを挿入するための、より簡単な方法です。

あなたがしなければならないことは、新しい行にコメントを書いてからを押すことです。挿入モードの間。 (あなたは文字変更することができます;。 であなたが望む任意の組み合わせを

をコメントテンプレートが変数l:startによって設定され、l:beginl:end ので、あなたがスペースまたはの数を変更することができます=あなたが好きなように。 テンプレートを完全に変更したい場合は、変数l:matchprevl:matchhierl:matchnextの正規表現も変更する必要があることに注意してください。

inoremap <silent> ; <Esc>mx:call Comment()<cr>i<Right> 

function! Comment() 
    let l:start= "/* =====" 
    let l:begin=" # " 
    let l:end= " ==== */" 
    let l:next=getline(line(".")+1) 
    let l:hier=getline(line(".")) 
    let l:prev=getline(line(".")-1) 
    let l:matchnext= matchstr(l:next , '^\s*=\+\s*\*/\s*$') 
    let l:matchhier= matchstr(l:hier , '^\s*#\s*.*$') 
    let l:matchprev= matchstr(l:prev , '^\s*/\*\s*=\+\s*$') 
    if l:matchnext != '' && l:matchprev != '' && l:matchhier != '' 
     return 0 
    else 
     execute ":s:^.*$:".l:start."\r".l:begin."&\r".l:end."\r:" 
     "the number 3 is the length of the variable l:begin 
     normal! `xj3l 

    endif 
endfunction 

書き込み、この別のファイル内のコードSCRIPTNAME、その後、あなたはコマンドモードで入力することにより、任意のCSSファイルでマッピングを使用することができます最初:so scriptname

別の方法としては、単にあなたの.vimrcにすべてのことを置くことですファイル

0

これを行う関数は次のとおりです。

 :function! Comment() 
     :normal! i/* 
     :normal! 80a= 
     :normal! o# 
     :normal! o 
     :normal! 80i= 
     :normal! a*/ 
     :endfunction 

これをvimrcファイルに入れて、コマンドまたはマップを作成することができます。

コマンド

 :cmap comsec call Comment() 

あなたは、行にカーソルを維持して、このコマンドを呼び出すことができます。

または私はいくつかのキーストロークでコメント解除/コメントのためnerdcommenterをお勧めしたいの選択肢として、挿入モードのマッピングで

 :imap comsec <ESC>:comsec<CR> 
0

またはさらに良いものは、ultisnipsです。これであなたは簡単にこれらの見出しの独自のテンプレートを作成することができます

  1. は.cssのファイルを開く
  2. EXECコマンド: UltiSnipsEdit
  3. 独自のスニップを作成:

スニペットは見出し」見出しコメント "

/* ===============

* $ {1}

* ================= * */

endsnippet

1

あなたの個人ユーティリティを追跡することができますタイプの人であれば、これはとても空想が、作品ではありません。あなたのバッファに外部コマンドの出力をインポートすることができますので、私は私のファイル.vimrcにこのようなマッピングを置く:

"bc = block comment 
map ,bc :read! python ~/my_personal_utils/insert_css_comment.py 

だから、私はコメントを追加するには「BC」と入力する必要があります。私のMacでは、少なくともこれはコマンドモードでぶら下がっているので、カーソルが '.py'の後にくるので、BUTTONSのような引数をすばやく入力することができます(つまり、pythonスクリプトはオプション引数をとります)。

関連する問題