在.vimrc中,如何编辑,保存和退出文件,然后运行shell命令?

时间:2017-07-10 15:55:21

标签: vim vi

每当我编辑具有特定扩展名的文件时,是否可以在编辑,保存和退出文件后立即在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

提前感谢您的建议!

  • 终身学习者

2 个答案:

答案 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将运行您在该文件中输入的所有内容。