command-linesublimetext3fish

Open a folder in Sublime Text 3 using command line


I'm trying to open a directory in sublime Text 3.

I can launch sublime from the command line using the subl command.

The help text show the following:

Sublime Text build 3059

Usage: subl [arguments] [files]         edit the given files
   or: subl [arguments] [directories]   open the given directories
   or: subl [arguments] -               edit stdin

Arguments:
  --project <project>: Load the given project
  --command <command>: Run the given command
  -n or --new-window:  Open a new window
  -a or --add:         Add folders to the current window
  -w or --wait:        Wait for the files to be closed before returning
  -b or --background:  Don't activate the application
  -s or --stay:        Keep the application activated after closing the file
  -h or --help:        Show help (this message) and exit
  -v or --version:     Show version and exit

--wait is implied if reading from stdin. Use --stay to not switch back
to the terminal when a file is closed (only relevant if waiting for a file).

Filenames may be given a :line or :line:column suffix to open at a specific
location.

Thus to open a directory I should be able to use the following

subl ./folder_name

but that does not work for me. Sublime does open (with a empty new document) and I cannot see the folder in the side bar.

Am I doing it wrong...

BTW. I'm using the fish shell with the 'Oh my fish' Add-on (I have also added the sublime add- on)...


Solution

  • Mac Or Linux Only

    The best & safest way to do this is to create a symbolic link from the Sublime executable file (subl) to a folder already in your $PATH (e.g. /usr/local/bin/). If you do this; you won't have to update this every time sublime updates...

    For users running BASH (i.e. most people):

    ln -s '/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl' /usr/local/bin/subl
    

    If that doesn't work, create a bin folder in your home directory (if one does not already exist), add it to your PATH variable and create a soft link to that file).

    mkdir $HOME/bin
    export PATH=$HOME/bin:$PATH
    ln -s '/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl' $HOME/bin/subl
    


    Then before you start using it properly, I would suggest taking a look at the help text first, which explains it's usage:

     subl -h
    

    e.g.

    subl my_folder_name/filename.txt
    subl my_folder_name
    

    to open a file and folder in Sublime respectively.


    Taking it a step further

    I use a BASH function to take this a step further with the following benefits:

    If you want, you can use this function by running the following (after running the above):

    cd
    subl .bashrc
    

    This should open the .bashrc file in Sublime Text. Add the following to the bottom.

    function s {
      if [ "$1" != "" ]; then
        subl $1
      else
        subl $PWD
      fi
    }   
    

    Then you can open Sublime by simply typing in a s (all the sublime arguments still work)...

    (Side Point, I also use a similar function for open (for mac) / or xdg-open (for ubuntu); where I shorten the command to just o. I use it a lot to open the current directory in the file manager)...


    Fish Shell Users (you know who you are)

    The export line above will not work; so exchange it for the following

    set PATH $HOME/bin:$PATH
    


    Before Edit

    I had different versions of the command line subl and sublime text three installed. I simply removed the subl command and then re-added and that fixed the problem for me...

    For those who may find this useful - this is what I did:

     subl -v
    

    This showed me the build of the command-line sublime, when I checked this against the version of my actual Sublime, I noticed that the command line subl was an older build. So I tried to find the location of the command line subl using the following command (for me this was /usr/bin/subl):

    which subl
    

    So I first removed this older command-line sublime text.

    sudo rm /usr/bin/subl   (use `sudo` only if necessary)
    

    And then re-added Subl to my PATH (as above)