{"id":13898319,"url":"https://github.com/preservim/vim-thematic","last_synced_at":"2025-08-23T04:12:51.389Z","repository":{"id":12840583,"uuid":"15516157","full_name":"preservim/vim-thematic","owner":"preservim","description":"Alter Vim's appearance to suit your task \u0026 environ","archived":false,"fork":false,"pushed_at":"2022-02-13T12:37:19.000Z","size":3188,"stargazers_count":227,"open_issues_count":11,"forks_count":5,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-08-20T16:48:37.796Z","etag":null,"topics":["vim","vim-colorschemes","vim-plugin"],"latest_commit_sha":null,"homepage":"","language":"Vim script","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/preservim.png","metadata":{"files":{"readme":"README.markdown","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-12-29T22:40:15.000Z","updated_at":"2025-08-14T22:04:59.000Z","dependencies_parsed_at":"2022-09-17T05:51:54.633Z","dependency_job_id":null,"html_url":"https://github.com/preservim/vim-thematic","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/preservim/vim-thematic","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/preservim%2Fvim-thematic","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/preservim%2Fvim-thematic/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/preservim%2Fvim-thematic/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/preservim%2Fvim-thematic/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/preservim","download_url":"https://codeload.github.com/preservim/vim-thematic/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/preservim%2Fvim-thematic/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271740731,"owners_count":24812642,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-23T02:00:09.327Z","response_time":69,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["vim","vim-colorschemes","vim-plugin"],"created_at":"2024-08-06T18:04:14.067Z","updated_at":"2025-08-23T04:12:51.357Z","avatar_url":"https://github.com/preservim.png","language":"Vim script","funding_links":[],"categories":["Vim Script"],"sub_categories":[],"readme":"# vim-thematic\n\n\u003e Conveniently manage Vim’s appearance to suit your task and environment\n\n![demo](http://i.imgur.com/xfx69v3.gif)\n\n## Features\n\n* Groups global settings (like colorscheme, ruler, etc.) into ‘themes’\n* Pure Vimscript with no dependencies\n* Stays out of your way, except where you want it\n* Integrates with [airline](https://github.com/bling/vim-airline)\n* Support for GUI-based Vim includes: font, linespace, fullscreen,\n  transparency, and screen columns/lines\n\n## Why _thematic_?\n\nYou may be among the many Vim users who keep things simple by sticking\nwith a single theme that suits their needs, configuring it in their\n`.vimrc` by setting the color scheme, font and status line.\n\nOr you might instead be among the users who instead configure the visual\ndetails of Vim to match the lighting conditions or task at hand, or even\nto suit their mood. For example, you might choose a theme that is less\nfatiguing to your eyes given the ambient lighting conditions, where\nyou'll have a muted theme for a dark room and a high-contrast theme for\nuse in a bright one.\n\nWriting code, you want a status bar, ruler, a hint of transparency and\na programming font. But if you're writing an essay or screenplay, you\nwant the screen stripped of all extraneous detail, with a traditional\nfont and generous left and right margins.\n\nManaging such an multi-theme environment in Vim has traditionally been\na hassle. The _thematic_ plugin is intended to solve that problem,\nproviding you flexibility and convenience.\n\nGUI-based Vim users can complement a colorscheme with a particular\ntypeface. For example, the lightweight anti-aliased typeface like\nAdobe's _Source Code Pro ExtraLight_ may look great against a black\nbackground but be unreadable against a white one, so you’ll only pair it\nwith an appropriate colorscheme.\n\n## Installation\n\nYou can install using your favorite Vim package manager. (E.g.,\n[Pathogen][pathogen], [Vundle][vundle], or [Plug][plug].) If you are using\na recent version of vim or neovim, you can also use native package\nsupport. (See [:help packages][packages].)\n\n[pathogen]: https://github.com/tpope/vim-pathogen\n[vundle]: https://github.com/VundleVim/Vundle.vim\n[plug]: https://github.com/junegunn/vim-plug\n[packages]: https://vimhelp.org/repeat.txt.html#packages\n\n## Configuration\n\n### Themes\n\nA few of Vim's standard `colorschemes` are configured by default, but\nyou'll want to override them with your own, like this:\n\n```vim\nlet g:thematic#themes = {\n\\ 'bubblegum'  : {\n\\                },\n\\ 'jellybeans' : { 'laststatus': 0,\n\\                  'ruler': 1,\n\\                },\n\\ 'pencil_dark' :{'colorscheme': 'pencil',\n\\                 'background': 'dark',\n\\                 'airline-theme': 'badwolf',\n\\                 'ruler': 1,\n\\                },\n\\ 'pencil_lite' :{'colorscheme': 'pencil',\n\\                 'background': 'light',\n\\                 'airline-theme': 'light',\n\\                 'ruler': 1,\n\\                },\n\\ }\n```\n\nName your themes as you wish. Note that if you don't specify a\n`colorscheme` property, _thematic_ will attempt to load one using your\ntheme name. (See bubblegum and jellybeans example above.)\n\nTo curb redundancy among your themes, you can specify a dictionary of\ndefault values, to be shared by all of your themes:\n\n```vim\nlet g:thematic#defaults = {\n\\ 'airline-theme': 'jellybeans',\n\\ 'background': 'dark',\n\\ 'laststatus': 2,\n\\ }\n```\n\nNote that an explicit setting in a theme will take precedence over these\ndefaults.\n\nGUI-based Vim users have additional options available in theming. For example,\n\n```vim\nlet g:thematic#themes = {\n\\ 'bubblegum'  : { 'typeface': 'Menlo',\n\\                  'font-size': 18,\n\\                  'transparency': 10,\n\\                  'linespace': 2,\n\\                },\n\\ 'pencil_dark' :{ 'colorscheme': 'pencil',\n\\                  'background': 'dark',\n\\                  'airline-theme': 'badwolf',\n\\                  'ruler': 1,\n\\                  'laststatus': 0,\n\\                  'typeface': 'Source Code Pro Light',\n\\                  'font-size': 20,\n\\                  'transparency': 10,\n\\                  'linespace': 8,\n\\                },\n\\ 'pencil_lite' :{ 'colorscheme': 'pencil',\n\\                  'background': 'light',\n\\                  'airline-theme': 'light',\n\\                  'laststatus': 0,\n\\                  'ruler': 1,\n\\                  'typeface': 'Source Code Pro',\n\\                  'fullscreen': 1,\n\\                  'transparency': 0,\n\\                  'font-size': 20,\n\\                  'linespace': 6,\n\\                },\n\\ }\n```\n\n_thematic_ stays out of your way, ignoring any settings that you aren't\nexplicitly setting through your _thematic_ configuration. For example, you\ncan `set guifont=` in your .gvimrc independent of _thematic_.\n\n### Setting an initial theme\n\nBy default, _thematic_ doesn’t initialize a theme when you start Vim.\n\nBut you can have it do so by specifying a theme to load in your `.vimrc`:\n\n```vim\nlet g:thematic#theme_name = 'pencil_dark'\n```\n\n### Commands\n\nCommands can be used to navigate through your available themes. For\ninstance, running `:ThematicFirst` invokes _thematic_ and chooses the\nfirst theme, alphabetically.\n\n```vim\n:Thematic {theme_name} \" load a theme by name (with tab completion)\n:ThematicFirst         \" switch to the first theme, ordered by name\n:ThematicNext          \" switch to the next theme, ordered by name\n:ThematicPrevious      \" switch to the previous theme, ordered by name\n:ThematicRandom        \" switch to a random theme\n```\n\n_thematic_ does not map any keys by default, but you can easily do so in\nyour `.vimrc` file:\n\n```vim\nnnoremap \u003cLeader\u003eT :ThematicNext\u003cCR\u003e\nnnoremap \u003cLeader\u003eD :Thematic pencil_dark\u003cCR\u003e\nnnoremap \u003cLeader\u003eL :Thematic pencil_lite\u003cCR\u003e\n```\n\n### What theme properties can I set?\n\nMany properties are available for terminal-only and GUI-based Vim.\n\nNote that you can set these properties in `g:thematic#defaults` and\n`g:thematic#themes`, where a setting in the latter overrides a setting in\nthe former.\n\nFor terminal or GUI-based Vim:\n* `laststatus` (0, 1, or 2) - controls the visibility of the status bar\n* `ruler` (0 or 1) - as alternative to status bar, shows minimal position\n  details in lower right\n* `colorscheme` ('pencil', e.g.) - set the colors for all windows\n  (optional if your theme name is the same as the colorscheme name)\n* `background` ('dark' or 'light') - colorschemes like pencil and\n  solarized can be further configured via background\n* `airline-theme` ('jellybeans', e.g.) - plugin for theming your status\n  bar\n* `sign-column-color-fix` (0 or 1) - temporarily modifies colorscheme to\n  force gutter background to match Normal background\n* `diff-color-fix` (0 or 1) - temporarily modifies colorscheme to force\n  diff character color to a standard red/green/yellow/blue\n* `fold-column-color-mute` (0 or 1) - temporarily modifies colorscheme to\n  hide indicators, matching Normal text background\n* `number-column-color-mute` (0 or 1) - temporarily modifies colorscheme\n  to hide numbers, matching Normal text background\n\nThe following options are for GUI-based Vim only (they will be ignored if\nyou're running a terminal-based Vim):\n\nTypography-related:\n\n* `typeface` ('Source Code Pro ExtraLight', e.g.) - name of font\n* `font-size` (1+) - point size of font\n* `linespace` (0+) - pixel spacing between lines to allow the type to breathe\n\nScreen-related:\n\n* `fullscreen` (0 or 1) - if 1, force a switch to fullscreen\n* `fullscreen-background-color-fix` (0 or 1) - optional change of color of\n  the background (or border) to match Normal text background\n* `columns` (1+) and `lines` (1+) - typically used to manage the height\n  and width of the text area in `fullscreen` mode\n* `transparency` (0=opaque, 100=fully transparent) - view details of\n  window and desktop beneath Vim\n\n## GUI fullscreen capabilities\n\n_thematic_ supports fullscreen capabilities for GUI-based Vim, including\nchanging the fullscreen background to match the text background.\n\n### Disabling fullscreen\n\nBy design, once enabled, _thematic_ won't disable fullscreen, as it can\nerode the user experience. You can still disable manually per the\ncommand:\n\n```\n:set nofullscreen\n```\n\nNote that when installed on a GUI-based Vim, _thematic_ will override the\nfullscreen settings, specifically `fuoptions` to get better control over\nscreen lines and columns and the fullscreen background.\n\n### Narrow and Widen\n\nTo narrow and widen the visible screen area _without_ changing the font\nsize, _thematic_ provides a couple of handy commands you can map to keys\nof your choice. For example, to map this feature to the `Command-9` and\n`Command-0` keys in MacVim, add to your `.gvimrc`:\n\n```vim\nnoremap \u003csilent\u003e \u003cD-9\u003e :\u003cC-u\u003eThematicNarrow\u003ccr\u003e\nnoremap \u003csilent\u003e \u003cD-0\u003e :\u003cC-u\u003eThematicWiden\u003ccr\u003e\ninoremap \u003csilent\u003e \u003cD-9\u003e \u003cC-o\u003e:ThematicNarrow\u003ccr\u003e\ninoremap \u003csilent\u003e \u003cD-0\u003e \u003cC-o\u003e:ThematicWiden\u003ccr\u003e\n```\n\nThis is especially useful in fullscreen mode to adjust the side margins.\nIt also complements `Command-Minus` and `Command-Equals` to adjust font\nsize.\n\n## FAQ\n\n### Q: I want to set `cursorline`, `wrap`, `textwidth`, `foldcolumn`, etc. in my themes.\n\nAt present, _thematic_ focuses exclusively on global settings. The\nsettings above are not globally-scoped but are instead scoped to\nindividual buffers and windows. Until we determine a good approach to\nsupport these 'lesser' scoped settings, you can set them for all\nbuffers via your `.vimrc` or by file type using the `autocmd FileType`\nfeature in Vim.\n\nSettings that actively modify your files, such as `textwidth`, aren't\nlikely to ever be part of _thematic_.\n\n### Q: How can I configure Vim to emulate markdown editors like IA Writer?\n\nIt works best with fullscreen in a GUI-based Vim. A few steps are\ninvolved:\n\n(1) Install a word processing plugin like `pencil` and a suitable\ncolorscheme:\n\n* [vim-pencil](https://github.com/preservim/vim-pencil) - to configure\n  buffers for word processing\n* [vim-colors-pencil](https://github.com/preservim/vim-colors-pencil) - an\n  iAWriter-like colorscheme\n\n(2) Edit your `.gvimrc` to disable the tool bar, etc.\n\n```vim\nset antialias\nset guicursor+=a:blinkon0    \" disable cursor blink\nset guioptions-=r   \"kill right scrollbar\nset guioptions-=l   \"kill left scrollbar\nset guioptions-=L   \"kill left scrollbar multiple buffers\nset guioptions-=T   \"kill toolbar\n```\n\n(3) Finally, create a theme configured to your tastes:\n\n```vim\nlet g:thematic#themes = {\n\\ 'iawriter'   : { 'colorscheme': 'pencil',\n\\                  'background': 'light',\n\\                  'columns': 75,\n\\                  'font-size': 20,\n\\                  'fullscreen': 1,\n\\                  'laststatus': 0,\n\\                  'linespace': 8,\n\\                  'typeface': 'Cousine',\n\\                },\n...\n\\ }\n```\n\nNon-GUI terminal-based emulation is trickier, as there's no easy way to\ncreate a generous right margin. You can approximate it by switching from\nsoft-wrap to hard line breaks with `vim-pencil` and using with a narrow\n`textwidth`:\n\n```vim\nautocmd FileType markdown set foldcolumn=12 textwidth=74\n```\n\nSee the “Narrow and Widen” feature above to adjust the side margins\ninteractively.\n\n### Q: Using MacVim, the fullscreen background color isn't working as expected. How do I change its behavior?\n\nTo have the fullscreen background's color set by _thematic_, enter the\nfollowing in OS X Terminal:\n\n```\n$ defaults write org.vim.MacVim MMNativeFullScreen 0\n```\n\nOr, if you prefer that your fullscreen window float against a standard\nbackground:\n\n```\n$ defaults write org.vim.MacVim MMNativeFullScreen 1\n```\n\n(Note: due to OSX/MacVim bugs, `fullscreen` may or may not work \nfor you in Yosemite (OS X 10.10). For example, you might encounter a persistent \nmenu bar, an odd screen offset, or screen tearing. In such cases, try \n`set lines=` or `set columns=` with reduced values to fix things.) \n\n### Q: How can I apply my own custom highlights?\n\n_thematic_ doesn't yet support theme-specific customization beyond the `-fix`\nand `-mute` options mentioned above, but you can ensure that custom highlights\nare used in your `.vimrc`, for example:\n\n```vim\naugroup MyCustomHighlights\n  autocmd!\n  autocmd colorscheme *\n   \\ highlight SpellBad   gui=bold guibg=#faa |\n   \\ highlight SpellCap   gui=bold guibg=#faf |\n   \\ highlight SpellRare  gui=bold guibg=#aff |\n   \\ highlight SpellLocal gui=bold guibg=#ffa\naugroup END\n```\n\nThis will apply across all themes, as well as manual colorscheme changes.\n\n### Q: In certain cases, the screen doesn’t properly redraw. Can you fix this?\n\nYou have encountered an outstanding bug that hasn’t yet been diagnosed and\nfixed. In the meantime, set up a handy key to force a redraw when the\nredraw does not occur. In your `.vimrc`:\n\n```vim\n\" \u003cc-l\u003e to clear the highlight, as well as redraw the screen\nnoremap \u003csilent\u003e \u003cC-l\u003e :\u003cC-u\u003enohlsearch\u003ccr\u003e\u003cC-l\u003e\ninoremap \u003csilent\u003e \u003cC-l\u003e \u003cC-o\u003e:nohlsearch\u003ccr\u003e\n```\n\nIf you can fix this problem, a pull request would be welcome.\n\n## Monospaced fonts\n\nWhether using terminal or GUI-based Vim, a good monospaced font can\nimprove your editing experience. You already have a few installed (such\nas Menlo on OS X.) Many more are available to download for free:\n\n* [Cutive Mono](https://fonts.google.com/specimen/Cutive+Mono) (serif)\n* [Droid Sans Mono](https://fonts.google.com/fonts/specimen/Droid+Sans+Mono)\n* [Hermit](https://pcaro.es/p/hermit/)\n* [Inconsolata](https://fonts.google.com/specimen/Inconsolata) (2 weights)\n* [Linux Libertine Mono O](https://sourceforge.net/projects/linuxlibertine/) (serif)\n* [Meslo](https://github.com/andreberg/Meslo-Font)\n* [Oxygen Mono](https://fonts.google.com/specimen/Oxygen+Mono)\n* [PT Mono](https://fonts.google.com/specimen/PT+Mono)\n* [Share Tech Mono](https://fonts.google.com/specimen/Share+Tech+Mono)\n* [Source Code Pro](https://fonts.google.com/specimen/Source+Code+Pro) (7 weights)\n\nThe following collections feature **bold** and *italic* variations,\nto make the most of colorschemes that use them:\n\n* [Anonymous Pro](https://fonts.google.com/specimen/Anonymous+Pro) (serif)\n* [Courier Prime](http://quoteunquoteapps.com/courierprime/) (serif)\n* [Cousine](http://fonts.google.com/specimen/Cousine)\n* [Fantasque Sans Mono](https://openfontlibrary.org/en/font/fantasque-sans-mono)\n* [Liberation](https://fedorahosted.org/liberation-fonts/)\n* [Luxi Mono Regular](https://www.fontsquirrel.com/fonts/Luxi-Mono) (serif)\n* [Ubuntu Mono](https://fonts.google.com/specimen/Ubuntu+Mono)\n\n## See also\n\nIf you find this plugin useful, you may want to check out these others\noriginally by [@reedes][re]:\n\n* [vim-colors-pencil][cp] - color scheme for Vim inspired by IA Writer\n* [vim-lexical][lx] - building on Vim’s spell-check and thesaurus/dictionary completion\n* [vim-litecorrect][lc] - lightweight auto-correction for Vim\n* [vim-pencil][pn] - rethinking Vim as a tool for writers\n* [vim-textobj-quote][qu] - extends Vim to support typographic (‘curly’) quotes\n* [vim-textobj-sentence][ts] - improving on Vim's native sentence motion command\n* [vim-wheel][wh] - screen-anchored cursor movement for Vim\n* [vim-wordy][wo] - uncovering usage problems in writing\n* [vim-wordchipper][wc] - power tool for shredding text in Insert mode\n\n[re]: https://github.com/reedes\n[cp]: https://github.com/preservim/vim-colors-pencil\n[lx]: https://github.com/preservim/vim-lexical\n[lc]: https://github.com/preservim/vim-litecorrect\n[pn]: https://github.com/preservim/vim-pencil\n[ts]: https://github.com/preservim/vim-textobj-sentence\n[qu]: https://github.com/preservim/vim-textobj-quote\n[wh]: https://github.com/preservim/vim-wheel\n[wo]: https://github.com/preservim/vim-wordy\n[wc]: https://github.com/preservim/vim-wordchipper\n\n## Future development\n\nIf you’ve spotted a problem or have an idea on improving this plugin,\nplease post it to the [GitHub project issue page][issues].\n\n[issues]: https://github.com/preservim/vim-thematic/issues\n\n\u003c!-- vim: set tw=74 :--\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpreservim%2Fvim-thematic","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpreservim%2Fvim-thematic","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpreservim%2Fvim-thematic/lists"}