gpt4 book ai didi

perl - 如何编写 vim 脚本以在缓冲区上运行 perltidy?

转载 作者:行者123 更新时间:2023-12-03 23:01:59 25 4
gpt4 key购买 nike

在我目前的工作中,我们的编码风格标准与我通常遵循的标准不同。幸运的是,我们有一个用于 perltidy 的 jar 装 RC 文件。我可以在将文件提交给我们的审核流程之前申请重新格式化文件。

我有 emacs 的代码,我用来在缓冲区上运行命令并将缓冲区替换为输出,我已经为此进行了调整。但我有时会在 emacs 和 vim 之间交替使用,并希望在那里拥有相同的功能。我确信这个或类似的东西很简单,并且已经完成并重新完成了很多次。但是我没有太多运气找到任何似乎可以满足我需要的 vim-script 示例。从本质上讲,这是为了能够点击一个组合键(比如我在 emacs 中使用的 Ctrl-F6)并通过 perltidy 重新格式化缓冲区。 .虽然我是一个舒适的 vim 用户,但我完全不知道为 vim 编写这种东西。

最佳答案

在尝试@hobbs 回答后,我注意到当通过 perltidy 过滤整个缓冲区时光标返回到第 1 个字节,我必须记下原始行号,以便在 :Tidy 之后返回。完全的。
因此,基于@hobbs 和@Ignacio 的回答,我在 .vimrc 中添加了以下内容:

"define :Tidy command to run perltidy on visual selection || entire buffer"
command -range=% -nargs=* Tidy <line1>,<line2>!perltidy

"run :Tidy on entire buffer and return cursor to (approximate) original position"
fun DoTidy()
let l = line(".")
let c = col(".")
:Tidy
call cursor(l, c)
endfun

"shortcut for normal mode to run on entire buffer then return to current line"
au Filetype perl nmap <F2> :call DoTidy()<CR>

"shortcut for visual mode to run on the current visual selection"
au Filetype perl vmap <F2> :Tidy<CR>
(关闭 " 添加到注释中以突出显示 SO 语法(不是必需的,但有效的 vim 语法)) DoTidy()将光标返回到原来的位置加减至多 X字节,其中 Xperltidy 添加/删除的字节数相对于原始光标位置。但是,只要您保持整洁,这就是相当微不足道的:)。
[Vim 版本:7.2]
编辑:更新 DoTidy()加入@mikew 的评论以提高可读性和与 Vim 7.0 的兼容性

关于perl - 如何编写 vim 脚本以在缓冲区上运行 perltidy?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2345519/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com