我試圖獲取使用Return
發送文本的插入換行符的典型IM客戶端的行爲。有沒有一種方法可以在Python中以最小的努力實現這一點,例如使用readline和raw_input
?Shift + Return在python中插入換行符
8
A
回答
2
好的,我聽說它也可以用readline
來完成。
你可以import readline
並在配置你想要的鍵(Shift + Enter)中設置一個宏,該宏在行和換行符的末尾放置一些特殊字符。然後你可以在循環中調用raw_input
。
像這樣:
import readline
# I am using Ctrl+K to insert line break
# (dont know what symbol is for shift+enter)
readline.parse_and_bind('C-k: "#\n"')
text = []
line = "#"
while line and line[-1]=='#':
line = raw_input("> ")
if line.endswith("#"):
text.append(line[:-1])
else:
text.append(line)
# all lines are in "text" list variable
print "\n".join(text)
1
我懷疑你只需要使用readline
模塊就可以做到這一點,因爲它不會捕獲按下的各個按鍵,而只是處理來自輸入驅動程序的字符響應。
您可以用PyHook做到這一點,雖然,如果Shift
密鑰與Enter
鍵一起按下注入了新的行到您的readline
流。
+0
謝謝,但我想保持平臺與* nix的兼容性! – 2012-07-05 11:32:42
1
我認爲用最少的努力你可以使用urwid庫的Python。不幸的是,這不符合您使用readline/raw_input的要求。
更新:另請參閱this answer其他解決方案。
0
import readline
# I am using Ctrl+x to insert line break
# (dont know the symbols and bindings for meta-key or shift-key,
# let alone 4 shift+enter)
def startup_hook():
readline.insert_text('» ') # \033[32m»\033[0m
def prmpt():
try:
readline.parse_and_bind('tab: complete')
readline.parse_and_bind('set editing-mode vi')
readline.parse_and_bind('C-x: "\x16\n"') # \x16 is C-v which writes
readline.set_startup_hook(startup_hook) # the \n without returning
except Exception as e: # thus no need 4 appending
print (e) # '#' 2 write multilines
return # simply use ctrl-x or other some other bind
while True: # instead of shift + enter
try:
line = raw_input()
print '%s' % line
except EOFError:
print 'EOF signaled, exiting...'
break
# It can probably be improved more to use meta+key or maybe even shift enter
# Anyways sry 4 any errors I probably may have made.. first time answering
相關問題
- 1. 如何在Aquamacs中輸入M-shift-return
- 2. 如何在Word文檔中用'Return'替換'Shift + Return'
- 3. Python:如何在__name__ == main中插入return?
- 4. python列表插入換行符
- 5. Python docx add_paragraph()插入前導換行符
- 6. 如何在Python中的文件中間插入換行符
- 7. 在文本換行的字符串中插入換行符?
- 8. 在.NET標籤中插入換行符
- 9. 在mailto正文中插入換行符
- 10. 在編輯器中插入換行符
- 11. Python argparse:如何在subparser中插入換行符幫助文本?
- 12. Python argparse:如何在幫助文本中插入換行符?
- 13. DOCX4J插入換行符
- 14. 自動插入換行符?
- 15. NSTextView插入換行符
- 16. SQL插入換行符
- 17. 從換行符插入
- 18. screen + vim導致shift-enter插入'M'和一個換行
- 19. Python的smtplib sendmail正在插入換行
- 20. 轉換柱物體插入在python
- 21. 在vim中自動換行不插入換行符
- 22. Python - 插入每行x個元素的換行符
- 23. 每個「!」後插入換行符字符
- 24. 寫入文件時插入換行符?
- 25. 我們如何使用Shift + Enter在NSTextField中輸入換行符 - 可可
- 26. 在Windows命令行中顯示python return
- 27. 換行符在Python
- 28. 在python中通過xml.etree.ElementTree生成的xml文件中插入換行符
- 29. 在Spacemacs中,如何插入換行符,而無需進入插入模式?
- 30. 在字符串中插入換行符時遇到麻煩^
您是否在尋找平臺相關或無關的答案? – Jiri 2012-07-05 11:33:39
如果可能,獨立於平臺,但* nix兼容應該作爲應用程序的目標命令行用戶。 – 2012-07-05 11:38:23