我使用linux和gvim/vim作为matlab的外部编辑器.
使用matlab编辑器,您可以按F5运行文件.我试图用gvim-gtk(官方debian软件包)重现这个.
我知道可以在"bash模式"中将文件名或选择指向matlab,如下所示:
execute '!echo "' ."run(\'".expand("%:p")."\')" . '"| matlab -nojvm'
execute '!matlab -nodisplay < '.expand("%:p")
noremap <C-CR> :?%%?;/%%/w !matlab -nojvm
Run Code Online (Sandbox Code Playgroud)
但我想使用Matlab gui(在我的情况下已经打开了).这是我认为可以为我解决的解决方案:
步骤1a: 以下命令将run('filename')命令放入剪贴板,按下CTRL-V时matlab将粘贴它
let @+="run(\'".expand("%:p")."')"
Run Code Online (Sandbox Code Playgroud)
以下两个将与linux中间按钮粘贴(但这不是我想要的,因为我想在此步骤中避免使用鼠标)
let @*="run(\'".expand("%:p")."')"
execute '!echo "' . "run(\'".expand("%:p")."\')" . '"| xclip'
Run Code Online (Sandbox Code Playgroud)
步骤1b:为了将焦点放在matlab窗口,我使用以下命令:
wmctrl -a MATLAB &
Run Code Online (Sandbox Code Playgroud)
这很好用,但是如果你在标题中有matlab这个词的页面上(例如你正在阅读的那个......),它也会看到你的浏览器.(另请参阅更复杂的解决方案是否有linux命令来确定与给定进程ID关联的窗口ID?)
我的(现在很旧)选项,但CTRL-V不起作用!只有鼠标粘贴会:
function! MatRun()
let @+="run(\'".expand("%:p")."')"
let @*="run(\'".expand("%:p")."\')"
:call system('xclip', @+)
!wmctrl -a MAT
endfunction
map <F5> :call MatRun() <cr><cr>
Run Code Online (Sandbox Code Playgroud)
不知何故,当与wmctrl结合使用时,CTRL-V在这种情况下不起作用(参见下面的编辑).对我来说,重点是避免使用鼠标进行此操作.
谢谢您的帮助.
编辑和工作选项 我的坏,我使用xclip我应该使用xclip -selection c.请参阅下面的回复..
如果有人找到更好的解决方案,我会很高兴,例如:直接在matlab命令窗口粘贴,确保你在命令窗口(Ctrl-0),或避免使用wmctrl捕获浏览器.