Vimでは、ファイルの領域にファイルタイプのオートコマンドを適用するにはどうすればよいですか。
-
02-01-2020 - |
質問
C、Python、Rubyなどを組み込んだ一種のポリグロットファイルタイプを持っています(「Wikiページ」が役立つのであれば)。ファイルの領域上の既知のファイルタイプのために自動コマンドを実行する方法はありますか?
例えば、
#!bash
if [ a = b ]; then
echo 'equal'
fi
#!python
if a = b:
print('equal')
.
とPythonのファイルタイプの自動コマンドと後者の部分にBASH FileType AutoCommandsを適用したい。
このメソッドを使用して、リージョンを定義することで構文上のヒイライティングを得ることができます。Tを同様に適用できるのに十分なAutoCommandsを理解してください。
解決
fileType設定はバッファローカルであるため、これを自動的に実行することは困難です。 VIMには地域の概念がないため、正しく記載されているように
:autocmds
を使用する必要があります。
クイック・イージー
さらにより単純なアプローチは、ファイルタイプを迅速に切り替えるためのいくつかのマッピングを定義することです:
:nnoremap <Leader>fp :setf python<CR>
:nnoremap <Leader>fs :setf sh<CR>
.
単一緩衝液中の本当に領域
これのスケッチは簡単です:
:autocmd CursorMoved,CursorMovedI <buffer> if line('.') >= 6 | setf python | else | setf sh | endif
.
これは、適切なクリーンアップを行っている各ファイルタイププラグインに依存しています(またはすべての関連オプションを上書きされます)。
地域の決定方法
上記のスケッチのように、明示的に行番号を明示的に指定したくない。 My onSyntaxchangeプラグインは、適切な構文を定義できる場合に備えて各ブロックの領域
所属していません StackOverflow