2011-06-27 11 views
59

可能であれば、現在のモードに応じてvim(カラー、シェイプなど)のカーソルを変更する方法を知りたいです。挿入/通常モードでvimカーソルを変更するにはどうすればよいですか?

私は挿入モードではないことを常に忘れています。コードを入力すると、あらゆる種類の狂ったことが起こります。カーソルに何らかの視覚的な指示があった場合に役立ちます。

+8

私は1つのルールを学ぶことをお勧めします:打ち切り=>打ち込みモードを終了しました。そうすると、あなたが挿入モードになっていないことを忘れた状況は決して観察されません。 – ZyX

答えて

-3

私は、通常、他のものの間で、ステータスライン上に現在のvimのモードがあります。シンプルさを求めるなら、only this information onto the statuslineを設定することができます。

しかし、通常は本当にクレイジーなことが起こるのは、キャップロックが押されてコマンドモードになっているときです(hjklは現在HJKLです。ちょうどJとKは、あなたが何かを理解していないときに私が何を意味するかについては、:h J:h Kを実行してください)。ちょうどbeware the caps lock keyとあなたはほとんどの時間IMOの大丈夫でしょう。

+39

これはどのようにして質問に答えますか? –

+0

@DavidRivers OPが自分の問題を解決することを要求していたXY問題のアプリケーションです(vimのノーマルモードであることを知らず、カーソルがそれを示すように変更することを知らない)が、代わりに(そしてIMO偉大な解決策ではありません)(状態と彼のステータスラインを高める) –

12

さまざまなモードでカーソルの形状を変更するには、次のものをvimrcに追加します。 gnome-terminalのために

(バージョン2.26)を編集

if has("autocmd") 
    au InsertEnter * silent execute "!gconftool-2 --type string --set /apps/gnome-terminal/profiles/Default/cursor_shape ibeam" 
    au InsertLeave * silent execute "!gconftool-2 --type string --set /apps/gnome-terminal/profiles/Default/cursor_shape block" 
    au VimLeave * silent execute "!gconftool-2 --type string --set /apps/gnome-terminal/profiles/Default/cursor_shape ibeam" 
endif 

あなたはgnome-terminalの中で複数のプロファイルを使用する場合は、あなたのプロファイルにこれを適応する必要がある場合があります。これは、複数のタブやウィンドウで動作しますKDE4Edit

let &t_SI = "\<Esc>]50;CursorShape=1\x7" 
let &t_EI = "\<Esc>]50;CursorShape=0\x7" 

でkonsoleのために

http://vim.wikia.com/wiki/Change_cursor_shape_in_different_modes

+12

私は主にtmuxのvimをsshとputtyで使います。もっと普遍的な選択肢はありますか? – lanrat

+0

チャームのように働いた。ありがとう。 – Ernest

+0

gconftool-2コマンドでgnome-terminalの設定を変更することは非常に悪い考えです。これは、あなたのvimが動作している端末だけでなく、同じプロファイルの他の現在および将来のgnome-terminalタブにも影響します。 – egmont

65

人気のオプション 現在の画面行が強調表示されているかどうかに責任があるcursorlineオプションをトグルしている(バックノーマル モードへと)挿入モードに切り替えることを示します。

:autocmd InsertEnter,InsertLeave * set cul! 

または

:autocmd InsertEnter * set cul 
:autocmd InsertLeave * set nocul 
+2

私はculをデフォルトのアンダーラインの代わりにhiglight bgに設定します:hi CursorLine cterm = NONE ctermbg = black –

+0

これはcygwinのvimでは動作しませんか?私はエディタに入っていて、両方の行に入っていて、完全な列または行を超えてハイライトを設定することはできませんでした。 – TankorSmash

+0

@Tankor: 'cursorline'オプションは、特定の能力。これは '+ syntax'機能でコンパイルされたあらゆるVimインスタンスで利用できます(通常はそうです)。 –

4

カーソルを挿入モードで点滅させ、他のモードでは静的にするだけで便利です。

set guicursor+=n-v-c:blinkon0 
12

あなたがOSXtmuxはiTerm2を使用している場合は、
次はクレジット

if exists('$TMUX') 
    let &t_SI = "\<Esc>Ptmux;\<Esc>\<Esc>]50;CursorShape=1\x7\<Esc>\\" 
    let &t_EI = "\<Esc>Ptmux;\<Esc>\<Esc>]50;CursorShape=0\x7\<Esc>\\" 
else 
    let &t_SI = "\<Esc>]50;CursorShape=1\x7" 
    let &t_EI = "\<Esc>]50;CursorShape=0\x7" 
endif 
:autocmd InsertEnter * set cul 
:autocmd InsertLeave * set nocul 

をブロックからのカーソルにカーソルを変更し、現在の行をハイライトします: https://gist.github.com/andyfowler/1195581

+0

これは* iTerm *に特有のものです。標準のものも実際には機能しますが、他のすべてのサポート端末でも機能するので、これはおそらく間違った答えです。ここをクリックしてください - > https://stackoverflow.com/a/42118416/340947 –

14

xterm/urxvt/...(Linux)の、iTerm2(マック)、ConEmuでのGit Bashの(Windowsの場合)、より(コメントを参照してください):

let &t_SI = "\e[6 q" 
let &t_EI = "\e[2 q" 

" optional reset cursor on start: 
augroup myCmds 
au! 
autocmd VimEnter * silent !echo -ne "\e[2 q" 
augroup END 

あなたは tmuxのを使用する場合、あなたがこのようにそれを使用することが重要である(\<Esc>Ptmux;エスケープなし) - ウィンドウ/ペインを切り替えると、tmuxは正しいカーソル形状を追跡します。 tmuxが動作しない場合は、tmuxを起動する前にTERM=xterm-256colorを設定する必要があります。

その他のオプション(\ Eの後に番号を交換[):

Ps = 0 -> blinking block. 
    Ps = 1 -> blinking block (default). 
    Ps = 2 -> steady block. 
    Ps = 3 -> blinking underline. 
    Ps = 4 -> steady underline. 
    Ps = 5 -> blinking bar (xterm). 
    Ps = 6 -> steady bar (xterm). 
+1

ターミネーター(Linux) – apparat

+1

はMacOS、tmux、およびターミナルvimにはうまくいきます – Ken

+1

今すぐalacrittyでうまく動作します –

0

あなたはterminus vim pluginを試みることがあります。

挿入モードでは、細い垂直バーにカーソルの形状が変化します。置換モードでは、アンダーラインに変わります。ノーマルモードに戻ると、標準的な「ブロック」形状に戻ります。

関連する問題