1
あなたはそれらまたはより良い(ピンキー)コマンドマッピングを非常に迅速に達成することができます。私はこのソリューションをお勧めしませんが、例として、カーソルを行の先頭に移動したい場合は、通常モードから<C-a>
ヒット:
した後に次の行を実行できます(またはvimrcに行を追加します)。
inoremap <C-a> <C-o>0
または、行の先頭が行の最初の非空白文字を意味する場合
inoremap <C-a> <C-o>^
奇妙なことに、私はこの回答を書いているバッファーでこれらのマッピングをテストしたところ、動作しなかったため、しばらく混乱しました。それから、挿入モードに入るのを忘れていることに気づきました。通常モードのコマンドを実行するために挿入モードを終了するのは面倒なようです。Vimをしばらく使用した後、それが逆であることに気付く場合があります。つまり、考えている間は通常モードのままで、特定の状況でのみ挿入モードに移動します。Vimは、テキストを書くよりも多くの編集を行うことがわかった場合にのみ、おそらく(またはほとんど)学ぶ価値があります。
したがって、挿入モードから通常モードコマンドをすばやく実行することについての質問に対する回答の一部はです<C-o>
。これにより、一時的に挿入モードを終了して、1つの通常モードコマンドを実行してから、再入力できます。それについてで読んでください:help i_Ctrl-o
。これは、1回限りの便宜に役立ちます。より持続可能なルートは、おそらくナビゲーションと編集のデフォルトとして通常モードを採用しようとし、実際に新しい文字を手動でバッファーに挿入したい場合にのみ挿入モードに入ります。
2
あなたの例は非常に一般的なものなので、具体的な答えを出すのは難しいです。あなたが遭遇するものにフィットするか、翻訳可能であることを期待して、具体的な例を作成します。あなたの数1の場合、それはあなたが右括弧がどこに行くことになっているのかをどのように知っているかに依存します。次のような行があるとします
let cchar = s:cchar["atx"]
これは、VimLのスクリプト言語であるVimLの行であることを意図しており、私が現在反対しているVim構文ファイルで発生します(またはそのようなもの)。この式の右側の部分を関数呼び出しに変更したいとしましょう。おそらく、辞書s:cchar
に"atx"
キーの値がまだ割り当てられていないときに関数がデフォルトを提供するためです。カーソル(通常モード)の最初の文字 'l'で、次のように入力します
f=wcf[MyFunction(<Esc>$r)
簡単に言うと、これは
f=
-「=」に進む(私は言っfs
たかもしれませんが、到達したい「s」が行の最初のsであることを確認するのに十分な時間停止しないので、次の文字に行きます:明らかにユニークで、そこから続けます)
w
-次の単語、今私のカーソルは「s:cchar」の「s」の上にあります
cf[
-「[」に転送するように変更
この時点で線は次のようになります
let cchar = |"atx"]
どこ|
カーソルです、と私は挿入モードにしています。次に、入力MyFunction(
して挿入モードを終了します(<Esc>
)。
$
-カーソルを行末に移動します。E
ビッグワードの終わりやf]
「〜への転送」などの動きに使用できたかもしれ$
ませんが、最初に思いつきました。
r)
-カーソルの下の文字を「)」に置き換えます
これで、割り当て式をスクリプトローカルディクショナリからの割り当てから関数の戻り値を使用するように変更しました。そのため、括弧を導入しました。かっこの特定の必要性がどのように見えるかはわかりませんが、おそらくそれは非常に異なります。その場合、それを達成するためのコマンドの異なる文字列があります。私が作った例についてもっと長く考えるために一時停止した場合、それを達成するためのより効率的な方法も見つけるかもしれませんが、一時停止して考える時間のある人はいます。
(試して、テキストとコマンドをバッファにコピーして貼り付け(申し訳ありませんが、yank-put)、カーソルをコマンドヒットの最初の文字「f」に置きますy$
。これで、コマンドは名前のないレジスタにあります。最初の行の先頭に移動して:normal <C-r>"
、a)コマンドラインモードに入る、b)コマンドラインから通常モードコマンドの実行を開始する、c)名前のないレジスタを通常どおりコマンドラインに貼り付ける(atchoo put)実行するモードコマンド。コマンドで変更する必要があるのは、偽の<Esc>
一連の文字を(ブラウザーからコピーして貼り付けたatchooから)実際のEscapeキーコードに置き換えることだけなので、削除してヒット<C-v>
してからEscキーを押します。それは一種のようになります^[
。ここでReturnキーを押してコマンドを実行します。または...キーの文字列を入力してコマンドをテストします。コマンドラインモードから、および<C-v>
、および<C-r>
、およびその他のWonderlandの他のすべての栄光からも通常モードと対話できることを示したかっただけです。また、も参照してください:help Cmdline-mode
。)
3
単語を逆方向に削除するには、標準のマッピングを使用できます<C-w>
(を参照:help i_Ctrl-w
)。単語を前方に削除するデフォルトのマッピングがあるかどうかはわかりませんが、
inoremap <C-S-w> <C-o>dw
この場合<C-o>
も、1回限りのコマンドでは挿入モードが終了dw
し、「単語」の動きが「削除」されます。参照してください:help d
、:help w
。削除する前方単語が実際の単語ではなくclass.function#namesである場合は、使用することができますW
(を参照:help W
)。あなたは、通常モードでは、すでにほとんどしている場合は、これらのマッピングを必要とするだけで実行しないdw
、db
または友人。
いくつかの章を詳しく見るのを助ける
:help <C-o>
:help Insert
:help f
次のセクション(F
、t
、T
、;
および,
)
:help word-motions