您好我在stackoverflow上看过这个question,但我的问题略有不同。
当我使用下面的地图时,我定义了一个方便的地图:
map <Leader>r :!screen -p run_and_test -X stuff '(cd /really/long/folder/data/gen_prob; epy gen_data.py)^V^V^M'<CR><CR>
这在一个非常长的路线上,我宁愿用线分开。 我尝试过:
let folder = '/really/long/folder/gen_prob'
let cmd = "'(cd " . folder . "; python gen_data.py)^V^V^M'"
map <Leader>r :execute "!screen -p run_and_test -X stuff" . cmd <cr><cr>
但它不起作用。
关于如何将这个初始映射分成几行的任何想法?
编辑:我实施的最终解决方案:
function! Execute_screen()
let folder = '/really/long/folder/gen_prob'
let cmd = "'(cd " . folder . "; python gen_data.py)\r'"
execute "!screen -p run_and_test -X stuff " . cmd
endfunction
noremap <Leader>r :call Execute_screen()<cr><cr>
答案 0 :(得分:2)
除了
,我在这里看不到太多问题<C-v>
:AFAIK这些是:map
的字符,不适用于屏幕内的程序,因此您可以删除两个^V
。stuff
之后忘记了空格。但是有一些小问题:
:map
的原因,请不要使用nore
。在这种情况下,您需要:nnoremap
,但nore
:map
版:noremap
为nore
。非nore
命令很糟糕,因为随着映射数量的增加,新映射会使旧映射变得越来越大,而cat
命令无法实现这一点。\r
无法正常查看它们,并且可以被各种实用程序视为二进制文件),因此请使用\<C-m>
或{{ 1}}你有^M
的地方(为此你也可以使用\n
)。