2

更新: この質問は、以下の非常に役立つコメントと回答を反映するように変更されました。私は答えを受け入れましたが、完全な機能は現在のところ機能していません。

.ctags の内容 (~/ 内)

-R
--exclude=.git
--exclude=log 
--verbose=yes
--langdef=scss
--langmap=scss:.scss
--regex-scss=/^[ \t]*([^\t {][^{]{1,100})(\t| )*\{/| \1/d,definition/
--regex-scss=/^[@]mixin ([^ (]+).*/\1/m,mixing/

カーソルをターゲットの下に置くと、vim は言うE426 tag not found: tag_name

次のパターンを検討してください。

footer{
 .wrapper{
  .general-info{
   .footer-links{
     a{@include ticker($bg, $white);}
    }
   }
  }
 }

ディレクトリ内の別のファイル (modules.scss) に、ティッカーの定義があります。

@mixin ticker($color, $bg-color) {
 color: $color;
 background-color: $bg-color;
}

カーソルをターゲットの下に置くと、vim はまだ言うE426 tag not found: tag_name

tickerctags はmixinのインデックスを作成しません。ただし、ctags を使用して、SCSS gem から直接メソッドを見つけることができます (例: darken)。

4

1 に答える 1

5

ctagsを使用する場合\、最後の前にaを追加しても警告は表示されません。{言語がわからないので、生成されたタグが望ましい結果をもたらすかどうかはわかりません。

結果は次のようになります。

--langdef=scss
--langmap=scss:.scss
--regex-scss=/^[ \t]*([^\t {][^{]{1,100})(\t| )*\{/| \1/d,definition/

更新:前述のように、言語がわからないため、タグの実際の定義を確認するのは困難です。オンラインで調べたところ、次のコードがいくつかのWebページにscssとしてリストされています。取得したいタグがミキシング後の単語であるとします。

@mixin table-scaffolding {      
  th {                          
    text-align: center;         
    font-weight: bold;          
  }                             
  td, th { padding: 2px; }      
}                               

@mixin left($dist) {            
  float: left;                  
  margin-left: $dist;           
}                               

#data {                         
  @include left(10px);          
  @include table-scaffolding;   
}                               

次に、次のようになります。

--langdef=scss
--langmap=scss:.scss
--regex-scss=/^[ \t]*([^\t {][^{]{1,100})(\t| )*\{/| \1/d,definition/
--regex-scss=/^[@]mixin ([^ (]+).*/\1/m,mixin/
--regex-scss=/^[@]function ([^ (]+).*/\1/f,function/

2つの新しいタグleftとを取得しますtable-scaffolding。したがって、leftデータヒットの内部ctrl+]にいる場合は、データが定義されている行にジャンプします。他のキーワードは単語に含まれているため、注意する必要があり-ます。したがって、テーブルにいてを押すctrl+]と、同じエラータグが見つかりません。これを機能させるには、以下を追加する必要があります.vimrc

set iskeyword+=-

必要な他のタグについて上記を一般化できるはずです。また、最初に意図したように、すべてのタグを処理するための一般的な正規表現を作成することもできます。

使用しようとしているファイルがどのように見えるか、および取得しようとしているタグの具体例を投稿すると、私や他の人がその表現を理解するのに役立つと確信しています。

于 2012-05-23T18:37:41.687 に答える