とりあえず日記

VIM→秀丸エディタ→VIM→秀丸エディタ→VIM→秀丸エディタ→VIM→秀丸エディタ→VIM→秀丸エディタ→VIM→秀丸エディタ(いまここ🍄)

PyConsoleでcmd.exeの代わりにCygwinをつかってみた

前回の日記はこちら(id:hatenadiary:20110409:1302340942)


PyConsoleでCygwinがとりあえず動きました、正常動作しているかどうかは分かりません、動いただけです。

pyconsole_wx.py を以下のように書き換えます。

改変前(pyconsole_wx.py)

class ConsoleProcessWindow (wx.stc.StyledTextCtrl):
    def __init__ (self, *args, **kwargs):
        wx.stc.StyledTextCtrl.__init__ (self, *args, **kwargs)
        
        <<snip>>
        
        self.console_process = pyconsole.ConsoleProcess ('cmd.exe',
                console_update=self.console_update)

改変後(pyconsole_wx.py)

class ConsoleProcessWindow (wx.stc.StyledTextCtrl):
    def __init__ (self, *args, **kwargs):
        wx.stc.StyledTextCtrl.__init__ (self, *args, **kwargs)        

        <<snip>>        

        #
        #C:\cygwin\Cygwin.bat の内容をコピー。
        #
        self.console_process = pyconsole.ConsoleProcess ('C:\\cygwin\\bin\\bash.exe --login -i',
                console_update=self.console_update)

スクリーンキャプチャ

bash のバージョンを表示

ファイルとフォルダ一覧


UTF8.txtを表示

CP932.txtを表示(この後、wxPythonがフリーズしました)


(フリーズの原因は特定していません。)

  • UTF8.txt の内容
日本語(UTF8)のテキストです。
2行目。
3行目です。
ダメ文字、表円竹曾察UTF8なので関係ないとは思いますが・・・
  • CP932.txt の内容
日本語(CP932)のテキストです。
2行目。
3行目です。
ダメ文字、表円竹曾察

ショートカットキー

画面をクリアするCygwinのショートカットキー(Ctrl-L)は使えず。
wxPython側はTextCtrlの内容しか見ていないのが原因だと思います。なのでキー入力を捕まえてPyConsoleへ送れば画面クリアされる??
妄想だけで未確認です。

VIM

pyconsole_vim.vim を改造すればVIMの中でCygwinが使えるんじゃないかと・・・
自分、vimerじゃないんでよく分かりませんが・・・
すいません。

<<snip>>
au CursorHold <buffer> call CheckUpdated()
function CheckUpdated()
    if g:console_process_row > g:console_process_row_last
        let g:console_process_row_last = g:console_process_row
        " since this a timer based command the :startinsert
        " does not work.  So send in the line append command
        call remote_send (v:servername, 'A')
    endif
endfunction

python import pyconsole_vim
python vc = pyconsole_vim.VimConsole('cmd.exe')

imap <buffer> <cr> <esc>:python vc.exec_line()<cr>
imap <buffer> <tab> <esc>:python vc.exec_part()<cr>
|<<