Return
を使用してテキストを送信し、Shift + Return
を使用して改行を挿入する一般的なIMクライアントの動作を取得しようとしています。 Pythonで最小限の労力でこれを達成する方法がありますか? readlineおよびraw_input
?Shift + Return to 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とのプラットフォームの互換性を維持したいと思います! –
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. Screen + vimによってshift-enterに 'M'と改行が挿入されます
- 2. CakePHP - Htmlヘルパーハイパーリンクに改行/改行を挿入する方法
- 3. XtraGridセルに改行を挿入する
- 4. テキスト内に改行を挿入する
- 5. .NETラベルに改行を挿入する
- 6. DOCX4J改行を挿入する
- 7. Python Tkinter GUIバインド 'Return' to function
- 8. Return to print return
- 9. Pythonのsmtplib sendmailが改行を挿入しています
- 10. IMPORTHTMLは改行を挿入します
- 11. 改行文字がPythonスクリプトに挿入されています
- 12. Javaでの改行文字の挿入
- 13. D3フォースレイアウトのノードラベルに改行を挿入する
- 14. ユーザー入力時に改行を挿入する
- 15. 特定の列のExcel行に改行を挿入するマクロ
- 16. Csv to Mysql最後の行に挿入
- 17. iPhone UITextField:リターンキーで改行を挿入する方法は?
- 18. (エディタ)編で行の途中で改行を挿入
- 19. phpメール機能のメッセージに改行を挿入する(userdetails)
- 20. eclipse jspフォーマッタ - 改行を挿入<script>
- 21. createTextNodeに改行を挿入する方法
- 22. Pythonは文字 "X"の後に文字列に改行を挿入します
- 23. Python - 要素のx個数ごとに改行を挿入します。
- 24. SQLiteとPythonがデータベースに不要な改行を挿入しています
- 25. スニペットでVS2015に余分な改行が挿入される
- 26. データベースの2行ごとに改行を挿入します。
- 27. ビッグクエリーストリーミングバッファにヌル行を挿入するpython
- 28. SQL * Plusでセミコロンの後に改行を挿入します。
- 29. jqueryを使用して改行を挿入する方法
- 30. SEDを使用して改行をファイルに挿入する
あなたは、プラットフォームに依存または独立した答えをお探しですか? – Jiri
可能であれば、プラットフォームに依存しませんが、* nixとの互換性は、アプリケーションがコマンドラインユーザーをターゲットにしているために必要です。 –