web-dev-qa-db-ja.com

カーソルの下で*直接*数を増やすにはどうすればよいですか?

Vim et alでは、を使用してカーソルを置く数を増減できます。 CTRLA そして CTRLX。ただし、これにより整数が増加しますが、カーソルのすぐ下の数を単純に増やしたいと思います。説明するのは少し難しいので、これが私が意味することです:

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

What I need:
[6]5 -> 75

or:
3[8]90 -> 3990

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

私は少しググったが、そのようなショートカットが存在するかどうかわからないので、ヒントは大歓迎です!

39
Durand

この場合、私は通常タイプします r そして、私が欲しい数字。

38
Xavier T.

<C-a>および<C-x>は整数(1桁以上)では機能しますが、数値の「部分」では機能しません。ただし、「カウント」が必要なため、10<C-a>[6]575に変換します。

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

40
romainl

3 [9] 42は4042になると思うので(そうでなければ、 ザビエルの解 はほぼ完璧です(*))、次を使用します。

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

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

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

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

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

8
Luc Hermitte

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

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

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

6
gpojd

グローバルコマンドの使用 Ctrlv リテラルを挿入するには Ctrla つまり、通常モードでは、すべての数を増やします\d\+ by 10

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

通常モードでは、次のことを簡単に行うことができます。

10 Ctrl-a
3
SergioAraujo

あなたはそれを次のように行うことができます( F9):

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

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

1
Zsolt Botykai

できるよ v11<C-A>x します (digit + 11) modulo 10これを頻繁に行う場合は、好きなものにマップできます(<leader>a?)。

注:数字が9でない場合は、v<C-A>動作します。このヒントは vimgolf から入手しました。このサイトをお勧めします:D

1
TitouanT

"レジスタを台無しにしてもかまわない場合は、次のシーケンスを実行します。

s<C-R>=<C-R>"+1<CR>
0
sidyll

v <C-A/X><C-A/X>は、カーソルが置かれている単語(つまり数字)または視覚的な選択(つまり数字)のいずれかで機能します。

0
ZArthur