私は.aliases
bashとzsh と呼ばれるファイルを持っています、私はこの行を置きます
# vim: set filetype=bash:
しかし、私が作るなら
: echo &ft
私は得る conf
私は.aliases
bashとzsh と呼ばれるファイルを持っています、私はこの行を置きます
# vim: set filetype=bash:
しかし、私が作るなら
: echo &ft
私は得る conf
回答:
うまくいくはずです。自分でそのラインを試してみましたが、うまくいきました。「modeline」オプションが「nomodeline」に設定されている可能性があります。これを実行してみて、得られるものを確認してください。
:verbose set modeline?
これにより、「modeline」オプションの値と、デフォルトでない場合は最後に設定された場所がわかります。
一部のLinuxディストリビューションでは、「modeline」のセキュリティ問題は以前から修正されていますが、セキュリティ対策として/ etc / vimrcまたは/ usr / share / vim / vimrcに「nomodeline」を設定しています。
modelines
、このオプションは未実装であり、実装されることはないと常に述べられています。これは、PDF、Word、Excel、&c&c&cで実行するファイル埋め込みコマンドまたはマクロ命令に起因するすべてのセキュリティバグと同じです。
この他の回答では、完全なデバッグチェックリストについて説明します。
ドキュメントが完全に真実ではないため、私は本当にこれに困惑していました。
バージョン8(およびそれ以前)set
では、モードラインでこの単語を使用できないことがわかりました。ドキュメントでは、「2番目の形式」が存在すると説明されて/* vim: set ai tw=75: */
いますが、これは機能しません。「最初のフォーム」を使用する必要があります// vim: ai tw=75
注:これらの種類のコメントインジケーターのいずれかを使用できます。またはまったくありません。
set
、vim 8.0(7.4ではありません)で正常に動作します。また、2番目の形式// vim: ai tw=75
では、行末に他の文字を含めることはできません。そうしないと、vimは文句を言い、モードラインを無視します。
VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Nov 24 2016 16:44:48) Inklusive der Korrekturen: 1-1689 Extra-Patches: 8.0.0056 Verändert von pkg-vim-maintainers@lists.alioth.debian.org Übersetzt von pkg-vim-maintainers@lists.alioth.debian.org Riesige Version mit GTK2-GNOME GUI.
(最後の行は...によって変更され、...によってコンパイルされた、巨大なバージョン...を意味します)で再現しました。
set modelines=1
(または0以外の値)〜/ .vimrcで機能しました。
modeline
設定されていない場合(ルートでない限りデフォルトでVimに設定されている場合)
set nomodeline
に/etc/vimrc
影響を及ぼします。
modelines
ゼロ以外の値に設定する必要もありました。ヘルプはデフォルトが5
であると言っているので、それが私が設定したものであり、それは私のためにトリックをしました。状態は、If 'modeline' is on 'modelines' gives the number of lines that is checked for set commands. If 'modeline' is off or 'modelines' is zero no lines are checked.
これは検索で出てくるようだから:
私は同じ問題を抱えていました:
# 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
私のconfのどこかに副作用があるかもしれませんが、互換性のないモードライン構文は私にとって期待どおりに機能する唯一のものです。
/usr/share/vim/vim80/debian.vim
以下からvim-common
のDebianベースのディストリビューション無効にし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
ほとんどの場合、モードラインが無効になっていることが原因です。
私はそれを回避します:
この場合、デフォルトのホワイトリストコマンドにはが含まれますfiletype
。