vimをinsertleaveでキャラクターに移動させるにはどうすればよいですか?
質問
Mac OS X以来 terminal.app
挿入モードに切り替えるときにブロックからラインへのカーソルの変更を含む、VIMの視覚的側面の多くをサポートしていません、私は使用します osascript
似たような何かをascopmlischする。
私の中で .vimrc
私が書いたファイル:
autocmd InsertEnter * silent !osascript -e 'tell application "Terminal" to set current settings of first window to settings set 11`j
autocmd InsertLeave * silent !osascript -e 'tell application "Terminal" to set current settings of first window to settings set 12`j
どこ settings set 11
ラインカーソルを備えたターミナル設定のセットと settings set 12
ブロックカーソルを備えたものです。
これは実際には非常にうまく機能しますが、1つの小さな問題があります。IntersLeaveでは、カーソルが常に1つの文字が左に移動されますが、それほど大したことではありませんが、それは廃止される可能性があります。
私は置くことによって補償しようとしました autocmd InsertLeave h
私に .vimrc
, 、しかし役に立たない(それは私にエラーを与えます)。
vimに次のように伝えるにはどうすればよいですか。
- 左にシフトしていませんか?
- 上記が不可能な場合は、右にシフトすることで補償します
解決
質問に答える前に、MacVimを見ることをお勧めします(そうでない場合)。端末に固執する(または必要な場合)場合、ITERMのような別の端末がより多くの機能を提供するかもしれません。とにかく、ブロック-BARの間のカーソルの変更はITERMには存在しません(少なくとも私はそう思います)、それを解決する方法は驚異的でした、それは今ここにブックマークされています。ありがとう!
あなたが言ったように、それを解決する簡単な方法は、別のオートコマンドを追加することです。しかし、あなたのパターンと実行する正しいコマンドが欠落しています。
h
コマンドではありません。実行するには ノーマルモード シーケンス、使用します :normal
指図。これは正しく機能する可能性があります:
au InsertLeave * normal! h