如何修复已取消的编辑,在shell中未进行任何更改

如何修复已取消的编辑,在shell中未进行任何更改,shell,kubernetes,sh,fish,Shell,Kubernetes,Sh,Fish,我跑 要更改我的一个播客的版本(此命令在我的文本编辑器中打开一个临时文件,然后我通常编辑并关闭此临时文件),甚至在我在文本编辑器中关闭此临时文件之前,我可以在bash中看到以下注释 kubectl edit deployment 在我安装fish之前,它还可以,我尝试切换到bash,但也没有帮助 如何修复它?这类事情很可能是由于它打开了一个分叉而不是停留的编辑器 这意味着您需要将$EDITOR设置为等待的编辑器。例如,nano,vim或emacs应该可以工作,例如,如果您使用升华文本,您必须使

我跑

要更改我的一个播客的版本(此命令在我的文本编辑器中打开一个临时文件,然后我通常编辑并关闭此临时文件),甚至在我在文本编辑器中关闭此临时文件之前,我可以在bash中看到以下注释

kubectl edit deployment
在我安装fish之前,它还可以,我尝试切换到bash,但也没有帮助


如何修复它?

这类事情很可能是由于它打开了一个分叉而不是停留的编辑器

这意味着您需要将$EDITOR设置为等待的编辑器。例如,
nano
vim
emacs
应该可以工作,例如,如果您使用升华文本,您必须使用
subl-w
明确告诉它等待


现在还不太清楚你正在运行哪个shell。如果是bash,在fish run
set-gx EDITOR subl-w
中运行
export EDITOR=“subl-w”
(如果使用fish<3.0,则运行
“subl-w”

使用$EDITOR变量的方法可以实现目标,但会更改默认的命令行编辑器。这可能会影响依赖于此设置的其他程序(例如crontab、edquota)

最好依赖$KUBE_编辑器变量。例如,对于一次性使用,您可以尝试:

Edit cancelled, no changes made.

(请参阅)

使用vim,当您尝试保存它时,会在退出编辑器时,保存在
/tmp/
路径中指定的编辑副本以及错误消息

这相当于使用
获取资源,在文本编辑器中编辑它,然后使用更新版本应用资源:

KUBE_EDITOR="nano" kubectl edit deploy/hello-world
然后删除该文件

kubectl get deployment my-nginx -o yaml > /tmp/nginx.yaml
vim /tmp/nginx.yaml


kubectl apply -f /tmp/nginx.yaml
deployment.apps/my-nginx configured

因此,基本上对保存在
/tmp/

中的文件使用
apply
。当kubectl没有选择您所做的更改时,例如由于YAML不正确,也可能发生此问题

  • 请做你确定的其他更改
  • 保存后,检查是否仍遇到相同的问题
问题复制示例:

  • spec.selector.app:xxx“重复,无效
  • 最后一个将保留;第一个将被忽略
  • 因此,如果您只添加了第一个,则不会进行任何更改

什么编辑器应该启动?我使用sublime,它确实启动了。但当它启动时,我已经看到
编辑被取消,没有做任何更改。
在这种情况下,$editor在大多数情况下都是错误的。一个不停止的$editor也会混淆git,所以你不应该使用它。如果你真的不能使用editor,你也可以尝试patc正在部署。请参阅此操作适用于VSCode-
KUBE\u EDITOR=“code-w”kubectl edit…
@billett即使在win上重新启动powershell后,我仍然会收到相同的错误。您知道可能出了什么问题吗?
rm /tmp/nginx.yaml
spec:
  clusterIP: 10.152.183.151
  clusterIPs:
  - 10.152.183.151
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: xxx
    app: rng