vscode 新建无后缀文件默认为 untitled 标签页,语言模式固定为 plaintext,不依赖内容推断;保存时须手动输入完整文件名,未配置 files.associations 时始终以纯文本处理。

VSCode 新建无后缀文本文件就是新建一个 untitled 标签页,它默认语言模式就是 plaintext,不是 bug,是设计如此——你不需要做任何配置就能得到纯文本环境。
为什么右下角显示 “Plain Text” 就是对的
新建无后缀文件时,VSCode 不会尝试从内容推断语言。哪怕你立刻粘贴一段 console.log("hello") 或 def main():,只要文件还没保存(即仍是 untitled 状态),语言模式就永远卡在 plaintext。这是明确行为,不是检测失败或插件没装好。
- 状态栏显示
Plain Text→ 正常,说明当前是无后缀、未保存的纯文本编辑环境 - 点开右下角手动选
JavaScript或Python→ 可以临时切换,但关掉再重开又回plaintext - 保存时不加后缀(比如只输
notes)→ 文件变成notes(无扩展名),VSCode 仍识别为plaintext,且后续打开都保持该模式
Ctrl+N 新建的就是无后缀文本,但别指望它自动存进项目目录
Ctrl+N(Windows/Linux)或 Cmd+N(macOS)创建的是内存中的 untitled 标签页,不关联任何路径,资源管理器里根本不会出现。它天生就是无后缀、无位置、无语言绑定的纯文本沙盒。
- 适合临时记几行命令、草稿、调试中间值,关掉就丢,不写磁盘
- 按
Ctrl+S保存时,弹出的对话框里**必须手动输入完整文件名**,如readme(无后缀)、config、.env - 如果工作区没打开目录(即没用
Ctrl+K → O打开文件夹),保存时会强制让你选路径,无法“默认存到项目里”
想让无后缀文件有语法支持?靠文件关联,不是靠新建方式
VSCode 对 .env、.gitignore、Makefile 这类无后缀或点开头的文件提供语法高亮,靠的是 files.associations 配置,不是新建逻辑。
- 在
settings.json中加:"files.associations": { "*.env": "shellscript", "Makefile": "makefile", "Dockerfile": "dockerfile" } - 这样即使你新建并保存为
.env(带点),也会被识别为shellscript;但纯env(无点无后缀)仍 fallback 到plaintext -
files.defaultLanguage对无后缀新建无效——它只在“未保存 + 无内容 + 无焦点”的毫秒级窗口起作用,人类操作根本抓不住
真正要长期用无后缀文件,关键不在怎么“新建”,而在保存后是否被正确识别:要么靠扩展名(哪怕带点),要么靠 files.associations 显式绑定,否则它永远只是 plaintext——这不是限制,是 VSCode 故意留出的干净起点。











