ファイルの最初と最後の5行?ファイル固有のスペル無視リストに使用しますか?


8

噂によるとvim、ファイルの最初の5行または最後の5行にコマンドを配置することは可能です。しかし、Googleではこれを見つけることができませんでした。どんなリードもいただければ幸いです。

この機能を使用して、単語リストにファイル固有の追加を定義することは可能でしょうか。

感謝を編集modelineそれはです!提案されている方法でスペルチェックに使用できますか?


4
以外の意味modelineですか?
muru、

回答:


8

モデリンはこれを行う方法のように見えるかもしれませんが、残念ながら機能しません。モードラインのみのサポートの設定オプション(shiftwidthcolorcolumn、そういったこと)。のようなモードラインを使用しvim: spellて、ドキュメントのスペルチェックを有効にすることができます。ただし、spellgood!はExコマンドであり、オプションではありません。さらに、セキュリティ上の理由から、モードラインから一部のオプション(、を参照)を設定することはできませんspellfile:help spellfile

あなたは可能性があなたのvimrcでファイル固有の自動コマンドの束を作るが、それはあなたが別の場所に同じ名前の2つのファイルを持って起こる場合は、退屈な時間を超える維持するために本当にハードになるだろう、としていない旅行「だろうファイル。"

代わりに、最良の解決策は、ドキュメント内の定義されたテキストブロックを解析して、単語を追加するための独自のモードラインのような機能を構築することです。たとえば、次で始まる行を検索し"spellgood:"、スペースで区切られた単語のセットを内部の単語リストに自動的に追加できます。

function! AddLocalSpelling ()
  " Save the cursor position.
  let cursor_position = getcurpos()

  let location = searchpos("\"spellgood:", "c")
  while location != [0, 0]
    let words = split(getline(location[0]))
    " The first 'word' will be the sentinel token itself (unless)
    " we found the token in an embedded string or comment...
    if words[0] == "\"spellgood:"
      call remove(words, 0)
      for word in words
        execute "silent spellgood! " . word
      endfor
    endif
    let location = searchpos("\"spellgood:", "W")
  endwhile

  " Restore cursor position.
  call setpos(".", cursor_position)
endfunction

次に、のオートコマンドを設定できBufReadPost * call AddLocalSpelling()ます.vimrc。実際には、エラーが発生した場合に上記の関数をより堅牢にし、comments有効なコメントトークンを確認するために使用すること"をお勧めします(VimLバッファーでテストしたため、このトークンを選びました)。コメントでJJoaoによってリンクされたこのSuperUser回答は、一度に1行だけではなく単語のブロックを使用できる、類似しているが代替の実装を提供します。

この方法では、他のユーザーが同じ関数を使用するか、少なくとも同じ解析ルールに同意する必要があるため、完全ではありません。ただし、必要に応じてそれを取得して機能をプラグインに昇格させ、他のユーザーが簡単にアクセスできるようにすることもできます。

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