linux 退出vi报e37,vim模式下报错E37: No write since last change (add ! to override)

本文介绍了在Linux系统中使用Vim编辑文件时遇到只读权限错误(E37: Nowritesince last change)的常见问题,重点讲解了如何通过:w!命令强制存盘以及在必要时使用sudo提升权限(E212: Can't open file for writing)。此外,还提到了在Windows和Ubuntu环境下遇到类似问题的解决方法。

故障现象:

使用vim修改文件报错,系统提示如下:

E37: No write since last change (add ! to override)

故障原因:

文件为只读文件,无法修改。

解决办法:

使用命令:w!强制存盘即可,在vim模式下,键入以下命令:

:w!

存盘后在使用vim命令检查是否保存,如未保存,编辑后重复以上操作。

或者报出linux中vi保存文件时的“Can't open file for writing”

E212: Can't open file for writing

Press ENTER or type command to continue

出现这个错误的原因可能有两个:一是当前用户的权限不足,二是此文件可能正被其他程序或用户使用。这里的错误原因是前者,解决方案是在使用vi命令打开文件时,前面加上sudo来临时提供管理员权限,即使用命令“sudo vi grub.cfg”打开编辑文件。由此看来,sudo命令是很有用的,当我们执行某种操作系统提示诸如“operation not permitted”等权限不足信息时,我们很多时候都可以在命令前面加上sudo来解决权限不足问题

转:vim模式下报错E37: No write since last change (add ! to override)

故障现象: 使用vim修改文件报错,系统提示如下: E37: No write since last change (add ! to override) 故障原因: 文件为只读文件,无法修改. 解决 ...

服务器 vim模式下报错E37: No write since last change (add ! to override)

故障现象: 使用vim修改文件报错,系统提示如下: E37: No write since last change (add ! to override) 故障原因: 文件为只读文件,无法修改. 解决 ...

ubuntu 修改保存报错E37:No write since last change(add ! to override)的解决方法

报错信息如下: E37: No write since last change (add ! to override) 解决办法是: 在修改完后,将命令 :q 改成 :wq 即可.

linux vi 报错 E37: No write since last change (add ! to override)

用 vi 命令编辑文本文件,没有文件写入权限的时候会报这个错.:q   :wq   怎么都不能退出. 这时只需 ctrl+z 即可,或者在退出命令后加 ! 忽略提示     :q!

Dubbo广播模式下报错:Can't assign requested address解决办法

原因: 尝试使用Dubbo的multicast模式,发现一运行就报Can't assign requested address的错误,造成这种原因的主要是系统中开启了IPV6协议(比如window7) ...

Spring Cloud ZooKeeper集成Feign的坑3,程序Run模式运行没事,Debug模式下报错

请更新Spring Cloud的版本: org.springframework.cloud < ...

jquery&period;validate&period;js在IE8下报错不运行

因为项目要表单验证,所以特意去找了jquery.validate这个应该是jquery官方团队出品的表单验证插件. 实际应用时,却在IE8调试时碰到了问题. 从jquery.validate官网下载了 ...

JavaScript在IE6&comma;IE7下报错&&num;39&semi;expected identifier&comma; string or number&&num;39&semi;

问题: 代码在Forefox和IE8下工作正常,但是在IE6下报错: expected identifier, string or number 假如变量options有多个选项,那么我们可以用逗号分 ...

Linux 下报错:A Java RunTime Environment &lpar;JRE&rpar; or Java Development Kit &lpar;JDK&rpar; must解决方案

一.报错环境:在Linux mint下,前几天还用得很好的的eclipse,今天开机不知为什么这样. Linux 下报错:A Java RunTime Environment (JRE) or Jav ...

随机推荐

iOS判断数组不为空

用([array count]==0 )来判断是否为空,都是坑,如果array为空的话,执行count就会直接报错,程序崩溃退出. 正确判断NSArray是否为空的方法: if(array != ni ...

js中masonry与infinitescroll结合 形成瀑布流

后台:(有点问题 page应该从1开始 而不是从0开始)     public function actionExperts()    {        $top=5;        $page=em ...

WebConfig

花了点时间整理了一下ASP.NET Web.config配置文件的基本使用方法.很适合新手参看,由于Web.config在使用很灵活,可以自定义一些节点.所以这里只介绍一些比较常用的节点. ...

encode&lowbar;utf8 把字符编码成字节 decode&lowbar;utf8解码UTF-8到字符

encode_utf8 $octets = encode_utf8($string); Equivalent to "$octets = encode("utf8", $ ...

selenium元素定位不到之iframe

我们在使用selenium的18中定位方式的时候,有时会遇到定位不上的问题,今天我们就来说说导致定位不上的其中一个原因---iframe 问题描述:通过firebug查询到相应元素的id或name等, ...

nodejs抓取页面内容,并分析有无某些内容的js文件

nodejs获取网页内容绑定data事件,获取到的数据会分几次相应,如果想全局内容匹配,需要等待请求结束,在end结束事件里把累积起来的全局数据进行操作! 举个例子,比如要在页面中找有没有www.ba ...

大话设计模式C&plus;&plus; 备忘录模式

备忘录(Memento):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态.这样以后就可将对象恢复到原先保存的状态. 角色: (1)Originator(发起人):创建盒子, ...

窗体Form的FormStyle属性设置为fsStayOnTop时属性设置不起作用问题探讨。

procedure CreateParams(var Params: TCreateParams); override; procedure MainForm.Createparams(var Par ...

initialProps被React-Navigation的navigation属性覆盖解决方案

怎么开场对我来说一个是个很纠结的问题,Emmm这应该算个好开场. 最近在做一个RN的app端调试工具,在把它嵌入原生app中的时候遇到了一个问题,RN组件里面接受不到原生传过来的initialProp ...

codeforces1A

Theatre Square CodeForces - 1A 一个城市的广场面积有 N×M平方米,过段时间,恰逢这个城市的庆典活动,主办方决定在广场上铺设一种新的地砖,这种地砖每块都是a×a平方米的. ...

<think>好的,用户遇到了Vim的E37错误,提示"No write since last change (add ! to override)"。我需要先理解这个错误的含义和常见原因,然后整理出解决方法。 首先,E37错误通常发生在用户试图退出Vim但未保存修改时。Vim为了防止数据丢失,默认要求用户明确是否保存。如果用户输入:q而没有保存,就会触发这个错误。这时候需要强制退出的话,应该使用:q!。 接下来,用户可能的操作场景是什么?可能是用户修改了文件,但忘记保存,或者不确定是否需要保存。也有可能用户误操作,想要退出而不保存。需要分情况说明解决方法。 然后,我需要确保回答的结构清晰,按照用户之前提供的模板,分错误原因、解决方法、常见问题扩展等部分。同时要遵循系统级指令,使用正确的LaTeX格式,虽然这里可能用不上数学公式,但要注意行内代码用反引号,独立代码块用三个反引号。 需要检查是否有其他相关情况,比如文件只读时如何保存,可能需要使用:w !sudo tee %这样的命令。另外,用户可能想保存修改,这时候应该说明如何用:w保存后再退出。 还要考虑用户可能的疑问,比如为什么会有这个错误,如何避免,或者是否配置Vim自动保存。可能需要提到自动保存插件或者设置选项,比如autowrite。 另外,用户可能分不清:q、:q!:wq的区别,需要做一个对比表格,帮助理解不同命令的用途。 最后,确保语言口语化,避免技术术语过多,但又要准确。比如用“工作区”而不是“buffer”可能会更易懂。还要注意步骤分解,让用户一步步跟着操作。 现在需要组织这些信息,按照之前的模板结构,确保每个部分都涵盖到,并且逻辑清晰。可能需要补充示例代码和命令,以及常见问题,比如文件只读的情况如何处理,或者如何设置Vim自动保存。 还要检查是否有遗漏的情况,比如如果用户强制退出后如何恢复修改,或者是否有其他相关错误,比如E45只读选项。这时候可能需要提到使用sudo或者修改文件权限。 总之,需要全面覆盖E37错误的各种情况和解决方法,同时保持回答简洁明了,结构清晰,符合用户的需求。</think>--- ### 一、错误原因 当你在 Vim 中修改了文件内容,但尝试用 `:q` 退出时,会触发 **E37: No write since last change** 错误。这是因为 Vim 检测到缓冲区(工作区)有未保存的更改,为防止数据丢失,**默认要求用户明确是否保存**。 --- ### 二、解决方法 #### 1. 不保存强制退出(放弃修改) | 步骤 | 命令 | 说明 | |------|------------|-------------------------------| | 1 | 按 `ESC` | 确保处于命令模式 | | 2 | 输入 `:q!` | 强制退出,丢弃所有未保存修改 | | 3 | 按回车 | 执行命令 | #### 2. 保存后退出(保留修改) | 步骤 | 命令 | 说明 | |------|------------|-------------------------------| | 1 | 按 `ESC` | 确保处于命令模式 | | 2 | 输入 `:wq` | 保存文件并退出 | | 3 | 按回车 | 执行命令 | --- ### 三、关键命令对比 | 命令 | 行为 | 适用场景 | |--------|--------------------------------|-----------------------------| | `:q` | 退出(无修改时可用) | 未修改文件且想退出 | | `:q!` | **强制退出不保存** | 放弃所有未保存修改 | | `:wq` | 保存并退出 | 保存修改后退出 | | `:w` | 仅保存不退出 | 临时保存但继续编辑 | | `:x` | 等同于 `:wq` | 快捷保存退出 | --- ### 四、常见问题扩展 #### 1. 为什么会出现 E37 错误? - **直接原因**:文件内容被修改但未保存。 - **深层原因**:用户可能误触键盘导致内容变化(如按 `i` 进入插入模式后意外输入字符),或忘记保存。 #### 2. 文件只读时如何保存? 若文件权限为只读(例如系统配置文件),需用管理员权限保存: ```bash :w !sudo tee % # 输入后会提示输入密码 ``` 保存后继续执行 `:q!` 退出。 #### 3. 如何避免频繁触发 E37? - **配置 Vim 自动保存**: 在 `~/.vimrc` 中添加以下配置,实现失去焦点时自动保存: ```vim autocmd FocusLost * silent! wall " 窗口失去焦点时保存所有文件 ``` - **使用插件**: 安装 [vim-auto-save](https://github.com/907th/vim-auto-save) 插件实现实时保存。 --- ### 五、操作示例 #### 场景:误修改文件后想放弃更改 1. 按 `ESC` 确保处于命令模式。 2. 输入 `:q!` 并按回车。 3. 重新打开文件验证内容是否恢复。 #### 场景:修改后需要保存 1. 按 `ESC` 确保处于命令模式。 2. 输入 `:wq` 并按回车。 3. 终端会返回命令行,文件已保存。 --- ### 六、特殊技巧 #### 1. 分屏编辑时退出所有窗口 若同时编辑多个文件分屏,使用 `:qa!` 放弃所有修改并退出,或 `:wqa` 保存所有修改并退出。 #### 2. 恢复误关闭的文件 Vim 默认会生成交换文件(`.swp`),若意外关闭可通过以下命令恢复: ```bash vim -r filename # 恢复未保存的修改 ``` --- ### 七、总结 E37Vim 的**保护机制**,核心逻辑是: $$ \text{退出行为} = \begin{cases} \text{保存退出} & \text{if 需要保留修改} \\ \text{强制退出} & \text{if 放弃修改} \end{cases} $$ 掌握 `:q!` 和 `:wq` 的用法即可灵活应对。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值