web-dev-qa-db-ja.com

モードラインがvimで機能しない

Bashとzsh用の.aliasesというファイルがあります。次の行を挿入します

# vim: set filetype=bash: 

でも私が作ったら

: echo &ft

conf

21
juanpablo

うまくいくはずです。私はそのラインを自分で試してみましたが、うまくいきました。 'modeline'オプションが 'nomodeline'に設定されている可能性があります。これを実行して、何が得られるか確認してください。

:verbose set modeline?

これにより、「modeline」オプションの値と、デフォルトでない場合は最後に設定された場所がわかります。

一部のLinuxディストリビューションでは、「modeline」のセキュリティ問題が長い間修正されているにもかかわらず、セキュリティ対策として/ etc/vimrcまたは/ usr/share/vim/vimrcに「nomodeline」を設定しています。

28
garyjohn

この他の回答の完全なデバッグチェックリスト について説明します。

ドキュメント完全に真ではないため、私は本当にこれに困惑しました。

バージョン8(およびおそらくそれ以前)では、モードラインでWord setを使用できないことがわかりました。ドキュメントでは、「2番目の形式」が/* vim: set ai tw=75: */しかし、これは機能しません。 「最初の形式」を使用する必要があります// vim: ai tw=75

注:これらの種類のコメントインジケーターのいずれかを使用できます。またはまったくありません。

14
Bruno Bronosky

set modelines=1(または0以外の値)が〜/ .vimrcにあると、うまく機能しました。

13
Asad R.

〜/ .vimrcで以下を設定する必要があります:

set nocompatible 
filetype plugin on
set modeline 
8
vahagn34

私の~/.vimrcに次のコードを追加するだけで、Funtoo Linuxボックスでうまくいきました。

set modeline
7
scifisamurai

/usr/share/vim/vim80/debian.vimからvim-common on Debian-based distrosはデフォルトでmodelineを無効にします。

" modelines have historically been a source of security/resource
" vulnerabilities -- disable by default, even when 'nocompatible' is set
set nomodeline

modelineを明示的に有効にする必要があります.vimrcまたは~/.vim/vimrcファイル。

set modeline
2
Simba

これは検索で出てくるように見えるので:

私は同じ問題を抱えていました:

# vim: set filetype=sh:

機能しなかったため、ft = confも発生しました。 〜/ .bash_aliasにモードラインがないと、ftは空なので、何かが変わります。

ながら

# vim: filetype=sh:

働いた。最後の ":"の存在は関係がないようです。

記録のために、私はOSXでVim8醸造バージョンを使用しています。

モードラインから両方を助けるのでそれは奇妙です

[text]{white}{vi:|vim:|ex:}[white]{options}

そして

[text]{white}{vi:|vim:|Vim:|ex:}[white]se[t] {options}:[text]

サポートされているようです。

の出力

verbose set ft?

「vim:filetype = sh」では

filetype=sh
      Last set from modeline

モードラインなし:

filetype=

「vim:set filetype = sh」

filetype=conf
     Last set from /usr/local/Cellar/vim/8.0.1350/share/vim/vim80/filetype.vim

私の設定のどこかに副作用があるかもしれませんが、互換性のないモードライン構文が私にとって期待どおりに機能する唯一のものです。

1
kalfa

機能することを確認するには、.vimrcファイルで両方のオプションを設定します(より複雑な.vimrcがある場合は、下に向かって):

set modeline
set modelines=10

2番目のオプションは、潜在的なモードライン行を検索するときにチェックする行数を制御します。このようなモードライン行を10個以上使用する必要がある場合は、値を増やします(上記の例では10)。

また、ドキュメントのメモも読んでください::help modelines

注: 'modeline'は、 'compatible'が設定されている場合はViのデフォルト値に設定され、 'compatible'がリセットされている場合はVimのデフォルト値に設定されます。

.vimrcファイルの複雑さによっては、compatibleオプションの値を(特定のプラグインによって直接的または間接的に)変更すると、モードラインの動作にも影響を与える可能性があります。

しかし、あなたのファイルはそのようなコメント行を聞くはずです(ここでは、私の~/.zshrcの例):

# vim: tabstop=2 shiftwidth=2 expandtab
0