Я использую linux и gvim/vim в качестве внешнего редактора для matlab.
Используя редактор Matlab, вы можете запустить файл, нажав F5. Я пытаюсь воспроизвести это с помощью gvim-gtk (официальных пакетов debian).
Я знаю, что можно направить имя файла или выбор в matlab в "bash mode", как показано ниже:
execute '!echo "' ."run(\'".expand("%:p")."\')" . '"| matlab -nojvm'
execute '!matlab -nodisplay < '.expand("%:p")
noremap <C-CR> :?%%?;/%%/w !matlab -nojvm
Но я хочу использовать Matlab gui (который в моем случае уже открыт). Здесь решение, которое я подумал, может решить для меня:
- Используйте сопоставление ключей в vim, которое:
- (a) добавьте в буфер обмена что-то вроде: run ('путь к файлу') или cd ('folder'); run ('filename')
- (b) вызовите команду оболочки, которая дает фокус графическому интерфейсу matlab
- В этот момент я должен быть в командном окне Matlab, поэтому я просто нажимаю Ctrl-V, и содержимое буфера обмена должно быть вставлено. (Я использую linux, но matlab с ключевыми словами Windows)
Шаг 1a: Следующее поместит команду run ('filename') в буфер обмена, и Matlab вставляет ее при нажатии CTRL-V
let @+="run(\'".expand("%:p")."')"
Следующие два будут работать с вставкой средней кнопки linux (но это не то, что я хочу, так как я хочу избежать мыши на этом шаге)
let @*="run(\'".expand("%:p")."')"
execute '!echo "' . "run(\'".expand("%:p")."\')" . '"| xclip'
Шаг 1b: Чтобы выделить фокус в окне Matlab, я использую следующую команду:
wmctrl -a MATLAB &
Это хорошо работает, но он также увидит ваш браузер, если вы находитесь на странице со словом matlab внутри заголовка (например, тот, который вы читаете...). (см. также более сложное решение Есть ли команда linux для определения идентификаторов окон, связанных с данным идентификатором процесса?)
Мой (теперь старый) вариант, но 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>
Как бы то ни было, CTRL-V в этом случае не работает в сочетании с wmctrl (см. ниже). Весь смысл для меня заключается в том, чтобы избежать использования мыши для этой операции.
Благодарим вас за помощь.
Редактировать и работать Мой плохой, я использовал xclip, где я должен был использовать xclip -selection c. См. Мой ответ ниже.
Я был бы рад, если бы кто-нибудь нашел лучшее решение, например: вставка непосредственно в командные окна Matlab, убедившись, что вы находитесь в командных окнах (Ctrl-0) или избегаете ловить браузер с помощью wmctrl.