Sublime REPL: 配置

打开 Preferences/Packages Settings/SublimeREPL/Settings - User,增加

{
    // 对于 Windows,需要添加路径
    // 1. R: C:\\Program Files\\R\\R-3.6.2\\bin\\x64
    // 2. cywgin: C:\\cygwin64\\bin
    "default_extend_env": 
        {
            "PATH": "{PATH};C:\\Program Files\\R\\R-3.6.2\\bin\\x64;C:\\cygwin64\\bin"
        },

    "show_transferred_text": true
}

这里有一个小的提示,在 Windows 操作系统中,如果需要清屏幕,需要使用 Shift+Ctrl+c 进行操作。原来在 Linux 系统使用 Ctrl+l。这个在 SublimeREPL 的文档里面有快捷键说明。以及 StackOverFlow 的提问:how to clear SublimeREPL window in Sublime 2

sftp: 远程编辑文件

sftp 提供了内置的连接远程服务器方式,并且可以直接在服务器上面进行编辑。

安装 sftp

添加服务器:

  • 进入 C:\Users\Administrator\AppData\Roaming\Sublime Text 3\Packages\User\sftp_servers
  • 添加文件 fl@166.sublime-settings
  • 设置服务器连接信息
{
    // The tab key will cycle through the settings when first created
    // Visit http://wbond.net/sublime_packages/sftp/settings for help
    
    // sftp, ftp or ftps
    "type": "sftp",

    "sync_down_on_open": true,
    "sync_same_age": true,
    
    "host": "114.67.109.5",
    "user": "fl",
    "password": "***************",
    "port": "6166",
    
    "remote_path": "/home/fl",
    //"file_permissions": "664",
    //"dir_permissions": "775",
    
    //"extra_list_connections": 0,

    "connect_timeout": 30,
    //"keepalive": 120,
    //"ftp_passive_mode": true,
    //"ftp_obey_passive_host": false,
    //"ssh_key_file": "~/.ssh/id_rsa",
    //"sftp_flags": ["-F", "/path/to/ssh_config"],
    
    //"preserve_modification_times": false,
    //"remote_time_offset_in_hours": 0,
    //"remote_encoding": "utf-8",
    //"remote_locale": "C",
    //"allow_config_upload": false,
}

连接服务器

使用 sftp: browse server 即可查看服务器上面的文件

编辑远程文件,并在远程服务器运行 R 脚本程序

编辑远程文件,并在远程服务器运行 R 脚本程序

R: 配置

快捷键F5: 本地服务器

打开 Preferences/ Key Bidings,增加快捷键用于打开 R

// 使用 快捷键 F5 打开 R,
// 在 windows 的路径需要去查找
    {
        "keys": ["f5"],
        "caption": "SublimeREPL: R",
        "command":"repl_open","args":
            {
                "type": "subprocess",
                "external_id": "r",
                "additional_scopes": ["tex.latex.knitr"],
                "encoding": 
                    {
                        "windows": "$win_cmd_encoding",
                        "linux": "utf8",
                        "osx": "utf8"
                    },
                "soft_quit": "\nquit(save=\"no\")\n",
                "cmd": 
                    {
                        "linux": ["R", "--interactive", "--no-readline"],
                        "osx": ["R", "--interactive", "--no-readline"],
                        "windows": ["Rterm.exe", "--ess", "--encoding=$win_cmd_encoding"]
                    },
                "cwd": "$file_path",
                "extend_env": 
                    {
                        "osx": {"PATH": "{PATH}:/usr/local/bin"},
                        "linux": {"PATH": "{PATH}:/usr/local/bin"},
                        // 添加 Windows 操作系统下 的 R 路径,记得需要指定 /bin/x64/
                        "windows": {"PATH": "{PATH};C:\\Program Files\\R\\R-3.6.2\\bin\\x64\\\\R.exe"}
                    },
                "cmd_postfix": "\n",
                "suppress_echo": 
                    {
                        "osx": true,
                        "linux": true,
                        "windows": false
                    },
                "syntax": "Packages/R/R Console.tmLanguage"
            }
    },  

设置英文界面

参考:设置R界面语言– set console / menu language of R

  1. 找到 Rconsole,可以到 C:\Program Files\R\R-3.6.2\etc 查找
  2. 打开 Rconsole,然后修改语言选项

    Language for messages

    language = en

  3. 重新启动 R 就会发现现在的系统语言变成了英文

快捷键F6: 远程连接服务器

我们也可以设置快捷键 F6 进行远程连接服务器。

  • 需要安装 cywgin,使用 ssh 进行登录
  • 生成 ssh-keygen,文件位置在 /home/Administrator/.ssh
  • 拷贝 id_rsa.pub 到远程服务器的 ~/.ssh/authorized_keys

接着,我们便可以设置快捷键了

// 使用 F6 连接远程服务器
    {
        "keys": ["f6"],
        "caption": "SublimeREPL: R",
        "command":"repl_open","args":
            {
                "type": "subprocess",
                "external_id": "r",
                "additional_scopes": ["tex.latex.knitr"],
                "encoding": 
                    {
                        "windows": "$win_cmd_encoding",
                        "linux": "utf8",
                        "osx": "utf8"
                    },
                "soft_quit": "\nquit(save=\"no\")\n",
                "cmd": 
                    {
                        "linux": 
                            [
                                "ssh",
                                "-L", "4321:localhost:4321", 
                                "fl@114.67.109.5", "-p6166",
                                "R","--interactive", "--no-readline"
                            ],
                        "osx": ["R", "--interactive", "--no-readline"],
                        "windows": 
                            [
                                "ssh",
                                "-L", "4321:localhost:4321", 
                                "fl@114.67.109.5", "-p6166",
                                "R","--interactive", "--no-readline",
                                 "--encoding=$win_cmd_encoding"
                            ]
                    },
                "cwd": "$file_path",
                "extend_env": 
                    {
                        "osx": {"PATH": "{PATH}:/usr/local/bin"},
                        "linux": {"PATH": "{PATH}:/usr/local/bin"},
                        // 需要把 cygwin 路径添加到这里
                        "windows": {"PATH": "{PATH};C:\\cygwin64\\bin"}
                    },
                "cmd_postfix": "\n",
                "suppress_echo": 
                    {
                        "osx": true,
                        "linux": true,
                        "windows": true
                    },
                "syntax": "Packages/R/R Console.tmLanguage"
            }
    },      

Windows 无法传送命令的问题

在 Windows 操作系统中,有一个问题,我现在还是没有很好的方法,只能提供一个权宜之计:

有时候,打开 SublimeREPL,却无法发送代码到解释器。

这个有可能是 Window 在处理信号的时候,找不到 Sublime。

我现在的做法是:

  • 先使用 kill 杀死进程
  • 然后在重新 restart 一个进程

可以设置快捷键如下 F1 -> F12

  // 使用 Sublime REPL  F1 先杀死 python
  // F1:kill
  { "keys": ["f1"],
      "caption": "SublimeREPL: Kill",
      "command": "repl_kill", "caption": "Kill"
  },
  // F12:restart
  { "keys": ["f12"],
      "caption": "SublimeREPL: Restart",
      "command": "repl_restart", "caption": "Restart"
  },