我想在我的~/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
实际上在做什么呢?听起来您尝试的事情可以通过更简单的方式实现。