Asked  6 Months ago    Answers:  5   Viewed   50 times

I use Sublime Text 2 but it won't let me enter any value when my code asks for user input. (In other words: input() in Python and gets in Ruby fail to correctly prompt me for input).

Python throws an EOFError error (what you get when user doesn't enter anything).

Simply USER INPUT isn't working in Sublime Text 2 for me.

EDIT: FOR EXAMPLE

try:
    text = input('Enter something: ')
    print text
except EOFError:
    print('nEOFError')

=> Enter something: #cannot enter anything to var "text"
=> EOFError
=> [Finished]

 Answers

79

Sublime text doesn't support that. But you can get around it (at least in python) by using SublimeREPL, I use this for everything, it works pretty great. Its a little cooky though, as the tab is still editable like a normal sublime tab (which is good and bad)...

It also allows you to run the interpreter in multiple tabs, its basically awesome.

To install it you need package control this lets you easily install plugins. To get it go here, and follow the instructions. Once thats done:

  • in Sublime press ctrl + shift + P (linux command in ST for 'goto anything').
  • Type in 'install',
  • click on 'sublime package control: install package'.
  • Then select SublimeREPL. It will install it automatically.
  • To use it go to Tools>sublimerepl>python from the menus.

To make the default build system SublimeREPL, you can follow these instructions.

Tuesday, June 1, 2021
 
sohum
answered 6 Months ago
88

The pip tool is becoming the standard in equivalent of Ruby's gems. Like distribute, pip uses the PyPI package repository (by default) for resolving and downloading dependencies. pip can install dependencies from a file listing project dependencies (called requirements.txt by convention):

pip install -r requirements.txt

You can "freeze" the current packages on the Python path using pip as well:

pip freeze > requirements.txt

When used in combination with the virtualenv package, you can reliably create project Python environments with a project's required dependencies.

Sunday, June 27, 2021
 
janlindso
answered 6 Months ago
12

I don't think stdin is supported in Sublime Text, however, you can create a file stdin.input and use it under the editor:

#include <iostream>
#include <fstream>

#define SUBLIME

#if defined SUBLIME
#  define ISTREAM ifile
#else
#  define ISTREAM std::cin
#endif

int main() 
{
    int a, b, c;
    std::cout << "Enter: ";
    #if defined (SUBLIME)
      std::ifstream ifile("stdin.input");
    #endif
    ISTREAM >> a >> b;
    c = a + b;
    std::cout << a << '+' << b << '=' << c << std::endl;
    return 0;
}
Saturday, July 31, 2021
 
ChriskOlson
answered 4 Months ago
12

The sublime plugin is trying to run the command rspec using shell /bin/sh. However, the command is not found because RVM is not loaded in the shell's environment.

As such, the folder where your rspec executable is located is not in the shell's search path (PATH environment variable). RVM installs any executable commands that come with gems to someplace like: "/home/your-user/.rvm/gems/ruby-1.9.3-p194@myproject/bin/" (actual path depending on your gemset, ruby version, and where your OS stores user home directories)

Simple Solution

As mentioned here... you might find that simply executing sublime from a shell environment containing RVM (ie: your project directory) may solve the PATH problem. However, this requires that you execute your text editor from the command line each time, and that the shell's environment is preserved.

cd ~/src/my-ruby-project
subl .

After much experimentation, I found a way to force the RubyTest plugin to execute rspec with the correct RVM-controlled environment (with bundler support).

With Bundler Support

Here's the contents of my ~/.config/sublime-text-2/Packages/RubyTest/RubyTest.sublime-settings file:

{
  "erb_verify_command": "~/.rvm/bin/rvm-auto-ruby $(~/.rvm/bin/rvm gemdir | sed -e 's/@.*//' -e 's/$/@global/' )/bin/bundle exec erb -xT - {file_name} | ~/.rvm/bin/rvm-auto-ruby -c",
  "ruby_verify_command": "~/.rvm/bin/rvm-auto-ruby -c {file_name}",

  "run_ruby_unit_command": "~/.rvm/bin/rvm-auto-ruby -Itest {relative_path}",
  "run_single_ruby_unit_command": "~/.rvm/bin/rvm-auto-ruby -Itest {relative_path} -n '{test_name}'",

  "run_cucumber_command": "~/.rvm/bin/rvm-auto-ruby $(~/.rvm/bin/rvm gemdir | sed -e 's/@.*//' -e 's/$/@global/' )/bin/bundle exec cucumber {relative_path}",
  "run_single_cucumber_command": "~/.rvm/bin/rvm-auto-ruby $(~/.rvm/bin/rvm gemdir | sed -e 's/@.*//' -e 's/$/@global/' )/bin/bundle exec cucumber {relative_path} -l{line_number}",

  "run_rspec_command": "~/.rvm/bin/rvm-auto-ruby $(~/.rvm/bin/rvm gemdir | sed -e 's/@.*//' -e 's/$/@global/' )/bin/bundle exec rspec {relative_path}",
  "run_single_rspec_command": "~/.rvm/bin/rvm-auto-ruby $(~/.rvm/bin/rvm gemdir | sed -e 's/@.*//' -e 's/$/@global/' )/bin/bundle exec rspec {relative_path} -l{line_number}",

  "ruby_unit_folder": "test",
  "ruby_cucumber_folder": "features",
  "ruby_rspec_folder": "spec",

  "ruby_use_scratch" : false,
  "save_on_run": false,
  "ignored_directories": [".git", "vendor", "tmp"],

  "hide_panel": false,

  "before_callback": "",
  "after_callback": ""
}

This should work as long as you've got bundler in your global gemset, and RVM installed to your home dir (adjust paths as needed if ~/.rvm does not evaluate correctly, or if bundler or rvm-auto-ruby is located somewhere else).

If you are using gemsets you should also add a line like the following to your project's .rvmrc file:

rvm use ruby-1.9.3-p327@your_project_gemset_name

Without Bundler Support

This assumes you have cucumber and rspec installed to the @global gemset of your current ruby:

{
  "erb_verify_command": "~/.rvm/bin/rvm-exec $(~/.rvm/bin/rvm current) 1>/dev/null erb -xT - {file_name} | ~/.rvm/bin/rvm-auto-ruby -c",
  "ruby_verify_command": "~/.rvm/bin/rvm-auto-ruby -c {file_name}",

  "run_ruby_unit_command": "~/.rvm/bin/rvm-auto-ruby -Itest {relative_path}",
  "run_single_ruby_unit_command": "~/.rvm/bin/rvm-auto-ruby -Itest {relative_path} -n '{test_name}'",

  "run_cucumber_command": "~/.rvm/bin/rvm-auto-ruby $(~/.rvm/bin/rvm gemdir | sed -e 's/@.*//' -e 's/$/@global/' )/bin/cucumber {relative_path}",
  "run_single_cucumber_command": "~/.rvm/bin/rvm-auto-ruby $(~/.rvm/bin/rvm gemdir | sed -e 's/@.*//' -e 's/$/@global/' )/bin/cucumber {relative_path} -l{line_number}",

  "run_rspec_command": "~/.rvm/bin/rvm-auto-ruby $(~/.rvm/bin/rvm gemdir | sed -e 's/@.*//' -e 's/$/@global/' )/bin/rspec {relative_path}",
  "run_single_rspec_command": "~/.rvm/bin/rvm-auto-ruby $(~/.rvm/bin/rvm gemdir | sed -e 's/@.*//' -e 's/$/@global/' )/bin/rspec {relative_path} -l{line_number}",

  "ruby_unit_folder": "test",
  "ruby_cucumber_folder": "features",
  "ruby_rspec_folder": "spec",

  "ruby_use_scratch" : false,
  "save_on_run": false,
  "ignored_directories": [".git", "vendor", "tmp"],

  "hide_panel": false,

  "before_callback": "",
  "after_callback": ""
}
Wednesday, August 11, 2021
 
Puneet
answered 4 Months ago
51

To turn off line highlighting go to preferences>settings - User through the menus and add this line:

"highlight_line": false,

then save. I am using the default Monokai theme in linux, this will change it from:

enter image description here

to:

enter image description here

As you can see the line is no longer highlighted (it doesn't show in the picture but my cursor is still on the line), but the gutter numbers are. I think you also want to get rid of that? So, open the theme file .../sublime-text-2/Packages/Color Scheme - Default/Monokai.tmTheme, and change the <key>lineHighlight</key> colour, so it is the same as the <key>background</key> color, ie. #3E3D32 goes to #272822, like this:

enter image description here On saving, it should resolve your problem:

enter image description here

Only the 2nd step is really neccessary.

Tuesday, September 21, 2021
 
pthesis
answered 2 Months ago
Only authorized users can answer the question. Please sign in first, or register a free account.
Not the answer you're looking for? Browse other questions tagged :  
Share