Vim:运行 来自_not_根文件的项目?
Vim: Running project from _not_ root file?
如果我在项目的根文件main.py
中,我可以按F9执行它,因为有一行大致像
map <buffer> <F9> :w<CR>:exec "!python3 " . %<CR>
在我的.vimrc.
但是,该项目被分割成多个文件,我不想每次都:b1
只是为了运行它。
我尝试了以下方法。
来自不同的文件
let b:pyProjectRoot=main.py
然后将我的 .vimrc 中的行更改为
map <buffer> <F9> :w<CR>:exec "!python3 " . b:pyProjectRoot<CR>
但是由于某些原因,vim 无法识别局部缓冲区变量 b:pyProjectRoot
。
为什么会这样?我该如何解决?
let b:pyProjectRoot=main.py
表示“将字典main
的成员py
的值赋给缓冲区变量pyProjectRoot
”。
正确的形式是:
let b:pyProjectRoot = "main.py"
意思是“将字符串main.py
分配给缓冲区变量pyProjectRoot
”。
或者,您可以定义一个环境变量:
let $PY_PROJECT_ROOT
并在不连接的情况下使用它:
nnoremap <buffer> <F9> :w\|!python3 $PY_PROJECT_ROOT<CR>
但您应该考虑使用 make
(和 :help :make
)或类似的东西。
如果我在项目的根文件main.py
中,我可以按F9执行它,因为有一行大致像
map <buffer> <F9> :w<CR>:exec "!python3 " . %<CR>
在我的.vimrc.
但是,该项目被分割成多个文件,我不想每次都:b1
只是为了运行它。
我尝试了以下方法。 来自不同的文件
let b:pyProjectRoot=main.py
然后将我的 .vimrc 中的行更改为
map <buffer> <F9> :w<CR>:exec "!python3 " . b:pyProjectRoot<CR>
但是由于某些原因,vim 无法识别局部缓冲区变量 b:pyProjectRoot
。
为什么会这样?我该如何解决?
let b:pyProjectRoot=main.py
表示“将字典main
的成员py
的值赋给缓冲区变量pyProjectRoot
”。
正确的形式是:
let b:pyProjectRoot = "main.py"
意思是“将字符串main.py
分配给缓冲区变量pyProjectRoot
”。
或者,您可以定义一个环境变量:
let $PY_PROJECT_ROOT
并在不连接的情况下使用它:
nnoremap <buffer> <F9> :w\|!python3 $PY_PROJECT_ROOT<CR>
但您应该考虑使用 make
(和 :help :make
)或类似的东西。