映射 shell 命令以将其执行到 vim 中

映射 shell 命令以将其执行到 vim 中

我想在我的~/vimrc文件中映射密钥,<F4>以便在我当前正在编辑的文件上vim执行程序。indent我该怎么做?如果我这样做,兼容性vi会被破坏吗?

提前致谢。

答案1

尽管手册页甚至没有暗示它--help,但事实证明indent它将处理管道中的事物,从标准输入(又名,FD 0)读取并写入标准输出(又名,FD 1),这就是您需要得到的这个工作之内维姆。

从映射的命令开始:

map <F4> :!indent<CR>

转到文件的第一行并进入可视模式 ( Ctrl-v)。然后按Ctrl-End,这将带您到文件的最后一行。看起来最后一行宽度加一的块(换行符,位于 vim 中所有行的末尾),包括每一行,都被突出显示。它有多宽并不重要,因为如果我们通过外部命令提供这个块,垂直方向是唯一的决定因素:如果包含一条线,它将是整条线。

所以现在你按下F4并急速。 这是我测试过的它有效 IMO,这很简单 - 而且这意味着如果您愿意,您也可以轻松缩进一个部分,而不是整个文件。另一个想法是从映射中删除返回,<CR>这样您就必须自己按 Enter 键,但也可以选择向indent.然后你就可以混合搭配不同的风格了,哈哈。

如果您确实想将其映射到自动选择整个文件,请调用indent,然后返回到命令模式和/或您的原始位置 - 我确信使用更复杂的构造这是可能的。不幸的是,我现在对 vim 编程一无所知,所以我无法告诉你它会如何进行。但可能有人会这样做。在此之前,您必须满足 6 次击键的要求(:1+return 转到文件开头,+return转到ctrl-v文件开头,ctrl-end+return 转到文件末尾,最后,+return F4)。

答案2

我认为这应该有效。

map <F4> !indent %<CR>

我认为这取决于您的系统接下来会发生什么,但至少您必须重新加载文件。

但是,indent实际上在做什么呢?听起来您尝试的事情可以通过更简单的方式实现。

相关内容