Могу ли я изменить подсказку в MATLAB?

Я никогда не работаю с графическим интерфейсом и всегда нахожусь в терминале (также в полноэкранном режиме, поэтому без строки заголовка), установленном с параметром -nodesktop -nodisplay. У меня также есть разные серверы, к которым я подключаюсь для запуска Matlab, и каждый из них имеет разные ограничения на использование вычислительных ресурсов. Поскольку трудно вспомнить, на каком сервере я нахожусь, особенно если у меня открыто несколько сеансов, мне было интересно, могу ли я изменить приглашение для отображения имени сервера. Как я ни старался, я не смог найти ресурс, объясняющий, как это сделать (я начинаю думать, что Mathworks его не поддерживает). Я знаю, обходным путем было бы просто написать вызов функции для system('hostname') и поместить функцию в путь, так что это так же просто, как ввести pwd, чтобы найти каталог. Я хотел бы знать, есть ли что-то более элегантное.


person Community    schedule 19.02.2011    source источник
comment
@ user564376: По какой причине вы не используете IDE?   -  person zellus    schedule 19.02.2011
comment
я подключаюсь к серверам по ssh и делаю там свою работу. стримить все графические интерфейсы через ресурсы свиней X11 (не говоря уже о jvm), хотя у меня очень хорошее соединение. Гораздо быстрее работать с терминала и печатать все цифры с «видимым» «выключенным», вставлять обратно в ноутбук и просматривать их локально.   -  person    schedule 20.02.2011


Ответы (1)


На обмен файлами MathWorks есть отправка, которая может сделать это для вас: setPrompt от Яир Альтман. Используя его в R2010b, я заметил, что получаю предупреждающее сообщение:

Warning: Possible deprecated use of set on a Java callback. 
> In setPrompt at 115

Которое мне удалось подавить с помощью функции warning следующим образом:

warning('off','MATLAB:hg:JavaSetHGProperty');

А вот как я изменил приглашение на имя хоста, используя system функция:

>> [~,systemString] = system('hostname');
>> setPrompt([deblank(systemString) '>> ']);
P11-4504>>

Функция deblank используется для удаления пробелов в конце (в данном случае новая строка) из строки.

ПРИМЕЧАНИЕ: Вышеупомянутые изменения (подавленное предупреждение и измененный запрос) не сохраняются после выхода и перезапуска MATLAB, поэтому вы можете поместить приведенный выше код в свой файл startup.m, чтобы автоматически применять их каждый раз, когда вы начинаете новый сеанс.

person gnovice    schedule 19.02.2011
comment
Этот ответ, похоже, не подходит для более новых версий (MATLAB 2018a), код Альтмана теперь выдает предупреждение об отзывчивости. Есть новый способ? - person Alec Jacobson; 14.01.2018
comment
@AlecJacobson: я бы оставил комментарий на странице отправки для setPrompt, указывающий на это. - person gnovice; 06.02.2018
comment
Хотя я полностью понимаю, почему вы изначально отметили этот вопрос как дубликат @gnovice, я думаю, что он может быть достаточно другим, чтобы гарантировать дублирование удаление тега. Я добавил краткое объяснение различий между вопросами, а также связал этот вопрос, чтобы пользователи, которым это нужно, могли быть перенаправлены. У вас явно больше опыта, так что я оставляю это в ваших руках, и я буду уважать ваше решение в любом случае. - person Lucubrator; 09.02.2018
comment
@Lucubrator: Единственное существенное различие между вопросами заключается в том, что на самом деле используется в качестве строкового значения для подсказки (имя хоста по сравнению с отметкой времени), а текст справки для setPrompt Яира уже подробно описывает создание отметок времени. Честно говоря, я не думаю, что это требует совершенно нового вопроса и ответа. - person gnovice; 13.02.2018
comment
@gnovice: Конечно, я действительно согласен с этим - если мы говорим об ответах (тем не менее я думаю, что извлечение этой информации из текста справки имеет смысл). Я все еще думаю, что эти два вопроса разные, но оказалось, что у них одинаковое решение. - person Lucubrator; 14.02.2018
comment
Можно определенно сказать, что вопросы связаны (я бы поддержал тег дублирования с таким комментарием), но, конечно, не точные дубликаты - это может ввести в заблуждение будущих читателей. Отдельные вопросы с одинаковыми ответами не являются идентичными вопросами и, следовательно, не являются (обязательно) дубликатами. (мои скобки). - person Lucubrator; 14.02.2018
comment
В любом случае, что, по вашему мнению, сейчас является лучшим поводом для иска? Просто оставить как есть? т.е. тег нового вопроса в качестве указателя на старый вместе с добавленным блоком кавычек, описывающим различия. Что-нибудь, что я должен изменить? - person Lucubrator; 14.02.2018
comment
@Lucubrator: Я бы пока оставил все как есть, со ссылкой на оригинал. Будь то точные или почти идентичные, дубликаты обычно не удаляются. Предполагается, что они имеют ценность, поскольку они расширяют количество целей поиска с несколько иной перефразировкой основного вопроса. - person gnovice; 14.02.2018