4 ms·
EditREPL - Open Vim from within the Python REPL
- Glench 14y agooh my god this is awesome
- jlgreco 14y agoI could be mistaken, but isn't this a GNU Readline feature? Neat regardless.
- philipbjorge 14y agoI think this is different because I'm full on opening an instance of vim. (I didn't know about GNU Readline though and it looks awesome - I'll definitely try and work it into a project at some point).
- ben0x539 14y agoI'm only using GNU readline for my bash prompt, but if I press v it spawns a full-on $EDITOR instance to edit the commandline.
- philipbjorge 14y agoThis is awesome (I still have a lot to learn about bash) and effectively what my module does. Just so others know, you have to put bash in vi mode and press Esc before v (otherwise it's ctrl+x ctrl+e). set -o vi
- jlgreco 14y agoAye, looks like I was wrong. This is a feature that bash has, not Readline. (in bash 4.2: bashline.c:858)
- jlgreco 14y agoEither Readline let's you do the same, or that is just a bash specific feature I am miss remembering. I can check later when I'm not on my phone.
- lbolla 14y agoIPython has this feature baked in the magic %ed command [1]. [1]: http://ipython.org/ipython-doc/dev/config/editors.html http://ipython.org/ipython-doc/dev/config/editors.html
- philipbjorge 14y agoThis is awesome! I really should learn iPython one of these days...
- benatkin 14y agoYes, and to edit the last thing you typed, you can run %ed _. When you exit %ed it runs the code and then returns the code as a string.
- JulianWasTaken 14y agoCool. Haven't looked at the code yet, but I wrote: https://github.com/Julian/dotfiles/blob/master/.config/python/rc.py#L53 https://github.com/Julian/dotfiles/blob/master/.config/pytho... which does something similar (and is interpreter agnostic as it looks like this is).
- philipbjorge 14y agoMine's not interpreter agnostic because I had to mess with the stack frames to insert variables into the global context. But yours is able to do that because your importing a top-level edit function while I was pretty set on dynamically creating a vim() method and not having to import a function (just a module). I love how yours lists the globals though! I might just have to bite that feature :).
- JulianWasTaken 14y agoOh, yeah, well, importing stuff on interpreter startup is pretty much exactly what $PYTHONSTARTUP is for :).
- philipbjorge 14y agoAnd this is why I post code online - to find out the right way to do things. PYTHONSTARTUP is exactly 100% what I was looking for, but didn't know existed.
- pixelmonkey 14y agoIPython can also be run as a server (ipython kernel[1]) and then connected to via a vim plugin called vim-ipython [2]. This means you can do the other direction: evaluate a vim buffer in a running IPython session, and then connect to that IPython session to actually use the code you wrote in vim. See: [1] http://wiki.ipython.org/Cookbook/Connecting_to_a_remote_kernel_via_ssh http://wiki.ipython.org/Cookbook/Connecting_to_a_remote_kern... [2] https://github.com/ivanov/vim-ipython https://github.com/ivanov/vim-ipython
- bitwize 14y agoNice. Reminds me of a feature I have in Glass Table[0]: Define a procedure, macro, or record type called foo: (define (foo x) ...) Now say: ,(edit foo) Your definition appears in the editor of your choice. (Try running GT within Emacs and setting your EDITOR to "emacsclient".) Make changes; provided no errors occurred (like missing parens) the changes take effect when you save and quit. It's a nice little workflow; if you squint, it almost feels like a CADR... [0] https://github.com/bitwize/glasstable https://github.com/bitwize/glasstable
- ashayh 14y agoFor Ruby IRB, there is interactive editor: http://vimcasts.org/episodes/running-vim-within-irb/ http://vimcasts.org/episodes/running-vim-within-irb/