LoginSignup
0
1

More than 5 years have passed since last update.

Vim neosnippetでスニペットを作ろうとした時に発生した問題と解決方法

Posted at

問題点

自分でsnippetを作成しようとしたらインデントが反映されない問題が発生した。

python.snippet
1496317609537.jpg

neosnippetを使用した際の出力
1496317749880.jpg

Pythonでインデントされないのはかなり致命的...

原因

snippet内でインデントが深くなるものを使用するときは、ハードタブで書かないとダメらしい... つまり 'set expandtab'を使用しているとインデントされない

解決方法

':setl noexpandtab'をしてハードタブを使用すればうまくいく。
snippet.vimに上記のものを書いておくと、スニペットファイル編集時にはハードタブを使うようになるらしい。

setlはsetl(ocal)

最後に

pythonでは必要不可欠なexpandtabに逆に苦しめられるとは...
python3ではtabとspaceの混合インデントはエラーが発生するから、入れ替えてる人が多数だろうし、pep8ではインデントのスペース幅は4個分が推奨されてるからこれは盲点だった。
あと、snippetでtabつかってるのに、なんで混合インデントでエラーが起きないのか気になったから調べてみたら、コード全体で一つのインデント幅に固定されてるわけじゃなく、ブロックごとに統一されてればいいらしい。これは知らなかった...

参考文献

neosnippet のスニペットファイルを書く上での注意点
http://rhysd.hatenablog.com/entry/2012/11/11/222150

pythonのインデント
http://studylog.hateblo.jp/entry/2015/10/22/043739

↓こんな事例もあるらしい
vimでMakefileだけTabスペースではなくTabとして入力する
http://qiita.com/Lacty/items/23a89d2b999cb0e9fae1

0
1
0

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
0
1