" autoreload file
set autoread
" chmod +x current file
"
" not using setfperm() here to have the behavior of chmod(1), e.g. adding and
" using the umask.
function! ChmodThis(perm)
if getbufinfo('%')[0].changed
echo "Modified, save first!"
else
call system('chmod ' .. a:perm .. ' -- ' .. expand('%:S'))
echo "chmod done."
endif
endfunction
noremap <silent> <Leader>X :call ChmodThis('+x')<CR>
9条答案
按热度按时间gorkyyrv1#
只是用
字符串
在命令模式下,%将被当前文件名替换。
2lpgd9682#
如果你有写文件的权限,那么你可以使用感叹号来强制它:
字符串
如果您没有权限,需要更改用户,但仍想写入文件,有时您可能会使用以下方法
型
ebdffaop3#
我知道这是一个老帖子,但Vim版本8包含了一个功能,可以更改文件权限。
根据version8.txt文件:
setfperm()设置文件的权限
然后可以通过Vim中的“call”命令调用此函数。
这是按照以下方式完成的:
字符串
“permissions”字符串的结构与Vim文档中描述的形式相同:
getfperm({fname})getfperm() 结果是一个String,它是给定文件{fname}的读、写和执行权限。如果{fname}不存在或其目录无法读取,则返回空字符串。结果的格式为“rwxrwxrwx”,其中每组“rwx”标志依次表示文件所有者的权限,文件所属的组,例如::echo getfperm(“/etc/passwd”)从安全的Angular 来看,这可能会显示字符串“rw-r--r--”甚至“rw-"。
举个简单的例子:
型
这将为当前目录中的“foo.txt”文件添加读、写和执行权限。
guicsvcw4#
你有没有试
字符串
%表示当前文件名。
您也可以将一个键Map到它,如Ctrl-W。
型
请注意,键入Ctrl-V Ctrl-M可获得
<CR>
ee7vknir5#
使用Vim编辑文件后,按“esc”,然后按“:“。然后输入以下命令:
字符串
然后按“回车”键。
型
成功退出编辑器。
ryoqjall6#
字符串
如果vi还是不想写
型
4sup72z87#
正如大卫指出的,setfperm()是在Vim中实现这一点的方法。
下面是我用来向当前文件添加写或执行权限的Map:
字符串
woobm2wo8#
你也可以用Vim自带的netrw模块来做这个,如果你懒惰的话,比如
:Texplore
,然后在正常模式下滚动到文件并输入gp
。这是一个多个文件更直观一点,但每个缓冲区窗口没有,使用您的冒号命令历史记录重复命令。
pod7payv9#
基于这里的几个答案的想法,我现在使用这个:
字符串