如何从 vim 内部向脚本添加执行位并退出?

如何从 vim 内部向脚本添加执行位并退出?

是否有一个一次性命令可以将执行位添加到您正在编辑的 shell 脚本中并保存并退出?

答案1

据我所知,没有内置执行所有这一切的命令,但它可以做类似的事情~/.vimrc并预先做一些工作。

为了解决这个问题,需要将一些事情结合在一起:

  • 在 vim 中同时运行多个命令
  • 通过vim执行外部命令
  • 如果您在当前文件仍处于打开状态时修改该文件(包括权限),则防止 vim 向您提供有关缓冲区的消息
  • 定义方便的键绑定
  • 使用 vim 函数

在这里,我使用的是 vim 函数这里当当前文件在 vim 关闭文件之前修改其权限时,它会处理运行外部命令并阻止缓冲区消息。它还将命令定义为:Xbit.

function! SetExecutableBit()
  let fname = expand("%:p")
  checktime
  execute "au FileChangedShell " . fname . " :echo"
  silent !chmod a+x %
  checktime
  execute "au! FileChangedShell " . fname
endfunction
command! Xbit call SetExecutableBit()
  
:nnoremap <c-x> :w<CR>:Xbit<CR>:q<CR>
:inoremap <c-x> <Esc>:w<CR>:Xbit<CR>:q<CR>

此外,我在函数之后定义了假设映射,以使 vimCtrl+x在正常模式和插入模式下定义为组合键,该组合将写入文件内容 ( :w),运行函数以设置执行标志 ( :Xbit),然后退出文件 ( :q) 。

~/.vimrc所有这些都需要在打开要使用的文件之前进入您的文件。但是,只需按Ctrl+x(或您可能喜欢将键绑定更改为的任何其他内容)即可调用它。

来源:

相关内容