2017-12-04 15 views
1

カーソルの移動を行の左端の空白以外の文字に制限するvim設定はありますか?Vim:左カーソルの移動を行の最初の非空白文字に制限する方法は?

いくつかの情報をバッファに出力しているプラ​​グインを作成しています。すべてのテキストは、左に多くの空白パディングがありますが、すべての行が同じインデントされます。私は、テキストがないパディングエリアにカーソルを移動させないようにしたいと思います。例えば

| Lorem ipsum 
| Lorem ipsum 
| Lorem ipsum 
| Lorem ipsum 

'|' vimの境界を表し、境界とテキストの間は空白です。カーソルは、これらの空白で移動してはならず、 'L'で停止する必要があります。

+1

ワットを**これらの場合。 –

+0

あなたが達成しようとしているものについて、より多くの情報が必要です。例えば、バッファが '' 'nomodifiable' 'によって変更されるのを防ぐことができますか?もしそうならば、各行についての特別な情報をバッファローカル変数に格納することができます。たぶん私たちは隠蔽を使うことができます。たぶんこれはバッファではなく、代わりにquickfixリストか 'inputlist()'を使用してください。 –

+0

私は既にバッファが変更されるのを防ぎ、それはバッファである必要があります。どのような情報を提供するかわからない... – skamsie

答えて

1

あなたはより多くのヘルプを参照してくださいCursorMoved:normal!

augroup BossyMotions 
    autocmd! 
    autocmd CursorMoved <buffer> if strpart(getline('.'), 0, col('.')) =~ '^\s*$' | execute 'normal! ^' | endif 
augroup END 

と行の先頭にカーソルを強制することができます:**私は、ユーザーが使用するのに十分にスマートになると思い

:h :normal 
:h :autocmd 
:h :autocmd-buflocal 
:h :augroup 
:h CursorMoved 
:h :exe 
:h strpart() 
+0

私の質問は誤解されていたと思う...私はカーソルが行の最初の空白以外の文字にあるときに、カーソルが左に動かないようにしたい。すべての行には空白がたくさん付いています(vim用のPythonライブラリを使用しています)。私は基本的にあまりにも面倒なくパディング効果を作成しようとしています。 – skamsie

+0

これを私のvimrcに追加しましたが、違いは見られません。 – skamsie

+0

これはローカルのバッファ 'autocmd'(別名' ')で、これを特定のバッファに追加する必要があります。基本的にはこれで移動することができますが、インデント内で終わると、最初の非空白文字になります。 –

関連する問題