Different color in Vim while using screen - vim

I'm currently using color scheme from http://vimcolors.com/535/jay/dark in iTerm on Mac OSX. However, I found the color became different when I use Vim in screen, what setting should I look into here?
Without screen:
With screen:
> echo $TERM
xterm-256color
> cat ~/.screenrc
...
term xterm-256color

I hope it isn't too late.
Normally, on your ~/.vimrc there might be a line
colorscheme yourColorScheme
where yourColorScheme is one of the .vim color configuration file your can find in /usr/share/vim/vim80/colors/, without the .vim extension
Example, I want to use /usr/share/vim/vim80/colors/blue.vim configuration file, I do
colorscheme blue
If this line isn't written in .vimrc, then vim will select a default color configuration file and that selection might be different while using screen.
I had the same problem and solve it by adding this line à the end of the file.
The only distasteful thing is that you will probably have to try all the configuration listed in /usr/share/vim/vim80/colors/ to find the one you liked (I advise you to open a terminal with your ~/.vimrc opened in to test the differents colorshemes, a second terminal where you vim a file that shows you the good syntax color you like, and a third and a third where you launch screen and vim the same file to see the new syntax color and compare)

Related

E185: Cannot find color scheme*

I have been customizing my vimrc file but for some reason, no colorschemes work. Whenever I try to change the colorscheme, it just gives me:
E185: Cannot find color scheme '*'
I checked the color folder to make sure I actually have colors and I do. For example the first item in the color folder is blue.vim but when I put colorscheme blue in the vimrc, it just gives
E185: Cannot find color scheme 'blue'
when I start Vim and the colorscheme doesn't apply. I also tried changing the colorscheme from within Vim and it also returns the same error. All the other vimrc settings that I've tried work so far.
For those using Plug as plugin manager, the problem may be solved by setting the color scheme after declaring the plugin that provides the theme:
call plug#begin()
Plug 'rakr/vim-one' " tell Vim to load the theme/plugin
call plug#end()
colorscheme one " set the color scheme after the theme provider has been loaded
This sounds like a problem with your 'runtimepath' option. If you use a plugin manager, these usually extend that. The default location should be ~/.vim/colors. Please check with
:set runtimepath?
There should be a ~/.vim in there (or equivalent).
If all else fails, you could also just :source /full/path/to/your/color.vim
For me it worked by removing the extension from the colorscheme file.
Try to rename blue.vim to blue.
I recently had this error. The problem in my case was that the name of the colorscheme in the file was different from the file name. Renaming the colorscheme in the file fixed it for me.
In COLOR1.vim:
let g:colors_name = "COLOR2"
Changing to:
let g:colors_name = "COLOR1"
fixed the problem.
I assume that changing the file name would also fix this.
This may also be due to entries/artifacts in your configuration files (~/.vimrc,system vimrc), or if you use the "vim -u ..." command line option to point to a custom configuration file.
The artifacts could be something like:
set rtp -=$HOME/.vimrc
set rtp -=$HOME/.vimrc/after
set runtimepath -= $HOME/.vimrc
...etc...
If you find these entries in your configuration files, then comment them out to see if the error goes away.
These are often entries in test configurations of vim to be used only in special instances. If you used such a test configuration file as the template for your routine vim configuration, then they are likely uneccessary.

Fail to set font in Macvim

I am configuring macvim on Mac OS X Mavericks. I type "set guifont=Menlo\ 14" in both ~/.vimrc and ~/.gvimrc but the editor remains displaying in courier.
I insert ":set guifont?" and it reveals "guifont=Menlo\ 14". I overviewed the content of .vimrc and .gvimrc but found no other line overriding the guifont setting.
I have checked several posts in stack overflow but cannot yet find the solution. Wish to get some help, thanks for anticipation.
The ideal way of going about doing this is by invoking the following command from vim :
set guifont=*
That will open a font selection dialog box and you can select whatever you would like there. Once done, you should then check what the option was set to by using the command you mentioned yourself :
set guifont?
Now you should put the output of that in your .gvimrc (not .vimrc) and additionally you'll need to escape the spaces like you're doing already. There might be subtle mistakes in what you're setting yourself, the font size for instance can sometimes be set in different ways.
On my version of MacVim (7.4.258) and running EL Kapitan, putting
set guifont=*
in .vimrc caused MacVim to spit out the following error (when run from the command line, starting it from the Dock caused it to just not run at all):
E665: Cannot start GUI, no valid font found
So it seems the correct way is to start MacVim, use the Edit > Font > Show Font menu, pick a font, then use
set guifont?
to find the line to add to your .vimrc
Also remember to use forward slashes to escape any spaces in the font name.
To change font, use Edit -> Font -> Show Fonts and selected a font.
Unfortunately this setting gets wiped out with each update of MacVim.
To have your font setting persisted in MacVim add this to your ~/.gvimrc
set guifont=Hack\ Nerd\ Font:h12

gvim color scheme to match vim in xterm

I've the same question as Change GVim Color Scheme to be Like Command Line Vim
I specially like the 'darkblue' scheme on vim (through putty). Can there be some script which changes the darblue color scheme and changes the guibg and guifg to match the values in ctermbg and ctermfg.
First you must be aware, maybe you are, that most terminal emulators come with the ability to let the user define a 16 colors default palette. If 256 colors support is not activated explicitely, most - if not all - terminal emulators will default to those 16 colors.
Because each terminal emulator comes with its own default colors and those can be modified by the user there's no way to tell the value of DarkRed or even Black without actually looking at the configuration file or preferences window of your terminal emulator.
Assuming that you are not running in 256 colors mode, you should find where the default/custom colors are defined in your terminal emulator and note their hexadecimal value.
Here is my own colorscheme, in Gnome terminal:
Once you have all the values, you can make a copy of the colorscheme:
$ cp /usr/share/vim/vim7x/colors/darkblue.vim ~/.vim/colors/darkblue.vim
and change all the guibg and guifg to the values you noted earlier.
Good luck.
Vivify provides colorschemes that usually support both terminal vim and gvim. Try downloading your scheme there.
you can use this way...
:colorscheme darkblue
this is worked in the gvim and xterm.
if you want to change the command line vim you can use this method.
this is same like as the gvim.
first you can type :colorscheme then press the tab it will give more color scheme.
which you you can set.
Instead of trying to downgrade the GVIM colors to the limited set of terminal colors, I would (assuming you have a "modern" terminal emulator that supports 256 colors) use the CSApprox plugin to get a very close rendition of the GVIM colors in the console, i.e. upgrade the terminal colors.
I'm surprised this isn't up here. There's a plugin called csapprox that does exactly this. The coolest thing is that it does it with no configuration. Just set your colorscheme in your vimrc and it automatically loads the colors correctly in terminal vim. Add it to Vundle:
Bundle 'godlygeek/csapprox'
And restart Vim. The only issue I've found is that sourcing your vimrc breaks it. You'll have to restart vim every time you want to source the vimrc with :so ~/.vimrc.

How do I make a vim color scheme work with gvim?

I am trying to use this color scheme
https://github.com/goatslacker/mango.vim
It works when I open vim from the command line. But I usually open files from the file manager GUI and that opens them in gvim. The color scheme displays a white background in gvim. How do I fix it so it displays a dark background?
I've looked at the mango.vim file and it has the line set background=dark but apparently that is not working.
Vim separates between term, cterm (color terminal) and gui since they are capable of handling different numbers of colors
mango.vim only gives highlighting instructions for cterm. If it were for gui aswell it would look like this:
hi Comment term=bold ctermfg=Red guifg=Red0
So if your color-scheme lacks gui support it will reset to default.

vim colorschemes not changing background color

I try to apply various color schemes in vim that I have seen on the net. Whatever scheme I choose, the background remains white, even though screenshots of the applied scheme shows that the background should be colored.
In some schemes, some of the background change color, but space right of lines containing text still remains white.
I'm using Vim 7.2 on a mac. I have just started messing with non-gui applications, so everything should be pretty much as it was out of the box..
Does the overall settings for the terminal window have something to do with it?
When running macvim, everything looks ok. Its only when starting vim from the terminal things looks strange..
I have this in my .vimrc and it solved this problem for me using while using PuTTY.
set t_Co=256
set background=dark
colorscheme mustang
highlight Normal ctermbg=NONE
highlight nonText ctermbg=NONE
It's important to load the colorscheme before the ctermbg settings in .vimrc because they need to override the same ones set by the colorscheme. This also means you can't switch colorscheme while Vim is running and expect it to work.
I'm adding a second answer from me because it's very different from my first answer and may point to actual problem.
If you look at the actual website for the colorscheme here:
Molokai website
you will see a question very similar to yours. Here's answer given, which suggests trying command :set t_Co=256 in your vimrc to see if it fixes things:
"- Make sure you’re using a console terminal capable of 256 colors; not all of them do (particularly on mac). You might need to explicitly force Vim to use that by doing “set t_Co=256″ on your .vimrc file.
- The windows console is well… totally unsupported, that only does 16 colors so it’s a mess"
In linux I had export TERM=xterm-256color in my .bashrc. That caused vim to look like this (after setting set t_Co=256):
When I removed that line from my .bashrc and opened a new terminal (exec bash didn't do it) This is what I get:
Terminals are usually limited to 256 colors while GUI are only limited by color depth of your desktop environment, typically 2^32.
So even if there is lots of vim color scheme available around, implicitly they are often designed for the GUI and won't work for the terminal version.
If you look at color schemes on vim.org, there is often a mention of GUI or 256. So you have to chose which to use depending on the context.
To convert a GUI scheme to terminal you can use the following plugin :
CSApprox.
You can also use a different colorscheme depending on the context, add the following in your .vimrc:
if has("gui_running")
colorscheme [using any color you want]
else
colorscheme [using 256 colors]
endif
I think the problem could be the way the default color is changed by the colorscheme. I've looked at some colorschemes that set default merely by:
set background=light
or
set background=dark
Not sure what limitations of those are. I don't think those work in terminals.
In any case, you should be able to manually set background in a terminal by using the 'Normal' highlight. Insert it into a spot before most of the 'hi' commands in the colorscheme file and it should provide defaults they will work with. For example:
hi Normal ctermbg=White ctermfg=Black guifg=Black guibg=White
Change ctermfg (color terminal foreground) and ctermbg (color terminal background) to be whatever you want (or whatever color you were expecting to see in the colorscheme but now aren't seeing). (Remember, though, if the colorscheme already has a setting for hi Normal then this probably isn't your problem.)
For ctermbg and ctermfg you can enter color names, but I think there is only a fairly limited number:
Black
DarkBlue
DarkGreen
DarkCyan
DarkRed
DarkMagenta
Brown, DarkYellow
LightGray, LightGrey, Gray, Grey
DarkGray, DarkGrey
Blue, LightBlue
Green, LightGreen
Cyan, LightCyan
Red, LightRed
Magenta, LightMagenta
Yellow, LightYellow
White
Otherwise you should be able to use a number from 0 to 255 in place of the color name. Or this script gives rough idea, and lets you see how you could also set up to use more color names:
Vim script with color settings
Also, there are a number of scripts that help you use or convert colorschemes written for gui for use with cterm. E.g.,:
Colorscheme support for cterm
Does the overall settings for the terminal window have something to do with it?
Maybe, but I'm pretty sure a properly written Vim colorscheme will override any terminal settings you've made. At least they do for me in Windows and on Ubuntu. . .
You need to add set termguicolors to your ~/.vimrc
I tested t_Co=256 and other options, but none worked, only set termguicolors
After this you can use the command set bg=light or set bg=dark to see witch one looks better (some vim color schemes accept both options).
Here is a list of terminals that are compatible with termguicolors: https://gist.github.com/XVilka/8346728#now-supporting-true-color
I had the same problem and found out that the answer to this question is actually threefold, where fixing only two of the three isn't enough. You'll need to have:
256-color support in your terminal - Putty with default settings does have this
Vim has to recognize that the terminal is 256-color capable: "set t_Co=256" in your .vimrc will do it
The color scheme needs to have support for color terminals with ctermbg and ctermfg attributes for highlights, not just the gui*-versions. http://www.vim.org/scripts/script.php?script_id=2682 should be able to provide these automatically, and CSApprox I'm using most definitely does, but requires either +gui -compiled Vim or a recent enough Vim version (7.3 or newer).
The third one seems to be the most commonly missed requirement. I wrote a short piece on my own fumblings on this subject just this morning: http://codeandlife.com/2013/09/22/vim-colorschemes-with-putty-aka-gui-vs-xterm-color256/
Final gotcha that happened to me while trying different settings was that when the colors did work, only areas of screen with text had the proper background color. Re-checking Putty Terminal setting "Use background colour to erase screen" fixed that final issue for me.
Does the overall settings for the terminal window have something to do with it?
Yes, terminal parameters override vim parameters (at least in OSX and iTerm). For example, I have a following script in /Users/[username]/.bashrc
setBackground() {
osascript -e "tell application \"iTerm\"
set current_terminal to (current terminal)
tell current_terminal
set current_session to (current session)
tell current_session
set background color to $1
end tell
end tell
end tell"
}
vim() {
(setBackground "{65025,65025,65025}" &)
(exec vim $*)
}
The above remaps terminal vim command to execute a background color change before executing vim. Background color function is applescript (I copied the script from somewhere...). It works for iTerm. I belive that you can adapt this to work with terminal (apple product + apple script -> should work).
br,
Juha
Use this rule if you use Vim through SSH:
Add to your local .bashrc:
export TERM=xterm-256color
Remove from .bashrc any TERM definitions.
If you use same .bashrc on both (local and remote), use temporary environment variable and never set TERM globally:
alias color-ssh='TERM=xterm-256color ssh user#host'
This works for me for switching backgrounds:
colorscheme hemisu
function! g:ToggleBackground()
if &background != 'dark'
set background=dark
else
set background=light
colorscheme hemisu
endif
endfunction
nnoremap <silent> <F3> :call g:ToggleBackground()<CR>
Also try setting light background to something like ctermbg=231, so that tmux handles it better.
I have similar issue that the background color of indentation guides (nathanaelkane's vim-indent-guides) cannot be displayed in my Windows Cygwin's mintty terminal.
I solved the issue with a line Term=xterm-256color in ~/.minttyrc (equivalent to set via mintty's Options GUI: Terminal -> Type -> xterm-256color. This has the effect export TERM=xterm-256color. Without this, mintty default to TERM="xterm", which result in vim's t_Co=8 (instead of t_Co=256) and cannot show some background color.
Checklist:
echo $TERM in bash should give xterm-256color.
in vim, :set t_Co should give t_Co=256.

Resources