每当我编辑具有特定扩展名的文件时,是否可以在编辑,保存和退出文件后立即在shell提示符上自动运行shell命令?
在我的.vimrc中,我有以下内容(感谢有人发布此内容作为对其他人的回答):
let shells = {
\ 'py': "python",
\ }
let extension = expand("%:e")
if has_key(shells,extension)
let fileshell = shells[extension]
let line = "#!" . system("which " . fileshell)
0put = line
if a:permission
:autocmd BufWritePost * :autocmd VimLeave * :!chmod 755 %
endif
endif
endfunction
:autocmd BufNewFile *.* :call Hashbang(1,1)
当我在vi会话中chmod文件时,我想在退出vi会话后立即自动运行.py文件,例如:
# vi test.py
# ./test.py
提前感谢您的建议!
答案 0 :(得分:1)
我不会在Vim中做到这一点,而是通过编写一个简短的shell脚本包装器,例如: vimrun
:
#!/bin/sh
if [ $# -eq 0 ]; then
echo >&2 "ERROR: No file passed!"
exit 1
fi
vim "$1" && \
if [ -x "$1" ]; then
PATH=".:$PATH"
exec "$1"
fi
答案 1 :(得分:1)
默认bash
如果您点击CTRL-x
后跟CTRL-e
,则会针对临时文件打开$EDITOR
。在该文件中键入任何内容并保存然后退出。 Bash将运行您在该文件中输入的所有内容。