86
66

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Vimのスペルチェック機能を使う

Last updated at Posted at 2013-10-19

###はじめに
Vim7以降限定ですがVimにはスペルチェック機能がついてます。
これは、~/.vimrc辺りで`set spell``しとくと有功になります。

set spell

スクリーンショット 2013-10-19 22.27.21.png

こんな塩梅で、間違ったスペルに下線を引いてくれます。

ただしちょっと欠点があります。といいますのは・・・

スクリーンショット 2013-10-19 22.34.00.png

日本語が全部スペルミス扱いになって残念なことになります。

スクリーンショット 2013-10-19 22.48.44.png

あとは、ソースをコメントアウトした時もやっぱり残念なことになります。まあそんな英単語ないですからね。

###解決方法
ということで、こんな感じで~/.vimrc辺りに書いておくと幸せになれるかも知れません。
アスキーコード以外で書かれている単語と、キャメルケース、スネークケースのようなプログラムソースっぽい単語をスペルチェックの対象から外します。

(追記:10/20/2013 19:00ごろ)
シンタックスハイライトが崩れることがあったので修正。
あと、やっぱりソースコードに訂正線を入れられることがたまにあります。動きがよく分からない。

fun! s:SpellConf()
  redir! => syntax
  silent syntax
  redir END

  set spell

  if syntax =~? '/<comment\>'
    syntax spell default
    syntax match SpellNotAscii /\<\A\+\>/ contains=@NoSpell transparent containedin=Comment contained-
    syntax match SpellMaybeCode /\<\h\l*[_A-Z]\h\{-}\>/ contains=@NoSpell transparent containedin=Comment contained
  else
    syntax spell toplevel
    syntax match SpellNotAscii /\<\A\+\>/ contains=@NoSpell transparent
    syntax match SpellMaybeCode /\<\h\l*[_A-Z]\h\{-}\>/ contains=@NoSpell transparent
  endif

  syntax cluster Spell add=SpellNotAscii,SpellMaybeCode
endfunc

augroup spell_check
  autocmd!
  autocmd BufReadPost,BufNewFile,Syntax * call s:SpellConf()
augroup END

最新のVIMであれば日本語をスペルチェックの対象から外すオプションが入ったみたいです
shuhei パッチが取り込まれたようで :set spelllang=en,cjk で日本語除外されるようです。

set spelllang=en,cjk

fun! s:SpellConf()
  redir! => syntax
  silent syntax
  redir END

  set spell

  if syntax =~? '/<comment\>'
    syntax spell default
    syntax match SpellMaybeCode /\<\h\l*[_A-Z]\h\{-}\>/ contains=@NoSpell transparent containedin=Comment contained
  else
    syntax spell toplevel
    syntax match SpellMaybeCode /\<\h\l*[_A-Z]\h\{-}\>/ contains=@NoSpell transparent
  endif

  syntax cluster Spell add=SpellNotAscii,SpellMaybeCode
endfunc

augroup spell_check
  autocmd!
  autocmd BufReadPost,BufNewFile,Syntax * call s:SpellConf()
augroup END

スクリーンショット 2013-10-19 23.16.55.png

###おまけ
スクリーンショット 2013-10-19 23.17.30.png
間違っているって言われた単語の上で<c-x>sを押すと修正候補を出してくれます。便利。

86
66
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
86
66

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?