setと:setの違いは何ですか?


16

私はティム・ポープのvim-sensibleプラグインを見ていましたが、READMEでこれに気付きました...

機能の信頼できるリストについては、ソースを参照してください。(心配しないでください、ほとんどが:set呼び出しです。)

ソースを見ると、:set呼び出しは次のようになっています...

set autoindent

:前にありませんset

私も実際:setに例で見たことがあると確信しています.vimrc

違いはなんですか?

どのフォームを使用する必要があります.vimrcか?

回答:


21

「スクリプト」は、一連のexコマンドを実行するだけです。「exコマンド」は:、Vimで使用するときに入力するものです。たとえば:wq:set wrap:e file、などすべてのexコマンドです。

:コマンドの一部ではありません。コマンドラインモードを開始するための単なるキーストロークです。:たとえば、複数のコマンドをチェーンする場合|:複数回繰り返す必要がないなど、常にを含める必要はありません。たとえば、:write | quit正常に動作します。

便宜上、:が含まれることもあります。これはコピー/貼り付けなどに役立ちますが、必要はありません。関係ありません。実際、すべての先行する:sは単に無視されます。:writewrite、および:::::::::write(明らかではないが正気の点で)の機能性の点ですべて同等です。

:これがexコマンドであることを明確にするために、ドキュメントに含めると便利なことがよくあります。たとえば、次の単語に移動するには、または通常モードのコマンドをw参照できます。:ww

これはすべてに適用されることに注意してください。このような制御構造ifendifしているにもちょうどEXコマンド; 次のように入力できます:

:if 1
:echo 'one'
:endif

Vimコマンドラインからは問題ありません。「スクリプト」は必要ありません。Vimスクリプトは非常に「非魔法」で「非特殊」です。Vimスクリプトで実行できるexコマンドラインから実行できること、およびその逆。


6

違いはありません。vimは、:vimrc (または任意のvimscriptファイル)でコマンドの前にaを見つけた場合、それを無視します。また、前述のように、これはsetコマンドに固有のものではありません。

通常、:コマンドはvimrc (または他のvimscriptファイル)に置かれるのではなく、ユーザーによって実行されることを意味しますが、通常はコンテキストに依存します。個人的には、vimscriptファイルのコマンドの前にコロンを置かない方がはるかに良いと思いますが、それは他のほとんどの人たちも同様に行うようです。

詳細については、を参照してください:help script


:h scriptまたは:h vim-script-intro(同等)
VanLaser
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.