【发布时间】:2012-09-10 07:19:43
【问题描述】:
在编程时,我经常使用以下两行代码:
sprintf(buff,"%s", __func__);
putrsUART(buff);
是否可以设置任何键盘快捷键来插入这两行? 例如。当我在命令模式下键入 \sp 时,这些函数会添加到我文件中的光标位置。这可能吗?如果是这样,我如何映射我的键?
提前致谢。
【问题讨论】:
标签: vim keymapping
在编程时,我经常使用以下两行代码:
sprintf(buff,"%s", __func__);
putrsUART(buff);
是否可以设置任何键盘快捷键来插入这两行? 例如。当我在命令模式下键入 \sp 时,这些函数会添加到我文件中的光标位置。这可能吗?如果是这样,我如何映射我的键?
提前致谢。
【问题讨论】:
标签: vim keymapping
您可以使用专为此设计的缩写。
:abbr spb sprintf(buff,"%s", __func__);
:abbr uart putrsUART(buff);
使用:help abbr 获取血腥细节。请注意,您需要在缩写形式之后键入另一个字符,以便 vim 识别它们。这对于这些来说很自然,因为您将键入 ENTER 作为下一个字符。也可以输入多行缩写。只需在需要换行的地方使用<CR>。
【讨论】:
这是一个普通模式的简单映射,可让您点击 \sp(除非您已重新映射领导者,在这种情况下使用它而不是 \)以插入 sprintf 语句。
map <Leader>sp isprintf(buff,"%s", __func__);<Esc>
话虽如此,我认为缩写是这里的方法
【讨论】:
如前所述,缩写(我将其限制为插入模式 (:iabbr),因为您可能在命令行中不需要它们)最适合简单的扩展;你也可以只为某些文件类型定义它们(通过:iabbr <buffer> ...)。
您的__func__ 看起来像一个模板参数,您每次都需要调整。您不能通过缩写来做到这一点,但有各种插件(许多受 TextMate 编辑器中的功能启发)提供模板插入和参数扩展和一些高级功能。查看 snipMate、xptemplate 或 UltiSnips 之一。
【讨论】:
尝试使用 snip-Mate 插入常用的 coden-ps。 http://www.vim.org/scripts/script.php?script_id=2540
答错了,抱歉:
在你的 vimrc 中试试这个:
map <c-w> :sprintf(buff,"%s",func)<cr>
这意味着映射到 Ctrl-W。
【讨论】: