rcmdnk's blog

セット (SET)

Vimの設定をしてる時に上手く行かないところがあって、 きちんと確認したらset周りの事を今更ながら確認したのでそのメモ。

Sponsored Links

Vimのset

Vimではオプションを設定する際、set(seでもOK)というコマンドを使います。

Booleanオプション

spellの様なBooleanの値を持つオプションは切り替えのみ出来、

:set spell

とすればスペルチェックが有効になり、

:set nospell

と、noをつけたオプションをsetするとスペルチェックが無効になります。

:set invspell

または

:set spell!

と、頭にinvを付けるか最後に!を付けると現在と逆の状態になります。

各オプションは

:set spell?

と最後に?を加えてやると、現在セットされている物が確認されます。 (spell or nospell)

:set spell&

と最後に&を付ければデフォルトの設定になります。

Number/Stringオプション

VimのオプションではBoolean以外にNumberとStringのオプションもあって、 これらのオプションは

:set encoding=utf-8

の様に=でセットします。 =の代わりに:でもOK。

Stringの場合でも"でクォートしたりしません。

これらのオプションに関しては、単に

:set encoding

とすると現在の値が見れます。?を最後に付けてもBoolean同様見れます。 また&を最後に付ければデフォルト設定になります。

allで全設定確認

また、

:set all

とすると全てのオプションが表示されます。このall

:set all&

とすれば全てデフォルトに。

setlocal/setglobal

setは現在作業中のVim全体の設定を変更しますが、 setlocal(setl)を使うと現在のバッファだけを変更することが出来ます。

また、setglobal(setg)とすると、 現在のバッファの状態は変更せずにglobal valueだけ変更します。 global valuesetを使った時にも変更されますが、 setlocalでは変更されません。

:setlocal spell<

の様に、setlocalの際にオプション+<の様な形を書くとgloval valueの 値を取ってきて設定します。

:set spell<

とすると同様にgloval valueの値を取ってきて全体の設定とします。

setの=の書き方

以下が今回ちょっと躓いたところですが、 setを使った値入れの場合、=の左側には空白があっても良いんですが、 右側は空白を空けられません。

:set encoding =utf-8

はOK。

:set encoding= utf-8

はダメ。

:set encoding = utf-8

も勿論ダメ。

ちょっと整理している時に全部上の様に空白を空けて行ったらエラーが出た、と。

Helpを見てみればちゃんと書いてあります。

:se[t] {option}={value}         or
:se[t] {option}:{value}
                        Set string or number option to {value}.
                        For numeric options the value can be given in decimal,
                        hex (preceded with 0x) or octal (preceded with '0').
                        The old value can be inserted by typing 'wildchar' (by
                        default this is a <Tab> or CTRL-E if 'compatible' is
                        set).  See cmdline-completion.
                        White space between {option} and '=' is allowed and
                        will be ignored.  White space between '=' and {value}
                        is not allowed.
                        See option-backslash for using white space and
                        backslashes in {value}.

Vim, :h set

Vimではオプションに入れる物がStringの場合でも "とかでクォートしないので、右側に空白を入れてしまうとそれ自体も 一部と認識されてしまうからだと思います。

ちなみに似たような値を入れるためのlet

:let {var-name} = {expr1}                               :let E18
                        Set internal variable {var-name} to the result of the
                        expression {expr1}.  The variable will get the type
                        from the {expr}.  If {var-name} didn't exist yet, it
                        is created.

Vim, :h let

こんな感じで説明にも既に空白があるように=の周りに 空白を入れても大丈夫です。 こちらは文字列を入れる時にはクォートするので。

Vimperatorでも

ついでに、Vimperatorでも同様にsetを使ってオプションを設定できますが、 こちらも本家Vim同様右側の空白は禁止されています。 (実の所Vimの方ではなくてVimperatorをいろいろいじってて気づいた物です。)

Sponsored Links
Sponsored Links

« Firefox VimperatorでNS_ERROR_FILE_ACCESS_DENIEDなエラー Firefoxのabout:config設定を.vimperatorrcで管理する »