Originally posted on the DAIS Lab blog.
Command line-based text editors like vim and Emacs have a steep learning curve and even simple tasks like navigating around in the interface isn’t always straightforward for beginners. In this tutorial, we’ll show you how to edit files on a remote server like Compute Canada in an intuitive and easy manner using Sublime Text 3 and SFTP.
Set Up
-
First, download Sublime Text 3.
-
Then install the Package Control plugin using the instructions on the page.
-
Once Package Control is installed, restart Sublime Text then press
Ctrl+Shift+P
to open the Command Palette. Type Install and selectPackage Control: Install Package
. Type inSFTP
and press Enter to install the SFTP package.
Select Your Folder
First, you’ll have to select and open a folder that you want to sync with the remote server. You can create a new folder if you’re starting from scratch, then go to File > Open Folder
in Sublime Text to open that folder. Right click on the folder that you’ve just selected and you should see a SFTP/FTP
and Map to Remote
option in the context menu.
Clicking on Map to Remote
creates a sftp-config.json
file to save your settings which looks something like this:
{
// 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",
"save_before_upload": true,
"upload_on_save": true,
"sync_down_on_open": false,
"sync_skip_deletes": false,
"sync_same_age": true,
"confirm_downloads": false,
"confirm_sync": true,
"confirm_overwrite_newer": false,
"host": "206.167.180.231",
"user": "ubuntu",
"port": "22",
"remote_path": "/home/ubuntu/wlr/",
"ignore_regexes": [
"\\.sublime-(project|workspace)", "sftp-config(-alt\\d?)?\\.json",
"sftp-settings\\.json", "/venv/", "\\.svn/", "\\.hg/", "\\.git/",
"\\.bzr", "_darcs", "CVS", "\\.DS_Store", "Thumbs\\.db", "desktop\\.ini"
],
"connect_timeout": 30
}
Settings Configuration
There are several important parameters that you need to fill in for SFTP to work:
- host
- user
- port
- remote_path
If you’re following our Compute Canada Cloud tutorial, host
is the floating IP adress that you get from the Compute Canada config page. user
would be ubuntu and port
is 22. Otherwise, please use the settings for your server.
remote_path
refers to the path on the remote server where the files will be synced. The path must exist on the server for this to work. For example, if you want to sync /home/mycomputer/dais/
on your own computer to /home/ubuntu/dais
on the remote server, you will need to first create the dais
folder on the remote server. This is easy, just SSH into the server (as explained in the Compute Canada Cloud setup tutorial) and use mkdir dais
to create a directory called dais
.
I usually leave the other settings on their default value, except upload_on_save
, which I set to true
. Setting it to true will ask SFTP to automatically upload the file to the server everytime you save it on your computer.
Running Your Program
My workflow is simple. I write my code in Sublime Text 3 and use SFTP to automatically sync it to the Compute Canada server whenever I save the file. I would then SSH into the server and then run my program from the terminal. For example, if I have a python file called main.py
, I would edit and sync the file then SSH into the server and run python main.py
.
Syncing Remote Files To Your Computer
If you have a program that dumps some output on the server, you can (very conveniently) grab the files to your computer using the Sync Remote to Local
command or Download Folder
command. For example, if your results are dumped into a folder called output
, simply right click on that folder in Sublime Text then select Download Folder
to download the entire folder, or Sync Remote to Local
to only grab files that you don’t have on your computer.
Final Notes
To save yourself some time and mouse clicks, check out the SFTP page and learn the shortcuts for uploading/downloading files: https://wbond.net/sublime_packages/sftp/usage