Vim:在分屏中执行我正在处理的脚本

Ada*_*tan 16 keyboard-shortcuts vim python

我正在编写一个小的 python 脚本,它需要频繁执行才能调试和进一步开发。

我可以拆分 vim 屏幕并通过击键在一个部分执行我的脚本吗?

0x8*_*x89 10

Vim 不支持,也永远不会支持像 emacs 或 kate 这样的嵌入式 shell(如果你是这个意思),请参阅这个 stackoverflow 问题

David Spillet 是对的,你可以在 gnu 屏幕中运行你的 vim:

$ screen vim foo.txt
Run Code Online (Sandbox Code Playgroud)

但这只会给你一些类似于终端中的窗口管理器的东西——当通过 ssh 或在没有 X 的盒子上使用时非常有用,但在本地你也可以打开另一个 xterm 并在它们之间切换。*

无论如何,如果您可以接受这样一个事实,即在查看文件生成的输出时看不到正在编辑的文件,Jack M 的提示很好,但可能更短:

:map ;e :w<cr>:!python %<cr>
Run Code Online (Sandbox Code Playgroud)

出于同样的目的,我在我的~/.vimrc

au BufEnter *
\if match( getline(1) , '^\#!') == 0 |
\ execute("let b:interpreter = getline(1)[2:]") |
\endif

fun! CallInterpreter()
    if exists("b:interpreter")
         exec ("!".b:interpreter." %")
    endif
endfun

map <F5> :call CallInterpreter()<CR>
Run Code Online (Sandbox Code Playgroud)

这将运行任何#!在第一行具有 shebang ( ) 的文件。它使用解释器来运行文件,因此它不需要具有执行权限。

*(屏幕还有一些其他非常简洁的功能,例如从输出中复制和粘贴,监视活动/无活动的隐藏窗口,能够同时使用来自不同终端的会话,能够退出所有程序运行 - 它是一个强大的工具)。


小智 9

将此行添加到您的 .vimrc:

command R !./%
Run Code Online (Sandbox Code Playgroud)

然后你可以在 Vim 中输入 ":R" 来运行脚本 ( vim-run-current-file )


小智 5

最不冗长的方式(要求您的脚本可执行)可能是:

 :!%
Run Code Online (Sandbox Code Playgroud)