粘贴格式字符串或粘贴并替换

粘贴格式字符串或粘贴并替换

在 Vim 中,我可以提供格式字符串,将其提取出来,然后将其与范围内的格式化值一起粘贴吗?Python 2 中的一个示例是:

对于范围(1,3)内的 i:打印“这是第 %d 行”%i

如果在 Vim 中无法实现这一点,那么在 Emacs 或其他编辑器中可以实现吗?

答案1

我不完全清楚你想要什么,但是在 Vim 中你可以做这样的事情:

:for i in range(line('$')) | call append(i+i, printf("this is line %d:", i+1)) | endfor

我使用“ ”的原因i+i是,当行插入缓冲区时,行号会发生变化,而这会对此进行纠正。(如果您的范围中有不同的“起点”,则您的校正算法将不得不更加复杂。)

或者,如果您想修改缓冲区中现有的行:

:for i in range(1, line('$')) | call setline(i, printf("this is line %2d: %s", i, getline(i))) | endfor

当然,如果您不想更改缓冲区,而只是想打印到屏幕,请使用“echo”而不是“call”,并从 printf() 周围删除 append() / setline() 块。

看:

:help :for
:help :call
:help :echo
:help range()
:help line()
:help append()
:help setline()
:help getline()
:help printf()

答案2

在 Emacs 中尝试:

M: (dotimes (i 3) (insert (format "This is line %2d.\n" (1+ i))))

这里M:代表eval-expression

相关内容