ここで間違っているのか分かりません。Vim normal!リテラルを空白文字の代わりに<Space>文字列を送信
:normal! I###<Space><Esc>
私は言葉の上に、このコマンドを実行するときに私が望む最終結果はこれです:
### word
しかし、その代わりに、私はこれを取得:
###<Space>word
ここで間違っているのか分かりません。Vim normal!リテラルを空白文字の代わりに<Space>文字列を送信
:normal! I###<Space><Esc>
私は言葉の上に、このコマンドを実行するときに私が望む最終結果はこれです:
### word
しかし、その代わりに、私はこれを取得:
###<Space>word
Vimの:normal
は何と悪夢です中程度に複雑です。なぜ覚えていないのですが、これがあなたが望むものを得る最も簡単な方法です。あなたは、実行するために渡された文字列内の開口部<をエスケープする必要があります。
execute "normal! I###\<Space>\<Esc>"
編集:Vimは本当に理由を説明しませんが、:help normal
An alternative is to use |:execute|, which uses an
expression as argument. This allows the use of
printable characters to represent special characters.
が最初vimのコマンドを説明します:
:normal!
は通常モードとして残りのコマンドを実行しますI
行の先頭から挿入モードにする<shift> + i
###<Space><Esc>
- (。あなただけの挿入モードに入り、###<space><esc>
を入力した場合、あなたはその文字通り得るだろうという通知)我々は挿入モードにあるので、文字通りの文字###<Space><Esc>
を入力しすると、このコマンドは終了それがまだノーマルモードでどのようになっているのか気づくでしょう。これは、あなたのコマンドはちょうど<space><esc>
を省略し、文字通りスペースに入ることができることを意味します
:norm! I###
(余分なスペースは、最後のハッシュ後にあります)