Vim Makefile无法输入tab问题
问题描述
项目开发过程中,每次编译都要输入一些参数,随着参数的增多,每次编译对开发人员可以说是个“噩梦”,
为了防止每次手动输入编译参数,我们将 Makefile
引入项目。这样可以极大提高开发效率。
之前编写 makefile 都再 IDE 下,编辑器都有特殊设定,编写完,直接 make 一般都不会出太大问题
今天遇到个问题,makefile 在 vim 下编辑后,报错
$ make
Makefile:3: *** missing separator. Stop.
问题分析
提示缺少分隔符,代码很简单,所以应该是 makefile 格式问题导致的
.PHONY: all
all:
echo "Hello"
问题原因
通过分析可以得出: 报错由于 tab 被转换成空格导致
默认情况下,vim 不会将 tab 转换为空格,只有在 home 目录设置了
.vimrc
或.virc
才会出现无法输入tab
的情况
先问问chatGPT
看看大佬怎么回答
Q:vim 无法插入tab
A:如果你在 Vim 中无法插入 Tab 字符,可能是因为 Vim 将 Tab 键视为命令键而不是文本键。
为了解决这个问题,可以执行以下步骤:
打开 Vim,并进入插入模式。
输入 :set list 命令,以显示非打印字符。
按下 Tab 键,此时应该会显示一个类似于 ^I 的字符。
输入 :set noexpandtab 命令,以关闭将 Tab 键转换为空格的选项。
按下 Tab 键,此时应该会插入一个 Tab 字符。
输入 :set expandtab 命令,以重新启用将 Tab 键转换为空格的选项。
通过以上操作,可实现在 Vim 中插入 Tab 字符。
解决方案
临时解决方案:
insert模式
下,输入ctrl+v
, 再按 tab 完成一次 tab 输入,后续再输入需重复操作- 一般模式下输入
:set noexpandtab
,再进入insert mode
按 tab 输入即可,编辑完成可通过:set expandtab
恢复 tab 转空格功能
“永久”解决方案
- 编辑 .vimrc 文件,删除
set expandtab
- 编辑 .vimrc 文件,删除
以上是本人踩坑经历,希望能帮助到大家