時々、アルファベット全体を書く必要がありabcd…z
、Vim の挿入モードで 1 文字ずつ入力するのが嫌いです。これをより効率的に行う方法はありますか?
カーソルがある文字のアスキー コードを表示するコマンドについては知ってga
いますが、1 から (たとえば) 5000 までの数字を入力する標準的なソリューションと組み合わせて使用する方法については何も知りません: a1ESCqqyyp^Aq4998@q
…</p >
使用set nrformats+=alpha
:
ia<Esc>qqylp<C-a>q24@q
ステップバイステップ:
ia<Esc> " Start with 'a'
qqylp<C-a>q " @q will duplicate the last character and increment it
24@q " Append c..z
シェルがブレース展開を行う場合、これは非常にエレガントなソリューションです。
:r !printf '\%s' {a..z}
:read!
外部コマンドの出力を現在のバッファに読み込みます。この場合、シェルによって展開された後にprintf
適用されたシェルの出力を読み取り{a..z}
ます。
このコマンドはどうですか:
:put =join(map(range(char2nr('a'),char2nr('z')),'nr2char(v:val)'),'')
a
からまでの範囲の文字の ASCII 値を収集し、z
それらを関数にマップしてnr2char()
、結果を で現在のバッファに挿入し:put =
ます。
囲みを省略すると、それぞれ別の行に文字が表示されますjoin(
。,'')
見る
:h nr2char()
、:h char2nr()
、:h :put
、range()
テーブルで、map()
、join()
および友人を検索しlist-functions
ます。