Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

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

$
0
0

問題点

自分で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


Viewing all articles
Browse latest Browse all 5608

Trending Articles