vimをinsertleaveでキャラクターに移動させるにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/5841646

  •  27-10-2019
  •  | 
  •  

質問

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に次のように伝えるにはどうすればよいですか。

  1. 左にシフトしていませんか?
  2. 上記が不可能な場合は、右にシフトすることで補償します
役に立ちましたか?

解決

質問に答える前に、MacVimを見ることをお勧めします(そうでない場合)。端末に固執する(または必要な場合)場合、ITERMのような別の端末がより多くの機能を提供するかもしれません。とにかく、ブロック-BARの間のカーソルの変更はITERMには存在しません(少なくとも私はそう思います)、それを解決する方法は驚異的でした、それは今ここにブックマークされています。ありがとう!


あなたが言ったように、それを解決する簡単な方法は、別のオートコマンドを追加することです。しかし、あなたのパターンと実行する正しいコマンドが欠落しています。

h コマンドではありません。実行するには ノーマルモード シーケンス、使用します :normal 指図。これは正しく機能する可能性があります:

au InsertLeave * normal! h
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top