How to execute file I'm editing in Vi(m)

后端 未结 13 1792
悲哀的现实
悲哀的现实 2020-12-04 05:45

How to execute file that I\'m editing in Vi(m) and get output in split window (like in SciTE)?

Of course I could execute it like that:

:!scriptname
<         


        
相关标签:
13条回答
  • 2020-12-04 05:50

    Just use colon and exclamatory mark as shown below

    :!< script_name>

    0 讨论(0)
  • 2020-12-04 05:51

    There is the make command. It runs the command set in the makeprg option. Use % as a placeholder for the current file name. For example, if you were editing a python script:

    :set makeprg=python\ %
    

    Yes, you need to escape the space. After this you can simply run:

    :make
    

    If you wish, you can set the autowrite option and it will save automatically before running the makeprg:

    :set autowrite
    

    This solves the execute part. Don't know any way of getting that output into a split window that doesn't involve redirection to file.

    0 讨论(0)
  • 2020-12-04 05:51

    I'd recommend the plugin quickrun. It's fast and simple to configure. Here's a little demonstration:

    0 讨论(0)
  • 2020-12-04 05:52

    For Shell script I've used

    :set makeprg=%
    
    :make
    
    0 讨论(0)
  • 2020-12-04 05:53

    You can use vim's plugin bexec. To my knowledge the latest version is 0.5.

    Then:

    $ mkdir -p ~/.vim/plugin
    $ mv bexec-0.5.vba ~/.vim/plugin
    $ vim ~/.vim/plugin/bexec-0.5.vba
    

    Inside vim itself while editing the .vba file do:

    :so %
    

    Some output will show up letting you know that bexec.vim has been written as well as documentation, etc..

    Now, you can test it by opening your (whatever language script that has an #! interpreter working properly) in vim and run

    :Bexec 
    

    Note: I wanted the split to be vertical rather than horizontal, so I did:

    $ grep -i -n split ~/.vim/plugin/bexec.vim | grep -i hor
    102:    let bexec_splitdir = "hor" " hor|ver
    261:        exec {"ver":"vsp", "hor":"sp"}[g:bexec_splitdir]
    

    and changed the value of from "hor" to "ver"..

    I know it's an old question, but I hope this can help someone out there. I have been running in the same issue while taking Coursera's Startup Engineering course where professor Palaji uses Emacs and I don't like Emacs..

    0 讨论(0)
  • 2020-12-04 05:54

    @xorpaul

    I was looking for this script (python/Windows) for quite some time. As there is no "tee" in Windows I changed it to:

    function! Setup_ExecNDisplay()
      execute "w"
      let n=expand('%:t')
      execute "silent ! python % > d:\\temp\\output_".n ." 2>&1"
      execute "vsplit d:\\temp\\output_".n
      execute "redraw!"
      set autoread
    endfunction
    
    function! ExecNDisplay()
      execute "w"
      let n=expand('%:t')
      execute "silent ! python % > d:\\temp\\output_".n . " 2>&1"
    endfunction
    
    :nmap <F9> :call Setup_ExecNDisplay()<CR>
    :nmap <F2> :call ExecNDisplay()<CR>
    
    0 讨论(0)
提交回复
热议问题