私は現在-codeを作成して実行するためにvim
(実際にはneovim
)IDEを使用しています(-pluginをGNU R
使用して、次のトピックも参照してください)。Nvim-R
https://github.com/jalvesaq/Nvim-R、私のREPLとして)私のローカルコンピュータで正しく実行されます。ワークロードや需要が高い場合は、リモートssh
システムに移動してnvim
プラグインをインストールし、サーバーnvim
上の「ローカル」アプリケーションとして実行します。
最近、私は奇妙なパターン(透明なリモートアクセス、マルチプロトコル、次のトピックも参照)Emacs
があることに気づきました。TRAMP
https://www.emacswiki.org/emacs/TrampMode)を使用すると、リモートでファイルを開くだけでなく、リモートコンピュータからコマンドを実行することもできます。私が理解しているように、これはREPLとして使用できることを意味しますEmacs
(ESS
例:Emacs
GNU R
https://ess.r-project.org/Manual/ess.html#ESS-processes-on-Remote-Computers)。
vim
またはに似たものがあるかどうかを知りたいですneovim
。以下を使用してリモートでファイルを編集できることを知っています。
vim scp://USER@SERVER:PORT//absolute/path/to/file
または
vim
:e scp://USER@SERVER:PORT//absolute/path/to/file
しかし、私が理解しているように、これは実際に私のローカルコンピュータにファイルの一時コピーを作成し、Nvim-R
-REPLを実行すると作業ディレクトリをローカルに開きます/tmp/something
。
一度試してみようかと思いましたvim-slime
(参照)https://github.com/jpalardy/vim-slime)、repl.nvim
(望むよりhttps://github.com/HiPhish/repl.nvim)またはneoterm
(参照https://github.com/kassio/neotermEmacs
)が、同様の経験を再現できるかどうかはわかりません。
どんなアイデアがありますか?似たようなことを達成した人はいますか?
答え1
免責事項:私はすでにこの質問に答えています。vi.SE
そして完全性のために答えを繰り返します。
私はまだ完璧な解決策を見つけることができませんでしたが、私には非常によく合う解決策を見つけました。vim-slime
(のみ作成vimscript
)。
マイ設定ファイル(~/.config/nvim/init.vim
または~/.vimrc
)で次の行を使用します。
let g:slime_target = "neovim"
"let g:slime_target = "vimterminal"
"let g:slime_target = "screen"
"let g:slime_target = "tmux"
これらのうちの1つだけが必要です。最初の行が使用されますがneovim
、使用する場合はvim
2番目の行(コメントなし)を使用します。私のワークフローでは、リモートシステムssh
に移動して作業したいファイル(myscript.R
または-interpreterなどlist_of_commands.sh
)を開き、ファイルを作成してから:vertical split
1つを開きます:terminal
。たとえば、my GNU R
-interpreter または a を実行できます。bash
。ターミナルマルチプレクサを使用する場合は、screen
(with Ctrl-a |
Ctrl-a l
Ctrl-a c
)または(with)を使用してtmux
新しいパーティションを作成しCtrl-b %
、上記の行(コメント解除)を設定ファイルに含めることができます。
:SlimeSend
次に - コマンド(Ctrl-c
Ctrl-c
同じキーの組み合わせをダブルクリックする必要があります)を呼び出すと、現在カーソルがあるテキストがターゲットに送信されるように選択されます(正しく構成され、分割がすでに存在し、デフォルトで正しく作成されています)。
TRAMP
これはそれほどエレガントではありませんが、うまくEmacs
いきます。しかし、改善のためのアイデアを持っている人がいたら、躊躇しないでください。