{"id":15715821,"url":"https://github.com/gnapse/dotfiles","last_synced_at":"2025-03-30T20:18:37.132Z","repository":{"id":8790555,"uuid":"10481803","full_name":"gnapse/dotfiles","owner":"gnapse","description":"Config files to set up a system the way I like it.","archived":false,"fork":false,"pushed_at":"2016-11-07T18:35:13.000Z","size":177,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-05T23:01:09.567Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gnapse.png","metadata":{"files":{"readme":"README.md","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-06-04T15:26:08.000Z","updated_at":"2016-10-27T19:48:29.000Z","dependencies_parsed_at":"2022-09-20T05:20:49.637Z","dependency_job_id":null,"html_url":"https://github.com/gnapse/dotfiles","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gnapse%2Fdotfiles","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gnapse%2Fdotfiles/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gnapse%2Fdotfiles/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gnapse%2Fdotfiles/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gnapse","download_url":"https://codeload.github.com/gnapse/dotfiles/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246372743,"owners_count":20766635,"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","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":[],"created_at":"2024-10-03T21:43:10.474Z","updated_at":"2025-03-30T20:18:37.064Z","avatar_url":"https://github.com/gnapse.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# gnapse/dotfiles\n\nThese are config files to set up a system the way I like it.\n\nAfter some time using clones of someone else's dotfiles, I decided to roll out\nmy own. This has allowed me to learn and tweak things better to my liking.\nI have of course kept the ideas I've learned and liked from other dotfiles\ncollections.\n\n## Installation\n\nRun the following commands in your terminal.\n\n```terminal\ngit clone git://github.com/gnapse/dotfiles ~/.dotfiles\n~/.dotfiles/install\n```\n\nNote that the install location `~/.dotfiles` is arbitrary. You can install to\nany directory of your choice.\n\nAfter installing, open a new terminal window to see the effects.\n\n## Features\n\nThey say a picture is worth a thousand words, so here it is.\n\n![gnapse/dotfiles features screenshot](https://dl.dropboxusercontent.com/u/6173591/gnapse-dotfiles.png)\n\nAlso, don't be afraid of the code.  That's the best way to get to know all the\nfeatures, or learn how to do stuff in your own dotfiles or whatever.  However,\nit won't hurt to give a quick overview right here, so keep reading.\n\n### Shell\n\nThese dotfiles make use of [Oh-My-Zsh][] and are of course zsh-centric. Lots of\nother features are being configured by loading some built-in plugins within\nOh-My-Zsh.  My own customizations are provided via [some custom plugins and\na theme][].\n\n- The theme shows plenty of information in the prompt, namely username,\n  hostname, current working directory, ruby version, git status info and number\n  of background jobs active.\n- Lots of [Oh-My-Zsh][] plugins are being loaded, with all the features they\n  bring in, which is impossible to enumerate here, so feel free to dig into the\n  code.  Most important ones are related to the use of git, ruby, tmux and vim.\n- Zsh is configured to work in vi-mode, which makes a lot of sense when you're\n  already working in a vim-centric environment.\n- The shell is equipped right from the start with [rbenv][] for managing ruby\n  versions.\n\n### Tmux\n\nWhat's a terminal without a multiplexer?  Exactly.  So these dotfiles would\nmake a lot less sense without [tmux][].\n\n- `C-a` as the prefix key, because tmux's default is so awkward.\n- `C-S-Left/Right` for rapidly switching tmux windows.  These do not require\n  the prefix.\n- `C-j/C-k` to move a window to the left or right, allowing to easily rearrange\n  windows.\n- `C-h/j/k/l` to switch panes to the left, down, up and right directions.\n  These even works seamlessly accross vim splits and tmux panes, all thanks to\n  [a very clever setup][].\n- In copy mode, use `v` to start selecting, and `y` for yanking the selection,\n  just like vim.\n- Use the arrow keys after the prefix, to resize panes.\n- Colors, mouse and utf8 support are enabled right from the start.\n- [tmux-powerline](https://github.com/erikw/tmux-powerline) is used, so the\n  status bar is as sexy as it gets.\n- Includes a [fix](https://github.com/ChrisJohnsen/tmux-MacOSX-pasteboard) so\n  the OSX pasteboard can be accessed from tmux.\n\n### Vim\n\nVim is undoubtedly the jewl of these dotfiles, having a leading role in many\naspects.  It would be very difficult to provide an extensive list of all the\nfeatures and customizations in place, but here's a list of the highlights.\n\n- [pathogen][] for managing plugins.\n- The space character is used as the `\u003cleader\u003e` key.\n- A good deal of obvious stuff, like colors and syntax highlight support, smart\n  case and search as you type, line numbers, auto-hide buffers, persistent\n  undo, etc.\n- Open files using fuzzy name matching (a la TextMate's Cmd+T) with\n  [CtrlP](https://github.com/kien/ctrlp.vim).  Try typing `\u003cleader\u003et` (project\n  files), `\u003cleader\u003er` (recent files), `\u003cleader\u003eb` (buffer list) or `\u003cleader\u003eg`\n  (switch to tag).\n- Browse the files in the current project by typing `\u003cleader\u003ef` to activate\n  [Nerdtree](https://github.com/scrooloose/nerdtree).\n- `C-h/j/k/l` to switch to splits in the left, down, up and right directions.\n  These even works seamlessly accross vim splits and tmux panes, all thanks to\n  [a very clever setup][].\n- Type `\u003cleader\u003ea` to switch to alternate file (just like `C-^`).\n- `S-j/S-k` for page-down/page-up, just like `C-d/C-u`.\n- Type `\u003cleader\u003e` in front of a yank/put command to copy/paste to the OS\n  clipboard.  Type it in front of a delete command to delete without adding\n  deleted text to the yank history.\n- Bubble single lines and selection blocks up and down by typing `C-up/down`.  Indent in and\n  out with `Cmd+[/]` (this last one works in MacVim only).\n- Easily surround selected text and single words by pressing `\u003cleader\u003e`\n  followed by the surround character.  For instance, select some text, then\n  type `\u003cleader\u003e(` to surround that text in parenthesis.  Works with quotes and\n  all the common pairs of surround characters you know.\n- Type `\u003cleader\u003esf` or `\u003cleader\u003esn` in Ruby/Rails projects to run tests/specs\n  right from within Vim and see the output in a tmux panel (thanks to\n  [vimux](https://github.com/benmills/vimux) and\n  [vroom](https://github.com/skalnik/vim-vroom)).\n- Access the [undo history tree](https://github.com/sjl/gundo.vim) by typing\n  `\u003cleader\u003eu`.\n- Show the [yank history](https://github.com/vim-scripts/YankRing.vim) by\n  typing `\u003cleader\u003e\u003cleader\u003ey`.\n\nAll Vim plugins are included in these dotfiles using [pathogen][].  Check out\nthe [`vim/bundle`](https://github.com/gnapse/dotfiles/tree/master/vim/bundle)\ndirectory for a detailed list of each and every plugin available.  Read their\nrespective documentations if you're interested in what they do or how they're\nused, and check out for any plugin customzations or custom key-bindings in the\n[`vimrc`](https://github.com/gnapse/dotfiles/blob/master/vimrc) file.\n\n### Ruby and Rails\n\nSince Ruby and Rails both have a special place in these dotfiles,  here's a\nquick highlight of the related features provided.\n\n- As mentioned before, zsh is equipped right from the start with [rbenv][]\n  support, and the command prompt shows the current ruby version at any single\n  time.\n- [Oh-My-Zsh][] is configured to load several of its ruby-related plugins: pow,\n  bundler, gem, etc.\n- Vim has the bulk of ruby-centered customizations and plugins.  There are\n  plugins for invoking tests and specs, checking ruby code style, typing quick\n  snippets of code, support for satellite languages like CoffeeScript and Haml,\n  etc.  Again, check the vim configuration and bundles for these.\n- A special mention has to be made to the main\n  [ruby](https://github.com/vim-ruby/vim-ruby) and\n  [rails](https://github.com/tpope/vim-rails) plugins.  Both deserve a deeper\n  study of their features, so I encourage you to open vim and type `:help ruby`\n  and `:help rails`.\n- Support for satellite languages and frameworks, such as CoffeeScript, Haml,\n  Markdown, Rdoc, Cucumber, Rspec, etc.\n\n### Git\n\nThe most awesome kid on the block of code versioning, git has a strong presence\ntoo.\n\n- The shell prompt shows basic info about the current repository status, if\n  any.\n- [Oh-My-Zsh][] git plugin is loaded, with lots of aliases, etc.\n- Check out `:help fugitive` to get to know more about the outstanding\n  capabilities of Vim's leading git plugin,\n  [fugitive](https://github.com/tpope/vim-fugitive).  Also check out a short\n  series of screencasts on the subject in [Vimcasts][].\n\n## Customization\n\nCustomizations can be provided in dotfiles appended with `.local`:\n\n* `~/.aliases.local`\n* `~/.gitconfig.local`\n* `~/.tmux.conf.local`\n* `~/.vimrc.local`\n* `~/.zshrc.local`\n\nIn the case of Vim, it also loads any extra plugins located in the\n`~/.vim/bundle.local` directory, which are not tracked by git.\n\nAs these files are not under version control in this repository, they are\nsuitable to provide your own customizations on a per-user or per-computer\nbasis.  Perhaps you need some settings in that server, but not in your laptop\n;) right?\n\n## Credits\n\nMy only merit here is having assembled various pieces of configuration files\nand plugins to make things work the way I like it.  The real merit goes to the\noriginal authors of most of the tools and plugins I'm using, and to those from\nwhich I got inspiration or code snippets that I found useful.\n\nThe following is a list of the most important sources that should be credited\nfor this repo:\n\n* [Robby Russell](https://github.com/robbyrussell) for [Oh My Zsh][oh-my-zsh].\n* [Tim Pope][] for lots of wonderful Vim plugins.\n* [Drew Neil](https://github.com/nelstrom) for [Vimcasts][].\n* [Vincent Driessen](https://github.com/nvie) for inspiring most of my `.vimrc`.\n\n[Oh-My-Zsh]: http://github.com/robbyrussell/oh-my-zsh\n[some custom plugins and a theme]: https://github.com/gnapse/dotfiles/tree/master/zsh\n[tmux]: http://tmux.sourceforge.net\n[TextMate]:  http://github.com/textmate/textmate\n[pathogen]: http://github.com/tpope/vim-pathogen\n[vim-bundle]: https://github.com/gnapse/dotfiles/tree/master/vim/bundle\n[mpd]: http://www.musicpd.org/\n[rbenv]: https://github.com/sstephenson/rbenv\n[Ruby]: http://www.ruby-lang.org/\n[Rails]: http://rubyonrails.org/\n[a very clever setup]: http://robots.thoughtbot.com/post/53022241323/seamlessly-navigate-vim-and-tmux-splits\n[Tim Pope]: https://github.com/tpope\n[Vimcasts]: http://vimcasts.org\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgnapse%2Fdotfiles","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgnapse%2Fdotfiles","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgnapse%2Fdotfiles/lists"}