本文へ

vim7.4の「set cpo&vim」とは?

レス3
(トピ主 1
🙂
vim初心者
話題
vimスクリプトを勉強中の身です。 勉強のためvim7.4に含まれるzipPlugin.vimを読み解いていますが、ヘルプを読んでもわからない箇所が出てきました。 zipPlugin.vimの25行目に「set cpo&vim」とあります。「:he cpo」とするとviとの互換性を制御するためのように見受けられるのですが、今ひとつ理解できません。 不勉強で大変申し訳無いのですが、どなたかご解説をお願いできないでしょうか。 よろしくお願いいたします。

トピ内ID:1742887480

これポチに投票しよう!

ランキング

レス

レス数3

このトピックはレスの投稿受け付けを終了しました

互換性オプションの副作用回避のため

041
どむ
cpoとは、compatible optionの略で、viと互換性のないvim独自の機能のオン、オフを切り替えます。 :set cpo&vimとすると、viとの互換性オプションをオフにしてvimのデフォルトに設定します。 もし互換性オプションが設定されていると、例えば行継続記号'\'が無効となるので、 行継続記号を使って一つの行を複数に分割していると、その場所でエラーになってしまいます。 cpoがどういう設定になっているかを事前に知ることは出来ないので、スクリプトの先頭で let s:save_cpo = &cpo set cpo&vim として、cpoの値を保存した後にvimのデフォルトに戻しておき、最後に let &cpo = s:save_cpo として、設定を復旧するのが普通です。

トピ内ID:6470680643

...本文を表示

:help compatible

💡
ビム
うーん、専門知識が必要なことは、ここよりもvim-users.jpなんかに行くとよいと思いますよ~ :help cpo したならおわかりと思いますが、cpoptionsを設定すると動作はVi互換にセットされます。ただ、compatibleオプションの値はvim が vi 互換モードで動いている場合とそうでない場合とでは初期値が異なります。 そこでvi互換モードにした上で、明示的にcompatibleオプションをvimの初期値に設定する場合、 :set cpo&vim 上記のようにセットします。

トピ内ID:6339066760

...本文を表示

大変良く分かりました

😀
vim初心者 トピ主
ご回答頂き、ありがとうございました。大変良く分かりました。 特に「let s:save_cpo = &cpo で現在の設定を保存しておく」というご説明は、単なる「set cpo&vim」の解説にとどまらず、 その前後関係を併せた非常に参考になるお話でした。 自分だけが使うマクロであれば気にしませんが、一般に公開する場合は必要になる処理ですね。 とても参考になりました。ありがとうございました。

トピ内ID:1742887480

...本文を表示
[PR]
気に入ったトピを保存するといつでも読み返せる
気に入ったトピを保存するといつでも読み返せる
使用イメージ
使用イメージ

マイページ利用でもっと便利に!

お気に入り機能を使う ログイン
レス求!トピ一覧