У меня эти строки в моем ~/.inputrc
:
set editing-mode vi
set keymap vi
Это позволяет мне использовать привязки vi
в каждой программе, использующей строки чтения GNU для ввода текста. Примеры: python
, irb
, sftp
, bash
, sqlite3
и т.д. Это делает работу с командной строкой легкой. Matlab не использует для чтения, но vi
keybindings было бы удивительно иметь при отладке или работе в интерактивном режиме. Существует ли существующее решение?
Я стараюсь использовать matlab -nosplash -nodesktop
из командной строки, и это заставило меня подумать: можно ли написать оболочку, которая использует строки чтения и передать вход в matlab
? (Если мне нужно это реализовать, я бы предпочел сделать это в Ruby.)
Update:
Спасибо за помощь. Это почти работает:
# See also: http://bogojoker.com/readline/
require 'readline'
puts 'Starting Matlab...'
io = IO.popen('matlab -nosplash -nodesktop 2>&1', 'w+')
while input_line = Readline.readline('>> ', true)
io.puts input_line
puts io.gets
end
Но он читает только одну строку из Matlab за раз (потому что я использую gets
). Любые идеи о том, как получить все до следующего раза, когда он ждет ввода? Вот что происходит (я ввожу материал в приглашение >>
):
Starting Matlab...
>> 1
>> 2
< M A T L A B (R) >
>> 3
Copyright 1984-2009 The MathWorks, Inc.
>> 4
Version 7.8.0.347 (R2009a) 32-bit (glnx86)
>> 5
February 12, 2009
>> 6
>> 7
>> 8
To get started, type one of these: helpwin, helpdesk, or demo.
>> 9
For product information, visit www.mathworks.com.
>> 0
>> 1
>>
>> 2
ans =
>> 3
>> 4
1
>> 5
>> 6
>>
>> 7
ans =
>> 8
>> 9
2
>> 0
>> 1
>>
>> 2
ans =
>> 3
>> 4
3