vim - .vimrc 自动命令在打开新文件时添加文本
问题描述
需要在我的 .vimrc 中添加一个自动命令,它会在第一行自动插入文本,这将是我的 shebang。我想在不重定向到骨架文本文件的情况下执行此操作。
我以前见过这个问题,但解决方案似乎总是涉及创建一个框架文本文件并从中提取。考虑到我不是在寻找完整的标题,这似乎过于复杂。
我不知道为什么这不起作用:
autocmd BufNewFile * let line = "#!/usr/bin/env" . (empty(&filetype) ? '' : ' '.&filetype)
也尝试过变体:
autocmd BufNewFile *.* let line = "#!/usr/bin/env" . (empty(&filetype) ? '' : ' '.&filetype)
解决方案
您可以在第一行使用替换:
autocmd BufNewFile * let ftype = &ft | execute 'silent! 1s:.*:#!/usr/bin/env ' . ftype
因为 shebangs 用于解释语言,您可以BufNewFile *
用BufNewFile *.sh,*.perl,*.py
. 这可以防止在 C 等语言中出现 shebangs。
推荐阅读
- vue.js - vue中如何使用children?
- sql - 使用 CCSID 转换值以匹配 db2 中的另一个十六进制
- sql - 将 varchar 值“6276.54”转换为数据类型 int 时转换失败
- azure - Azure 防火墙日志分析。如何使用网络规则查找内部网络流量
- c# - 如何检查来自 URL 的字符串值是否存在于 Enum 中并将其值在结果中分配给变量?
- python - Python Pool.map() 没有终止,但仅在调试模式下
- npm - .npmrc 中是否可以有两个具有不同身份验证数据的私有注册表?
- python-3.x - 如何使用python过滤掉列的第一个值,然后是第二个值,然后是第三个等等,直到第n个
- laravel - DOMPDF 在 Ubuntu 服务器上已弃用?
- sql - 使用 Logstash 和 Kibana 从两个不同的数据库中提取数据