在Vim中写整个字母表

Jan*_*jka 12 vim alphabet

我有时需要写整个字母表abcd…z,我讨厌在Vim的插入模式下逐个字母输入.有没有更有效的方法来做到这一点?

我知道这个ga命令给了我光标所在字符的ascii代码...但是不知道如何将它与我的标准解决方案混合来输入从1到(例如)5000的数字:a1ESCqqyyp^Aq4998@q...

Nik*_*vda 21

使用set nrformats+=alpha:

ia<Esc>qqylp<C-a>q24@q
Run Code Online (Sandbox Code Playgroud)

一步步:

ia<Esc>      " Start with 'a'
qqylp<C-a>q  " @q will duplicate the last character and increment it
24@q         " Append c..z
Run Code Online (Sandbox Code Playgroud)

  • 如果您没有在这里发布有关“nrformats”的信息,那么该选项肯定是我最后知道的!您使用此选项的目的是什么,以便您了解它? (2认同)

glt*_*lts 13

如果你的shell支持扩展,这是一个非常优雅的解决方案:

:r !printf '\%s' {a..z}
Run Code Online (Sandbox Code Playgroud)

:read!将外部命令的输出读入当前缓冲区.在这种情况下,它会在shell 扩展后读取printf应用于shell的输出{a..z}.


glt*_*lts 6

这个命令怎么样:

:put =join(map(range(char2nr('a'),char2nr('z')),'nr2char(v:val)'),'')
Run Code Online (Sandbox Code Playgroud)

收集的字符的ASCII值在下述范围az,然后将它们映射在nr2char()功能和结果插入到与当前缓冲区:put =.

当你遗漏封闭的join(......时,''),每个单独的行都会得到字符.

看到