sublime text not opening from command line tmux - macos

I have Sublime Text as an alias so I can call it from the terminal on MacOS.
Since I started using tmux, Running the following command opens sublime but not on the current directory. It's like aliases are not accepting arguments on tmux.
subl .
Without tmux this command works fine.
Any known issue with tmux alias arguments?

This answer from SuperUser did the trick for me.
brew install reattach-to-user-namespace
And then append the following to your ~/.tmux.conf
set-option -g default-command "reattach-to-user-namespace -l zsh"
Lastly, source the config file for tmux
tmux source ~/.tmux.conf
I use subl . all the time! It's a shame you've trained yourself not to use this helpful command.

I ran into this same issue after reinstalling Homebrew. Not sure why it happened but i was able to resolve it but just add the following line to the end of my .bash_profile.
alias subl='open -a "/Applications/Sublime Text.app"'
Then closing and reopening the terminal session or by running source ~/.bash_profile to reload the profile.

Related

How to reset vim and neovim when sourcing wrong file .zshrc instead of init.vim

I'm using macOS Catalina which has built in Vim 8.1. I'm also using iTerm with zsh and oh-my-zsh. I installed neovim for my personal use and when I setting it up, I accidentally enter source .zshrc in Command mode instead of source init.vim. From then, when I open neovim or built in vim, it does not source init.vim anymore and shows error message like below:
Error detected while processing VIMINIT:
E33: No previous substitute regular expression
Press ENTER or type command to continue
There is a line in my .zshrc that exports VIMINIT variable
export VIMINIT="~/.config/nvim/init.vim"
How can I undo this or is there any other way to reset vim to original setting? Thank you so much
I tried #Niloct solution, unset VIMINIT and vim/neovim is backed to normal. After that, I reopen the iTerm and it showed error message again. Therefore I removed the export line from .zshrc and the problem has been solved.
To load a clean neovim:
nvim -u NONE -U NONE -N -i NONE
Actually I have an alias for that
alias vinone='nvim -u NONE -U NONE -N -i NONE'
This way you can type vinone and use your default neovim

difference between /anaconda3/bin/conda and /anaconda3/condabin/conda

inside shell when
which conda
I get
/anaconda3/bin/conda
while inside tmux I get
/anaconda3/condabin/conda
Anyone knows the difference or something wrong with my config?
Finally I found an answer here that worked for me. Basically as #shouya said there, this problem is because tmux's run-shell command runs a shell which doesn't read from user configs, thus tmux installed in /usr/local/bin will not be found. And best solution is to insert the following line:
set-environment -g PATH "/usr/local/bin:/bin:/usr/bin"
before the first run-shell/run command in your ~/.tmux.conf file, and leave everything else untouched.
Then reload ~/.tmux.conf file by
tmux source-file ~/.tmux.conf

How to get zsh to start automatically in Mac iTerm?

I am sure this is a configuration issue, but I cannot find what is wrong. I have zsh and oh-my-zsh installed on my new Mac view homebrew.
When I start terminal it doesn't load zhs theme or autocomplete unless I run zsh command to start it. After that all works fine.
However, all the aliases I setup in .zshrc file works fine without running zsh and there is no .bashrc file in the machine.
How can I make zsh to start automatically when I open iTerm.
You can change your default shell to zsh.
Using the below command, and type your password
chsh -s /bin/zsh
If you want to use brew managed zsh, you should append /usr/local/bin/zsh to the end of file /etc/shells, then run command chsh -s /usr/local/bin/zsh.
Then reopen your iTerm2, done.

How to open emacs gui/ide from mac terminal?

I'm trying to open files up on emacs outside of the terminal. I prefer a gui/ide environment when I code instead of doing it through a terminal. I initially thought that typing emacs filename.py would open that file through Emacs.app, however it only allowed me to edit the file through the terminal. When this didn't work, I looked into editing the .profile and .emacs files in my home directory but this was to no avail.
Maybe this is more intuitive than what I've read but I can't seem to figure it out. Any help is appreciated.
Assuming you have Emacs installed from Homebrew like this:
brew install emacs --with-cocoa
Just type the following command to open Emacs.app from terminal:
open -a Emacs filename.py
If you want all files opened in the same frame, instead of new frames, put this into your .emacs file:
(setq ns-pop-up-frames nil)
The best way to open files in Emacs from the terminal is the emacsclient command, which will open the file in your existing Emacs app (preventing startup time). If you're on OSX and you installed Emacs through Homebrew, the emacsclient binary will already be set up. (In your Emacs config, you have to include (server-start) somewhere.)
If you actually want to spin up a new GUI app instance instead, you can set up your own shell script and put it in your PATH somewhere before the existing emacs binary. It sounds like you're using Homebrew, which sets up the emacs binary as the following shell script:
#!/bin/bash
/usr/local/Cellar/emacs/24.3/Emacs.app/Contents/MacOS/Emacs -nw "$#"
The -nw is what prevents Emacs from opening in GUI mode. You can make your own emacs shell script and leave out -nw:
#!/bin/bash
/usr/local/Cellar/emacs/24.3/Emacs.app/Contents/MacOS/Emacs "$#"
To do what you want, you'd need to find the location of the actual binary contained in Emacs.app, and use that as the command instead of emacs. Most likely, it's at
/path/to/Emacs.app/Contents/MacOS/Emacs
Which, if you have Emacs.app in your Applications folder, as would be typical, would be
/Applications/Emacs.app/Contents/MacOS/Emacs
To set it up with a shorter command to use, you could try adding to your .profile (I don't know what shell you use) the following line, or whatever equivalent it has for your shell (This works for bash and zsh, at least):
alias emacsgui='/Applications/Emacs.app/Contents/MacOS/Emacs'
The modern way to go about this is by installing Emacs using Homebrew Cask:
brew cask install emacs
Source: this comment by Homebrew project leader Mike McQuaid, which reads:
Cocoa support for Emacs will not be accepted. This is provided by brew cask install emacs.
One should link emacs to /Applications if not already done,
brew linkapps emacs
to link the emacs to symlink emacs installed in Cellar. Once symlinked, you can open emacs by
open -a emacs
as already pointed out by #katspaugh
brew doesn't have cask command anymore.
I used brew install emacs and I can find Emacs app installed in my application directory.
You can also head to https://emacsformacosx.com and download the .dmg file.

Why does tmux erase terminal contents on editor exit?

Say I'm running tmux and use "ls" to get something on the screen. Then I enter Vim to edit some file. After exiting Vim, tmux erases whatever text is above the bash prompt (not like the clear command since the prompt stays in the same place).
Is there a way to prevent this behavior? I'm using tmux 1.3 in Terminal.app on OS X.
If your version of tmux has this option, add this line to your ~/.tmux.conf:
set-window-option -g alternate-screen on
Try putting this in your .vimrc file:
set t_ti= t_te=

Resources