Vim, CTRL-A, 番号付き箇条書きを作成する
悩み
以下のような行ごとに数字が増えていくものを書く場面があるかと思います.
No.1
No.2
No.3
No.4
No.5
No.6
やり方
やり方は大きく分けて2つあり、{Visual}g [count] CTRL-A
を使うものとregister
とCTRL-A
を組み合わせるものがあります.
{Visual} [count] g CTRL-A
を使うもの
1,以下のように必要な行数分用意し、
No.1
No.1
No.1
No.1
No.1
No.1
2, visual
モードで二行目以下を選択し、g CTRL-A
とするとそれぞれの行が
インクリメントされます。 今回のように[count]
を省略した場合はcountは1となり1ずつインクリメントされます。
No.1
No.2
No.3
No.4
No.5
No.6
register
とCTRL-A
を組み合わせるもの
1, 一行目を用意します.
No.1
2, qa
をする.register 'a'
の記録を開始する.
3, Y
で行をyank
4, p
で下の行にput
No.1
No.1
5, CTRL-A
, 追加した行の数字をインクリメント.
No.1
No.2
6, q
で register
の記録を終了.
7, <count>@a
で <count>
の回数register 'a'
を実行する.今回の場合は4.
No.1
No.2
No.3
No.4
No.5
No.6
もう少し詳しく
CTRL-A
(CTRL-X
)は[count]
をカーソル以降のnumber or alphabetic character
に足す
挙動のようです。
「alphabetic character
に足すってどういうことや」
って感じですが、a
->b
, y
-> z
という風に次のアルファベットになるようです。
このあたりのどの文字列がCTRL-A
の対象かみたいな設定はnrformats
にあり、
デフォルトではbin,octal,hex
でアルファベットalpha
は入っていないようです。
アルファベットを設定に加える際は
:set nrformats+=alpha
とします。
nrformats
はCTRL-A
コマンドが数値として扱う基数を定義している変数のようです。
また, デフォルトでoctal
が入っているため、0から始まる箇条書きなどを作成しようとする場合は
No.001
No.002
...
No.007
No.010
上記のように007
が010
へと8進数表記のインクリメントがされるので、そういう際は
:set nrformats-=octal
とすると良いです。
*'nrformats'* *'nf'*
'nrformats' 'nf' string (default "bin,octal,hex",
set to "bin,hex" in |defaults.vim|)
local to buffer
This defines what bases Vim will consider for numbers when using the
CTRL-A and CTRL-X commands for adding to and subtracting from a number
respectively; see |CTRL-A| for more info on these commands.
alpha If included, single alphabetical characters will be
incremented or decremented. This is useful for a list with a
letter index a), b), etc. *octal-nrformats*
octal If included, numbers that start with a zero will be considered
to be octal. Example: Using CTRL-A on "007" results in "010".
hex If included, numbers starting with "0x" or "0X" will be
considered to be hexadecimal. Example: Using CTRL-X on
"0x100" results in "0x0ff".
bin If included, numbers starting with "0b" or "0B" will be
considered to be binary. Example: Using CTRL-X on
"0b1000" subtracts one, resulting in "0b0111".
Numbers which simply begin with a digit in the range 1-9 are always
considered decimal. This also happens for numbers that are not
recognized as octal or hex.
Author And Source
この問題について(Vim, CTRL-A, 番号付き箇条書きを作成する), 我々は、より多くの情報をここで見つけました https://qiita.com/woxjro/items/7e67270fa68d41f73854著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .