Linux出现“E45: ‘readonly‘ option is set (add ! to override)”的解决方法。

用vi修改文件,保存文件时,提示没有修改该文件的权限“E45: ‘readonly’ option is set (add ! to override)”的解决方法。

E45: ‘readonly’ option is set (add ! to override)

该错误为当前用户没有权限对文件作修改

有三种可能:

1 . 该错误为当前用户没有权限对文件作修改,你有权限修改文件吗?如果是root权限,可以:wq! 强行保存退出;

2 . 该文件没有正确保存退出,正在打开状态,请别人关闭后再保存;

3 . 若该文件所有人都关闭了,提示有的人没有关闭,则删除该文件的临时文件则可以正常打开、修改、保存;

有文件未关闭的显示:

E325: ATTENTION
Found a swap file by the name “.application.properties.swp”
owned by: wasadmin dated: Tue Nov 29 14:31:30 2016
file name: /opt/IBM/WebSphere/AppServer/profiles/AppSrv03/installedApps/B2C-WAP-API-2Node03Cell/airchina_war.ear/airchina.war/WEB-INF/config/application.properties
modified: no
user name: wasadmin host name: B2C-WAP-API-2
process ID: 9278 (still running)
While opening file “application.properties”
dated: Tue Nov 29 12:48:05 2016

(1) Another program may be editing the same file.
If this is the case, be careful not to end up with two
different instances of the same file when making changes.
Quit, or continue with caution.

(2) An edit session for this file crashed.
If this is the case, use “:recover” or “vim -r application.properties”
to recover the changes (see “:help recovery”).
If you did this already, delete the swap file “.application.properties.swp”
to avoid this message.

Swap file “.application.properties.swp” already exists!
[O]pen Read-Only, (E)dit anyway, ®ecover, (Q)uit, (A)bort:

步骤:

1.按Esc键

2.输入 :set noreadonly

3.然后就能正常保存了,你可以输入 :wq 来保存文件了。

借鉴来源:https://blog.youkuaiyun.com/Longerandlonger/article/details/7266055

<think>嗯,用户现在遇到了Vim中的E45错误,提示“readonly option is set”,也就是文件被设置为只读模式,无法保存修改。这个问题我之前可能碰到过,但需要仔细回忆一下解决方法。 首先,用户可能是在使用Vim时尝试修改一个只读文件。这时候,用户可能没有意识到文件本身的权限问题,或者Vim在打开文件时自动设置了只读选项。用户可能已经尝试过直接保存,但遇到了错误提示,所以才会来询问。 接下来,我需要分析这个错误的原因。常见的原因有几个:文件本身的权限是只读的,用户没有写入权限;或者文件被其他程序锁定,比如另一个进程正在使用该文件;另外,Vim可能在打开文件时检测到某些情况,比如文件被其他用户编辑过,从而自动设置为只读模式以防止冲突;还有一种可能是用户自己或配置文件中的设置导致Vim将文件标记为只读。 用户的需求显然是希望修改这个只读选项,保存他们的更改。他们可能对Vim的内部命令不熟悉,需要一步步指导。同时,用户可能希望了解如何避免类似问题再次发生,比如权限管理或者Vim配置调整。 接下来,我需要提供具体的解决方法。首先,强制保存的方法,即使用`:w!`命令,但需要权限允许。如果文件权限不足,可能需要使用sudo。另外,修改Vim的只读选项`:set noreadonly`也是一个关键步骤。如果用户没有文件所在目录的写入权限,可能需要更改文件权限或者换目录保存。此外,检查文件是否被其他进程占用,比如通过lsof命令,或者使用另存为的方式。 还要考虑用户可能没有注意到自己是否以只读模式打开了文件,比如使用了view命令或者vim -R,这时候需要提醒用户正确的打开方式。最后,如果问题依然存在,可能需要检查Vim的配置或者文件系统的问题,比如磁盘空间不足或者文件系统只读挂载。 在回答时,需要结构清晰,分步骤说明,并且给出常见情况的解决方法,同时提醒用户注意权限和系统状态。还要用简单易懂的语言,避免技术术语过多,确保用户能够按照步骤操作。</think>以下是解决 Vim 中 `E45: 'readonly' option is set` 错误的详细方法: --- ### **一、错误原因** 此错误表示当前文件在 Vim 中被标记为**只读模式**,可能由以下原因导致: 1. 文件本身权限为只读(如无写入权限)。 2. Vim 检测到文件被其他进程锁定(如通过 `*.swp` 交换文件)。 3. 用户以只读模式打开文件(如使用 `view` 命令或 `vim -R`)。 4. Vim 配置中设置了 `readonly` 选项。 --- ### **二、解决方法** #### **1. 强制保存(需权限允许)** - **适用场景**:文件本身有写入权限,但 Vim 误判为只读。 - **操作**: 1. 在 Vim 中按 `Esc` 进入命令模式。 2. 输入 `:w!` 强制保存(注意感叹号 `!`)。 ```vim :w! " 强制覆盖保存 ``` - 如果提示权限不足,需使用 `sudo` 保存: ```vim :w !sudo tee % " 使用管理员权限保存(输入用户密码后生效) ``` #### **2. 解除 Vim 的只读标记** - **适用场景**:文件有写入权限,但 Vim 内部标记为只读。 - **操作**: 1. 在命令模式输入: ```vim :set noreadonly " 解除只读标记 ``` 2. 再输入 `:w` 正常保存。 #### **3. 修改文件权限** - **适用场景**:文件系统权限为只读(如 `chmod` 设置错误)。 - **操作**: 1. 退出 Vim(输入 `:q!` 强制退出)。 2. 在终端中修改文件权限: ```bash chmod +w 文件名 # 添加写入权限 ``` 3. 重新用 Vim 编辑文件。 #### **4. 处理文件锁定冲突** - **适用场景**:文件被其他 Vim 进程锁定(存在 `.swp` 交换文件)。 - **操作**: 1. 检查是否存在 `.swp` 文件(如 `.文件名.swp`)。 2. 若确认无其他编辑进程,删除交换文件: ```bash rm .文件名.swp # 删除冲突的交换文件 ``` 3. 重新编辑文件。 --- ### **三、高级排查** #### **1. 检查文件系统状态** - 确认磁盘未满或文件系统未以只读方式挂载: ```bash df -h # 查看磁盘空间 mount | grep " / " # 检查挂载模式是否为 rw(读写) ``` #### **2. 检查 Vim 启动模式** - 避免使用只读模式命令: ```bash vim 文件名 # 正常模式(非只读) # 避免使用: view 文件名 # 只读模式 vim -R 文件名 # 只读模式 ``` --- ### **四、总结步骤** 1. **尝试强制保存** → `:w!` 2. **解除只读标记** → `:set noreadonly` 3. **检查文件权限** → `chmod +w 文件名` 4. **处理交换文件冲突** → 删除 `.swp` 文件 若仍无法解决,请提供完整错误信息和操作环境,可进一步分析!
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值