[vim ] 如何在執行外部指令時不凍結vim

看板Editor (編輯器(vim/emacs))作者 (奔跑的蝸牛)時間14年前 (2011/01/09 16:35), 編輯推噓3(306)
留言9則, 5人參與, 最新討論串1/1
舉個例子 :!python foo.py 在vim中用上述指令執行foo.py這支程式 foo.py在執行時vim會freeze(游標什麼的都不能動) 要等到foo.py結束才能使用vim 這問題在Windows下可以這樣解: http://vim.wikia.com/wiki/Execute_external_programs_asynchronously_under_Windows (:!start cmd /c python foo.py & pause<CR> ) 但在Linux下這解法似乎沒用 請問有人知道該怎麼辦嗎 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.30.32

01/09 20:02, , 1F
!python foo.py & 這樣?
01/09 20:02, 1F
似乎不行耶...附上程式碼 & 錯誤訊息 // foo.py input = raw_input('input something:') print 'you input:' + input :!python % 沒問題, 但 :!python % &會有錯誤(看不太懂...): // output input something:Traceback (most recent call last): File "foo.py", line 1, in <module> input = raw_input('input something:') EOFError: EOF when reading a line Press ENTER or type command to continue // 截圖 http://www.dumpt.com/img/viewer.php?file=qmtq01aq80gl2w1pfho1.jpg

01/09 21:23, , 2F
你的外部指令正打算從 stdin 讀東西耶..
01/09 21:23, 2F

01/09 21:23, , 3F
你讓他在背景跑 請問你要他讀什麼 @@?
01/09 21:23, 3F

01/09 21:27, , 4F
對吼...我在幹嘛~"~
01/09 21:27, 4F

01/10 10:10, , 5F
改成使用 system 然後 pipe 到 log file
01/10 10:10, 5F

01/10 10:11, , 6F
再用 tail -f logfile 就很好用了。
01/10 10:11, 6F

01/10 10:11, , 7F
寫個 script 包起來,自動餵 stdin
01/10 10:11, 7F
謝謝版主大人~ 我試了一個下午 想到一個不需寫script餵stdin的方法: :!screen bash -c "python \"%\" ; read -p \"press any key to continue...\"" ※ 編輯: Holocaust123 來自: 140.112.30.32 (01/10 18:25)

01/10 19:23, , 8F
也可以預先把要stdin的東西弄成一個檔,然後pipe進去
01/10 19:23, 8F

01/16 17:03, , 9F
弄個 fifo 應該也很方便? mkfifo
01/16 17:03, 9F
文章代碼(AID): #1DANDkhR (Editor)
文章代碼(AID): #1DANDkhR (Editor)