HACKER Q&A
📣 Takizawamura

Anyone prefer a terminal based coding setup?


Does anyone have a simple, minimal 'terminal-based' setup for coding that they can share? I'd prefer to stick with application defaults if possible and minimize plugins.

For context, this is for a combination of C and Python coding on a Linux machine.


  👤 jolmg Accepted Answer ✓
Typically, I'll split the workspace in 2 (i3 wm), have a terminal with vim on the right, and a stack of terminals on the left. One terminal would be with the shell mainly for interacting with git, running tests, manage the directory structure, building/packaging the project, etc. Another may have a project-specific console to interact with functions in the project as I write them. Another may have a development server running and show the live log output. I may tile this last one in a small corner above the vim window so it stays visible.

Terminal windows is what most of my windows are, but typically I'll also have a browser window for looking at documentation and interacting with the issue tracking system. If it's a personal project, I may have an emacs org-mode window for managing my tasks there.

I regularly fullscreen to different windows when I want more room or to focus on them.


👤 second--shift
emacs -nw is where i live.

just stick with emacs defaults, or if you already know vim use doom or evil mode.

emacs' modes give you syntax highlighting, formatting, code completion, a repl, and more. I do a lot of python work (not too much C), and still prefer emacs+python over vscode, idle, others.


👤 asicsp
These might help:

* https://blog.sanctum.geek.nz/series/unix-as-ide/

* https://themouseless.dev/

Personally, I use gvim for all my text editing needs and use a normal terminal (i.e. no tmux, i3, etc). There's not much to share, unless you are interested in my vimrc, aliases, etc: https://github.com/learnbyexample/scripting_course


👤 alpaca128
I'm using Vim, either with multiple tabs and splits and a terminal buffer, or within a terminal multiplexer. The latter is slightly less consistent with controls but has the advantage that I don't accidentally start Vim recursively, which is usually not desirable.

Recently I started using NeoVide to run NeoVim in a graphical frontend that otherwise still looks almost identical. I'm not sure whether I'll keep using it long-term, but it seems even snappier than before. I guess terminal output just can't quite compete in terms of latency.


👤 sparasur
I am a huge tmux and vim user. I also like the fact that tmux is scriptable and have hacked a few more tools like clojure to "program" and automate my typing in terminal windows. This has made it possible for me to type less and become very productive in command line environments. http://www.kodeship.com/srimux.html

👤 cutthegrass2
Terminal, TMUX, neovim when i'm writing bash/python or any of the markup/config "languages".

Intellij for Java, because of all the extra crap associated with Java.


👤 dyingkneepad
I use Vim and I make heavy use of the ":terminal" command. I use splits and buffers. Sometimes I have more than one tab in my terminal (terminator). I used to use Gvim too, that works fine too, but these days I have to make heavy usage of ssh so I kinda dropped the habit. Ctags is another important tool I make use of. I also do a lot of grepping but I should switch to one of the many better alternatives.

👤 pjs_
Yep, I do everything in Ubuntu desktop, bash, tmux and (n)vim and have done for ~10 years. I use only a small handful of plugins and configuration options. I try not to modify stuff too much.

To first order if I get a fresh machine or VM, I can get a development environment that I am fairly comfortable with with by running:

sudo apt install nvim tmux python3 python3-pip


👤 runT1ME
Depends on the language (I don't use it for Java), but for Scala and python I definitely prefer it. I'd definitely recommend using TMux with Vim, I've mapped my tmux navigation to mirror Vim's window navigation, and I can keep a terminal and REPL open and easily copy-paste between Vim and my tmux windows.

👤 _benj
with the release of nvim 0.5 I started using a terminal based setup, which is just a full screen terminal with tmux split in usually vertically, one big terminal on the left and 1|2 on the right.

On the past I've tried similar setups to no avail, but what changed this time was that I completely threw out the "religious" ideal of "evil-mouse" and turned on mouse support on both tmux and nvim and it's awesome!

Everything that I use often enough I made a keybinding for it but I'm perfectly happy selecting text or scrolling with the mouse on vim/tmux.

I've been using this for a while on personal Zig projects thought, for professional stuff that I just need to finish it, Jetbrains rules!


👤 ahefner
On two occasions in my career (most recently just a few years ago) I have for various dumb reasons ended up working 99% out of a single terminal ssh'd into some other machine for significant lengths of time. Screen + emacs gets it done.

👤 pwg
For myself, that would be an rxvt (or xterm) and the Joe editor in WordStar emulation mode.

👤 taf2
Vim in a Bash shell should do the trick?

👤 randomopining
IntelliJ for Java is too good doe