iPython shell - how to use $EDITOR to edit commands - ipython

In a terminal emulator with readline support, I can use key binding Ctrl-X Ctrl-E to bring up $EDITOR to edit a command.
How do I do that in iPython to bring up $EDITOR to edit half-finished code?
P.S. My $EDITOR is set to "vim -u ".

shortcuts used:
'g' to launch gvim with the content of current cell (you can replace gvim with whatever text editor you like).
so, when you want to edit the cell with your preferred editor, hit 'g', make the changes you want to the cell, save the file in your editor (and then quit), then press 'u'.

Related

How to edit a py file from terminal?

I am working in a VM via PuTTY.
Via terminal, I want to open, edit, and save a .py file. How can I do it?
Thank you for your help.
The easiest way is to use vim
vim your_script.py
Edit your file and save it using :w or :x
You can also use emacs or nano
You also have to enter a command like i to get into insert mode. Then hit esc and :wq to save and quit. If you are using terminal often it may be helpful to have a cheat sheet
Either do:
python3 -i pythonfile.py
At which you'll be entering the python editor after closing the program, or
Use a text editor like nano (since it's installed by default with most operating systems), or emacs, which also is a great terminal text editor.
nano pythonfile.py
emacs pythonfile.py -nw
(-nw is a non-gui mode)
You can simply use an editor such as vi, vim or nano:
$ vi myFile.py

Visual Studio Code, how to switch from powershell.exe to cmd.exe

I would like to switch from powershell.exe to cmd.exe in the terminal but i'm not sure how to do so. Provided screenshot for clarification.
Press Ctrl+Shift+P to show all commands.
Type profile in the displayed text box to filter the list.
Select Terminal: Select Default Profile.
You will be prompted to Select your preferred terminal shell, you can change this later in your settings or follow the same process as we do now
Select Command Prompt (cmd.exe)
Click the Delete Icon in the shell pane to remove the existing terminal.
Press Ctrl+` (or View > Terminal in menu) to open a new terminal pane.
Add this user settings to your File -- Prefernces -- User Settings
// Place your settings in this file to overwrite the default settings
{
"terminal.integrated.shell.windows": "C:\\Windows\\System32\\cmd.exe",
}
2021 Update:
Hit Ctrl+Shift+P
Type/Paste : Terminal: Select Default Profile
Select the command prompt from the drop down list.
Thanks! :)
I found two different ways to switch from powershell to command prompt in VSCode.
Very simple steps i found my self as below:
First one is very simple way:
Press Ctrl+` (or View > Terminal in menu) to open a
new terminal pane.
Click terminal selection dropdown and click 'Select Default Shell'.
Choose terminal type Command Prompt or PowerShell
Now Delete current opened terminal or open new terminal.
Now, Command Prompt will be your default shell in VSCode.
Second one is also simple and handy for all devs.
Press Ctrl+Shift+P to show all commands.
Type shell in the displayed text box to filter the list.
Select Terminal: Select Default Shell.
You will be prompted to Select your preferred terminal shell, you can change this later in your settings or follow the same process as we do now
Select Command Prompt (cmd.exe)
Click the Delete Icon in the shell pane to remove the existing terminal.
Press Ctrl+` (or View > Terminal in menu) to open a new terminal pane.
open settings (ctrl+comma)
find terminal.integrated.shell.windows
replace its value with C:\\Windows\\System32\\cmd.exe
I also faced this problem that when I clicked on terminal. It was showing Powershell but not Command Prompt, so I did the following steps to get Command Prompt in Visual Studio:
View -> Command palette -> Toggle Integrated Terminal
Open terminal by shortcut ctrl+`
or View -> terminal
Write the command as cmd.exe and run
In the current terminal ,simply type cmd and enter. And you are done.
From Visual Studio if you have powershell set as your default integrated terminal, after you call it with Ctrl-` (control backtick) - that toggles from the terminal to your files panel and back. Call the terminal, It will show as 1: pwsh in the dropdown box. From the powershell command line type bash and enter. You have your bash prompt $. In the dropdown you now see 1: bash.
You can type cmd from either the ps C: or the $ bash prompt and open the windows command prompt. C:> and exit to exit them.
You can open up multiple terminals. Say powershell (pwsh) is your default one. A new terminal will show as 2: pwsh which you can change to a cmd one. The same if you open a third. Change it to bash. You now have 3 terminals 1: pwsh, 2: cmd, and 3: bash. You can select whichever one you want to work with from the dropdown. You can of course exit any of them.
No doubt you've seen that when you are running node.js, the terminal becomes node.

how to place a file inside .bashrc

I am following a tutorial on the link https://github.com/birlrobotics/birl_baxter/wiki and I was told as folows:
Finally, after doing catkin_make, place the newly created ~/ros/indigo/catkin_ws/devel/setup.bash file inside .bashrc
cd ~
emacs .bashrc
source ~/ros/indigo/rbx_ws/devel/setup.bash
When I run the command emacs .bashrc the emacs editor opens but I am not sure what I am expected to do after that .
The tutorial asks you to open your .bashrc file with the extensible editor Emacs by executingemacs .bashrc. Then you are supposed to add the line source ~/ros/indigo/rbx_ws/devel/setup.bash at the end of the file.
Then you exit the editor Emacs with the key stroke "C-x C-c" meaning you press the Control/CTRL key, hold it and then press first the 'x' key and then the 'c' key. After this you continue the tutorial.
Otherwise you can just:
echo "source ~/ros/indigo/rbx_ws/devel/setup.bash" >> ~/.bashrc in your terminal without using the editor Emacs.

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)...
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:
shorten the shortcut to just s (which is somewhat shorter than subl).
automatically open the current directory that you are if no file/directory is specified after subl / s.
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)
To open sublime in the same folder you can simply type in your commandline:
subl .
In order to work you must configure some stuff:
1) To prevent the opening of previous projects you should set the following properties of your Sublime User Settings:
"hot_exit": false,
"remember_open_files": false
2) In order to use subl.exe from anywhere you should add the Sublime folder in the environment variables. I.e.
C:\Program Files\Sublime Text 3
That's because by default the side bar does not show, you can show the side bar by
View > Side Bar> Show Side Bar
[1
I've had this issue before, on both Mac OSX and Windows, and I found some oddities with it;
Mac OSX
You either have to have Sublime Text open already for the subl ./folder_name command to actually open the folder, or Sublime must have been quit with windows still open - if you close all the windows then quit Sublime, using the subl ./folder_name command will just open a blank Sublime window.
Windows
You have to have Sublime open for the subl ./folder_name to work. Without Sublime open, it will just open a blank Sublime window.
I've yet to find a way of the command opening fine, no matter how you quit Sublime / when you have Sublime closed.
Try having Sublime open whilst you run the command, and see if it works then.
To open a folder as a project in Sublime Text, use subl . while in the folder you're trying to open.
Linux
So if you want to open ~/Documents/folder_name, then move to that folder in Terminal cd Documents/folder_name and type the command subl .
Note This was only tested in Ubuntu with Sublime Text 2.
Edit Answer found here: http://olivierlacan.com/posts/launch-sublime-text-3-from-the-command-line/
I was having trouble opening sublime text 3 with sublime text 2 currently installed. To fix this issue:
1) open /usr/local/bin from terminal.
2) locate and delete subl within bin folder
3) copy and pasted '/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl' /usr/local/bin/subl into terminal.
4) locate new subl within bin folder
5) used subl in terminal to verify command opens sublime text 3 properly.
6) used subl -v and got Sublime Text Build 3083
MAC OSX Open terminal and run following command:
ln -s '/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl'
/usr/local/bin/subl
The above command is needed only for first time. After this configuration, whenever you go to folder where your project is present, run following command:
subl .
While there are already multiple answers and I apologize for adding to the noise, I don't understand why you're using subl ./folder_name to open a local directory. Why not use subl folder_name/ instead?
Either way my ST3 (build 3083) installation on OS X is opening a child directory with either subl ./child or subl child/ whether Sublime was open prior to the command or not.
PS: Make sure you don't have the sidebar closed when opening directories by running Command + K then B. I've often assumed a directory was failing to open just because I had my sidebar closed and couldn't see the files listed inside of it.
There is probably an alias with the name subl provided by 'Oh my fish' . You can check if there is an alias by using alias command in the terminal. This will display all aliases for your session. If you have it on the list then it is colliding with your symbolic link. Disable the alias by fixing the source or by using unalias subl (unalias will only fix it for the current session)
I had this problem when using bash-it aliases for osx. Disabling it fixed the problem for me.
For Linux and MacOs users and Sublime Text 3
Try the command :
subl3

Expand envvar in minibuffer

When the cursor is in minibuffer typing $ and then a few characters, say $HO offers envar name completion, for example running cygwin Emacs on Windows 7 it offers me $HOME, $HOMEDRIVE and $HOMEPATH. As well, typing a / after a complete variable name such as $HOME/ and tab shows files in that directory.
Is there a way to expand this variable? So that for example, I can delete part the expanded text and continue?
I am using iswitchb but I see the same behavior with emacs -q as well.
I am using cygwin build of Emacs 24.3.1 on Windows 7
Once you have chosen which of those variables you want, type a / afterwards, then press TAB.