質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
標準入力

標準入力(stdin)は、プログラムが標準的に用いるデータ入力元。リダイレクトしない限り、プログラムを起動した端末のキーボードが標準入力になります。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

Vim

VimとはUnix / Linux 系のOSに標準搭載されているターミナル上で動くテキストエディタです。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

2446閲覧

neovimで競プロをするために標準入力したい

shinouta

総合スコア6

標準入力

標準入力(stdin)は、プログラムが標準的に用いるデータ入力元。リダイレクトしない限り、プログラムを起動した端末のキーボードが標準入力になります。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

Vim

VimとはUnix / Linux 系のOSに標準搭載されているターミナル上で動くテキストエディタです。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/09/03 10:16

前提・実現したいこと

以前はjupyter notebookでしたが最近neovimに移行してPythonで競技プログラミングをしているのですが, input()を使うと下記のようなエラーが起きます. 自分で調べてみると, 「vimはテキストエディタであってインタープリタではない」「vim-quickrunとvimproc.vimを用いるとできるかもしれない」ということはわかりました. ソースコードは標準入力するためだけのものです.

発生している問題・エラーメッセージ

function provider#python#Call の処理中にエラーが検出されました: 行 18: Error invoking 'python_execute_file' on channel 4 (python2-script-host): Traceback (most recent call last): File "/Users/shinouta/.config/nvim/test.py", line 1, in <module> a = input() IOError: [Errno 35] Resource temporarily unavailable 続けるにはENTERを押すかコマンドを入力してください

該当のソースコード

Python

1a = input() 2print(a)

試したこと

quickrunとvimprocを導入してみましたが, 正規表現置換がまだできていないというエラーがさらに出て状況が悪化したので導入する前に戻しました.

補足情報(FW/ツールのバージョンなど)

macOS Catalina 10.15.6
neovimの設定

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

目的および実行した手順について、もっと詳細に書いた方が回答しやすいです。
また、quickrun, vimproc のエラーも内容そのものを張り付けた方がよいでしょう。

目的

neovim をIDEのように利用して Python 言語により競技プログラミングを行うため、編集したプログラムを即座に実行できるようにしたい。

手順の間違い

neovim はテキストエディタであり、Python 言語の実行環境ではありません。
おそらく「neovim 用の Python プラグイン」を作成する手順を行っているのではないでしょうか。これは neovim の機能を拡張するための仕組みで、単独の Python プログラムを実行するためのものではありません。

QuickRun による実現方法

  1. .config/nvim 以下に編集中のソースコードを置いている場合、別の場所に移動する。ここは neovim の設定ファイル置き場なので、自分のプロジェクトには別のワークフォルダを作成します。
  2. neovim に vim-quickrun プラグインを導入する。
  3. Python プログラムを書く。(__hello.py__とする)
  4. 標準入力に流し込む内容をテキストファイルに保存する。(__world.txt__とする)
  5. hello.py を開いたバッファで :QuickRun -input world.txt コマンドを実行する。

これにより、hello.py を編集しながら随時実行して試すことができます。

上記では vimproc.vim を利用していません。小規模なプログラムでは問題ありませんが、実行時間が長い場合などは結果が返ってくるまで neovim を操作できなくなります。また、Jupyter と違い Python インタープリターが毎回起動・終了するため、途中の変数の内容などはすべて失われます。

プラグインは1つずつ順番に試したほうがどこで問題が発生したかわかるため、まず vim-quickrun だけでここまでできるか確認したほうがよいでしょう。

QuickRun コマンドの詳細

:QuickRun -input filename コマンドについて。
vim-quickrun で実行するプログラムに対して -input filename オプションでファイルの内容を標準入力に与えることができます。(vim-quickrun の設定で同じことを行うこともできます。)

毎回コマンドを入力するのが手間なら、キーマッピングにより省力できます。

vim

1" ノーマルモードの F5 キーで input.txt を標準入力として QuickRun を実行する vim キーマップ 2nnoremap <F5> :QuickRun -input input.txt<CR>

投稿2020/09/05 18:32

Milly

総合スコア167

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shinouta

2020/09/06 09:23

遅くなって申し訳有りません. 無事標準入力をすることができました. 丁寧にキーマッピングまで紹介していただいてありがとうございます, 前回の質問でも質問の仕方が悪いと言われてしまったのですが, おそらく私のvimに対する不理解のために何が回答に必要な情報かが分からないのが原因です. にも関わらず文意を汲み取っていただき本当にありがとうございます.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問