gpt4 book ai didi

vim - 初学者脚本 : ^@ appearing at the end of text

转载 作者:行者123 更新时间:2023-12-01 11:57:54 24 4
gpt4 key购买 nike

我正在尝试创建一个有助于创建 shebang 的脚本(好吧,它可能没有那么有用,但是当你不知道程序在哪里时它有优势,例如),这是我目前所拥有的:

function! CreateShebang()
call inputsave()
let program = input('Enter the program name: ')
call inputrestore()
let path = system('which ' . program)
call append(0, '#!' . path)
endfunction

顺便说一下,我刚开始使用 vim 脚本,所以如果您发现任何错误的函数和概念,或者知道实现结果的更好方法,请告诉我。非常感谢任何帮助。

最大的问题是,脚本运行后会正确提示程序名,然后在文件中添加如下内容:

#!/usr/bin/perl^@

^@ 在那里做什么?

此外,如果我可以在这里问另一个问题,如何在 input() 之后清除命令行?用户输入的文本会一直显示,直到输入另一个命令。

最佳答案

^@ 命令末尾的换行符被 append() 函数转换为 NULL,参见 :h NL-used-for-Nul (这就是为什么你的 substitute(...\%d000...) 在你的字符串中没有 NULL 时工作的原因)。由于 which 命令总是在字符串末尾输出换行符,我建议您通过将 [:-2] 添加到 system 的末尾来稍微修改您的代码() 调用。此构造将仅去除函数输出的最后一个字节:

let path = system('which ' . program)[:-2]

如果您使用替代品,请使用

let path=substitute(path, '\n', '', 'g')

,不要将自己与语义错误的\%d000 混淆。

关于vim - 初学者脚本 : ^@ appearing at the end of text,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5105500/

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