44

CTRLAvim などでは、 と を使用して、カーソルが置かれている数字を増減できますCTRLX。ただし、これは全体の数を増やしますが、カーソルの直下の数を単純に増やしたいと思います。ちょっと説明が難しいので、以下のように言いたいです。

Ctrl+A usage, cursor is over the "6":
[6]5 -> 66

What I need:
[6]5 -> 75

or:
3[8]90 -> 3990

それが理にかなっていることを願っています。

少しグーグルで検索しましたが、そのようなショートカットが存在するかどうかはわかりませんので、ヒントをいただければ幸いです!

4

9 に答える 9

46

<C-a><C-x>整数 (1 桁以上) では機能しますが、数値の「部分」では機能しません。ただし、「カウント」がかかるため、10<C-a>に変わり[6]5ます75

別のオプションは、1 桁だけを変更したいので、に変換することr7です。[6]575

于 2012-05-10T12:59:11.433 に答える
39

この場合、通常、入力rしてから必要な数字を入力します。

于 2012-05-10T12:57:58.530 に答える
8

3[9]42 は 4042 になると思います (それ以外の場合、Xavier のソリューションはほぼ完璧です (*))。次のようにします。

s/\d*\%#\d/\=(submatch(0)+1)

これは次のようにマッピングできます:

nnoremap <silent> µ :<c-u>s/\d*\%#\d/\=(submatch(0)+v:count1)<cr>``

カウントを受け入れるため。私が見る唯一の問題は、繰り返しをサポートできないことです(のように:h .

(*) コマンドを繰り返しても、一連の異なる数値を同じ量だけインクリメントするのに役立たないという意味で。

于 2012-05-10T17:02:52.393 に答える
6

おそらくもっと良い方法がありますが、これにマップするマクロまたは何かを作成できます。

noremap <LEADER>a a <ESC>h<C-a>lxh
noremap <LEADER>z a <ESC>h<C-z>lxh

基本的に「65」「6 5」を作り、6を増やしてスペースを削除します。おそらく、これの短いバージョンも機能するでしょう。

于 2012-05-10T12:54:07.097 に答える
4

グローバルコマンドでは、Ctrlvリテラルを挿入するために使用します。Ctrlaこれは、通常モードではすべての数値\d\+を 10ずつ増やすことを意味します

:g/\d\+/norm! 10 Ctrl-v Ctrl-a

また、「Ctrl-v Ctrl-a」と入力するのを避けることもできます。下の行にあるように、二重引用符を付けて「exec」を使用するだけです。一重引用符を使用しようとすると、この解決策は機能しません。

:g/\d\+/exec "norm! 10\<C-a>"

通常モードでは、次のように簡単に実行できます。

10 Ctrl-a
于 2012-05-11T14:05:06.533 に答える
1

次のようにできます(の代わりに何でも使用してくださいF9):

:nnoremap <F9> :exec 's@^\(.\{' . (col(".")-1) . '\}\)\(.\)\(.*\)@\1' . (getline(".")[col(".")-1]+1) . '\3@'<CR>

基本的に、行内のカーソル位置を見つけ、その上に正規表現文字列を作成し、その位置の文字を使用して 1 を追加します。

于 2012-05-10T13:10:52.847 に答える
0

レジスターを台無しにしても構わない場合は"、別のシーケンスでそれを行います。

s<C-R>=<C-R>"+1<CR>
于 2012-05-10T13:56:25.117 に答える