モードライン

Portfileの最初の行におまじないのような一行がある.
# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4

EmacsとVim用にソースの種類やタブの取り扱いを設定するためのもので,モードラインと
呼ばれている.

Portfileの書き方として推奨されているので,よく考えずにこの行をつけていた.

モードラインの設定に従うはずなのに,この行があるにもかかわらず,~/.vimrcの設定が使われるので,モードラインが有効になっていないことに気づいた.

モードラインを有効にするには,
set modeline
set modelines=1

とする.いつも使うのなら,~/.vimrcに書いておけば良い.モードラインはset modelineで有効になる.モードラインの設定を検索する行数は,set modelinesで指定する.既定では,モードラインは無効でmodelines=0のようであるので,モードラインを使うにはこの設定が必要である.

後半にあるvimの部分では,テキストのエンコーディングをutf-8に(fenc=utf-8),ファイルタイプをtclに(ft=tcl),タブを展開(et),インデント,タブ,ソフトタブをそれぞれ4文字に設定している.ソフトタブに0でない値を設定すると,タブを入力したとき設定した文字数の空白に置換する.

ソースの種類により,スタイルは異なっている.Makefileはタブが必要なので,いつもタブの展開(set expandtab)しておくわけにはいかない.Cなど通常のソースでは,タブが4つの空白にすることが推奨されることが多い.長い数式を書き,doループが多重になることが多いFortranのソースでは,タブは2つくらいにしておきたい.このような場合でもソースの最初にモードラインを書いておけば,様々なスタイルに対応することができる.

Portfileは拡張子がないが,モードラインの設定のおかげで,文法に基づいた色づけ(syntax enable)を~/.vimrc等に設定しておけば,キーワード等に色がつく.インデント等の設定があるために,文字を揃えるのが容易になった.大変便利だ.Fortranやnclのソースにも適宜モードラインを設定して,見やすいソースを書くようにしたい.

コメント

このブログの人気の投稿

静的サイト生成ツールの導入

uptex

TeXのソースを分割してTeXShopでタイプセット