回答:
let
変数にset
値を割り当て、Vimの内部オプションの1つに値を割り当てます。
たとえば、次を使用します
:let mystring='Hello!'
新しい変数を宣言するために使用しますが、
:set tabstop=4
または
:set expandtab
Vimのオプションの1つを設定します。
参照::help let
、:help set
。
g:
単にグローバル変数を意味します。これらの「変数名前空間」には、次のものがいくつかあります:help internal-variables
。
(nothing) In a function: local to a function; otherwise: global
|buffer-variable| b: Local to the current buffer.
|window-variable| w: Local to the current window.
|tabpage-variable| t: Local to the current tab page.
|global-variable| g: Global.
|local-variable| l: Local to a function.
|script-variable| s: Local to a |:source|'ed Vim script.
|function-argument| a: Function argument (only inside a function).
|vim-variable| v: Global, predefined by Vim.
:set
内部オプションに使用され、オプションのタイプを処理します。ブール型オプションの反転(例:set invpaste
)リストの設定の追加や削除(例:set dictionary-=/tmp/myfile
)などが可能です。
:let
一方、代わりに有するような単純な価値、等通常の変数、オプション、レジスタ、および値であるセットを含むVIMで可変のもの、の過多へのアクセスは、式を評価した結果であることができ:set
ている手段、:let
数学、文字列操作、および関数にアクセスできます。
たとえば:let &dictionary=/tmp/myfile
、オプション'dictionary'
を/tmp/myfile
(上の:set
例で示した同じオプションを変更する)に設定できます。
でグローバル変数を設定できます:let g:myvar=42
。尋ねたプレフィックスがスコープを提供します。Doorknobの答えは、スコーピングを非常によくカバーしています。
次のことができます:let @a="Some text"
格納するためのレジスタの内容を変更するにはSome text
、あとでで貼り付けることができ、"ap
たとえば。
次のことが可能:let $PATH = $PATH . ":/home/me/bin"
に独自のbinディレクトリを追加するPATH
(これは任意の環境変数のために働く)のVimで実行される任意の外部コマンドに渡される環境変数。
がlet
(のようないくつかの非常に強力な能力を持っている:let $MYFILE = @%
現在のバッファのファイル名に環境変数を設定するために)、それは素敵なアクセスまたはのようなエラー・チェック提供していないので、それは、設定がブール値であることを知らない:set
んです。
最終的には、仕事に最適なツールを使用することです。オプションを単に変更したい場合:set
は、あなたのツールです。レジスタ、オプション、変数間で情報を移動したい場合、または式の結果に基づいて値を作成したい場合:let
は、ツールになります。
Vimについて明示的に尋ねましたが、注意すべきもう1つのことは、あまり一般的:set
で:let
はないvi / Vimファミリでより一般的です(たとえば、nviにはlet
コマンドがなく、viemuは経由でレジスタへのアクセスを提供しませんlet
) 。
let
してvimの内部オプションを設定できることに注意してくださいlet &{option name}=value