[R-sig-Debian] Open a text file with vi/vim in another Terminal

Patrice Kiener p@tr|ce@k|ener @end|ng |rom |nmode||@@com
Fri Dec 17 21:13:12 CET 2021


To Dirk and Ivan,

Thank you for your suggestions. Let's give more details. The idea is to 
insert the code in a function and then in a (private) package. We have 
to rely on the default editors provided by the OS to R and cannot invent 
a new editor, as R CMD check could fail on exotic platforms. We cannot 
assume that Geany, even nano, is available everywhere. Something like:

switch(Sys.info()[["sysname"]],
   "Windows" = switch(type,
     "pager"  = file.show(filename, header = filename, title = "Pager"),
     "editor" = file.edit(filename, title = filename, fileEncoding = ""),
     shell.exec(filename)
     ),
   "Darwin"  =  switch(type,
     "pager"  = file.show(filename, header = filename, title = "Pager"),
     # "editor" = system2(getOption("editor"), filename, wait = FALSE),
     system2("open", filename, wait = FALSE)
     ),
   switch(type,
     "pager" = file.show(filename, header = filename, title = "Pager"),
     # "editor" = system2(getOption("editor"), filename, wait = FALSE),
     system2("xdg-open", filename, wait = FALSE)
     )
)

The instruction for the pager

   file.show(filename, header = filename, title = "Pager")

launchs the pager on Windows, Debian and macOS and it works fine on 
these 3 platforms. On Debian, it is within the R console and it 
terminates properly and gives the hand back to R.

The instruction for the text editor

  system2(getOption("editor"), fileREP, wait = FALSE)

works fine on Windows (it opens Notepad.exe, or Notepad++.exe in my 
Rprofile.site) but not on Unix. I assumed there was something similar on 
Unix (You have understood that I am not a Unix specialist). R includes a 
few library statically compiled. Could R incorporate a decent text 
editor on Unix Oses?


Dirk, I will watch your videos. Thank you for these links. I discover them.

Patrice



Le 17/12/2021 à 20:20, Dirk Eddelbuettel a écrit :
Patrice,
Also: if you are on a terminal, have you discovered tmux / byobu yet to 
multiplex? It is fairly magic as you can just open as many 'sessions 
with the outer sessions', the sessions persist and many more advantages. 
  I talked a little about this (with short videos) last year
    https://dirk.eddelbuettel.com/blog/code/t4/
in episodes 4, 5 and 6.
Dirk


Le 17/12/2021 à 19:46, Ivan Krylov a écrit :
    system2(getOption("editor"), fileREP, wait = FALSE)
Starting a new terminal is somewhat hard, but the shortest path to
getting this particular command working would be options(editor =
'gvim'). It's almost like Vim in a terminal, plus a few features useful
in a windowed interface.
Note that gvim backgrounds itself by default, so this would break
edit() and file.edit(): since the GVim process started by R terminates
almost immediately after spawning a child to do the rest of the work, R
decides that the editing session is done. Unfortunately, it's hard to
make R's edit() pass the -f flag to gvim to prevent it from doing that,
but a trivial shell script wrapper could be used for that purpose:
 > #!/bin/sh
 > exec gvim -f "$@"



More information about the R-SIG-Debian mailing list