首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Vim命令映射

Vim命令映射
EN

Unix & Linux用户
提问于 2013-06-06 20:26:48
回答 1查看 841关注 0票数 2

我的问题是如何将一个多部分命令映射到一个单键组合键。

在我的.vimrc中,我有以下一行:

代码语言:javascript
运行
复制
nnoremap <leader>ss :w\|:silent !execute_external_script > output_of_script.txt\|:redraw!<cr>

正如您所看到的,当我按<leader>ss时,我有三个命令要执行。首先,编写文件,然后执行我的外部脚本(脚本运行单元测试)。不幸的是,我的终端在执行shell命令后没有重新绘制Vim。所以我试着附加这个:redraw!命令,很明显,这个命令被传递给shell,而不是Vim,因为我得到了这个错误:

bash: :redrawecho: command not found

如何编写命令,以便脚本在shell中执行,然后在Vim中重新绘制?(另外,作为奖励,有人能解释一下<cr>做什么吗?)

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2013-06-06 20:56:22

是的,:!命令将命令行的其余部分作为参数。要连接其他Vim命令,可以使用:execute包装该命令:

代码语言:javascript
运行
复制
nnoremap <leader>ss :w\|:silent execute '!execute_external_script > output_of_script.txt'\|:redraw!<cr>

或者,您只需发出多个命令行,由<CR>分隔;毕竟,映射只是一个固定的宏:

代码语言:javascript
运行
复制
nnoremap <leader>ss :w\|:silent !execute_external_script > output_of_script.txt<cr>:redraw!<cr>

另一个注意事项:与其转义\|命令分隔符,通常的方法是使用特殊的<Bar>密钥代码;参见:help keycodes的完整列表;这也解释了<CR>代表回车。

票数 4
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/78505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档