我有时在vi中打开一个只读文件,chmod +w在打开它之前忘了做.有没有办法从vi中更改文件?
有点像!r chmod +w [filename]?
是否有一个快捷方式来引用当前打开的文件而不拼写它的长名称?
Dav*_*tte 54
只是用
:!chmod +w %
Run Code Online (Sandbox Code Playgroud)
在命令模式下.%将被当前文件名替换.
Mic*_*ker 35
如果您有权写入该文件,那么您可以使用感叹号强制它:
:w!
Run Code Online (Sandbox Code Playgroud)
如果您没有权限并且需要更改用户,但仍希望写入文件,有时您可能会选择类似的内容
:w !sudo tee %
Run Code Online (Sandbox Code Playgroud)
小智 10
我知道这是一个旧帖子,但是使用Vim Version8,你可以使用一个函数来更改文件权限.
根据version8.txt文件:
setfperm()设置文件的权限
然后可以通过Vim中的"call"命令调用此函数.
这样做如下:
:call setfperm("file name","permissions")
Run Code Online (Sandbox Code Playgroud)
"permissions"字符串的结构采用与Vim文档中描述的相同的形式:
getfperm({fname}) getfperm() 结果是一个String,它是给定文件{fname}的读,写和执行权限.如果{fname}不存在或无法读取其目录,则返回空字符串.结果是"rwxrwxrwx"形式,其中每组"rwx"标志依次表示文件所有者,文件所属组以及其他用户的权限.如果用户没有给定的权限,则将该标志替换为字符串" - ".示例:: echo getfperm("/ etc/passwd")希望(从安全的角度来看)显示字符串"rw-r - r--"或甚至"rw -------".
一个最小的例子:
:call setfperm("foo.txt","rwxrwxrwx")
Run Code Online (Sandbox Code Playgroud)
这会为当前目录中的"foo.txt"文件添加读取,写入和执行权限.
你有没有尝试过
!chmod +w %
Run Code Online (Sandbox Code Playgroud)
%表示当前文件名.
您也可以像Ctrl-W一样将键映射到此.
:map <C-w> :!chmod +w %<CR>
Run Code Online (Sandbox Code Playgroud)
请注意,您键入Ctrl-V Ctrl-M以获取 <CR>
小智 5
使用 vim 编辑文件后,按“esc”,然后按“:”。然后键入以下命令:
w !sudo tee %
Run Code Online (Sandbox Code Playgroud)
然后按“输入”。然后输入
:q!
Run Code Online (Sandbox Code Playgroud)
成功退出编辑器。