Giter VIP home page Giter VIP logo

atomfiles's Introduction

Substantial's Atom Config

Installation instructions

If you don't have it already, download the Atom editor. Install it, run it at least once and be sure to quit it, then:

cd ~
# If you have an atom config already:
mv .atom .atom-bak
git clone [email protected]:substantial/atomfiles.git .atom
cd .atom && bin/update-packages

Goal

We want to build a config that we enjoy using and that we all feel comfortable and productive in.

Tenets

  • Tenets should be agreed upon, discussed, modified or removed if they do not fit.
  • This config should be usable by all disciplines and all skill levels. It should be approachable enough for all, but powerful enough for power users.
  • There is no owner. All at Substantial have an equal say in what goes in it.
  • No forks, we should all run off of master. It's ok to use branches to experiment with things.
  • Performance is an important part of the experience and should not be neglected. Poorly performing addons should be optimized or removed.
  • No Vim mode. No Emacs mode. It is good to take inspiration from them, but we should see if we can build something as usable for all without that as a wholesale starting point. Readline keys are great and fine, but we should be sure to keep standard OS X arrow key movements as well.
  • Avoid overriding keys common to other OS applications (like cmd+s).
  • Try to avoid overriding default atom key bindings. If multiple keys are bound to the same thing (like cmd+t and cmd+p) it is more OK if the less common one is overridden.
  • It is never finished. It should be refined, added to and optimized indefinitely.
  • Be mindful of the fact that others use this config. If you have good reason to make huge changes, communicate them and seek advice on them. We shouldn't worry about backwards compatibility too much, but we should be mindful.

Key Bindings

Most of the default Key Bindings are still enabled. Below are custom and particularly important key bindings.

Key Command Preview
               | **File Management** |

⌥⌘N | Advanced New File | ⌥⌘O | Advanced Open File | ⌃- | Toggle Tree View | ⌃X C | Duplicate File | ⌃X M | Move/Rename File | ⌃X D | Delete File |   | | | Fuzzy File Finder | ⌘P | Open Fuzzy File Finder | ⌘B | Open Fuzzy File Finder for recently opened files | ⌃S | Open file in horizontal split | ⌃V | Open file in vertical split |   | | | Window Navigation | ⇧⌘K | Focus Previous Pane | ⇧⌘J | Focus Next Pane | ⌥⌃P | Toggle automatic pane resizing |   | | | Editing | ⌃I | Auto Indent | ⌃Y | Paste from kill ring (press repeatedly to toggle through things previously copied.) | clip-history example ⇧⌃Y | Paste last thing pasted | ⇧⌘' | Toggle quotes - replace ' with " or vice versa | ⇧⌘C | Open Color Picker |   | | | Moving Around - Most can be combined with ⇧ to select text | ⌃F | Move right | ⌃B | Move left | ⌥F | Move to next word | ⌥B | Move to previous word | ⌃P | Move up | ⌃N | Move down | ⌥P | Move up to next blank line | ⌥N | Move down to next blank line | ⌥S ░ | Move to right before next ░ on line, like vim t (hold or double tap to select) | find-and-till ⌥R ░ | Move to right after previous ░ on line, like vim T (hold or double tap to select) | ⌃8 | Find next word under cursor, like vim * | ⌃3 | Find previous word under cursor, like vim # | ⌃S | Fuzzy Search Forward | ⌃R | Fuzzy Search Reverse |   | | | Selecting Text | ⌘L | Select Current Line - Can be repeated to select multiple lines | ⌘I | Expand Region (word, inside parens, etc.) | ⇧⌘I | Shrink Region (word, inside parens, etc.) | ⌃O ( | Select inside parentheses (works for {[<'"t) | ⇧⌃O ( | Select around parentheses (works for {[<'"t) | ⌥S⌥S ░ | Select to right before next ░ on line, like vim vt | ⌥R⌥R ░ | Select to right after previous ░ on line, like vim vT |   | | | Multiple Cursors - If multiple things are selected, you can type to change them all at once. You can also use regular navigation keys to move multiple cursors around at once. This is helpful for making lots of similar changes at once. | multiple-cursors ⌘D | Select Next - First press selects entire word. Next adds next instance of word under cursor to selection | ⌘K ⌘D | Skip Selection - After ⌘D, if you don't want it but want the next instance | ⌘U | Undo Select Next | ⌃⌘G | Select All instances of current word (works w/ File Find too) | ⇧⌘L | Split Selection into Multiple Cursors - Turns a selection of multiple lines into separate selections/multiple cursors. Try hitting ⌃A afterwards to get the cursors to the beginning of the lines | ⌘Click | Add Cursor - Good for quickly adding multiple cursors for multiple changes in places that would be tricky with find or ⌘D |   | | | Find and Replace | ⌘F | Find in File | ⌘G | Find Next in File | ⇧⌘G | Find Previous in File | ⇧⌘F | Find in Project | ⌃⌘N | Find Next in Project | project-find-navigation ⌃⌘P | Find Previous in Project | ⇧⌃⌘F | Focus Find in Project Results |   | | | Git (git plus) | git-plus ⇧⌘H | Open up git plus fuzzy find (try typing 'checkout' to see options) |

Packages

How to install a new package

Via the command line

  1. Install my-new-package:

    ~/.atom/bin/install-package my-new-package
  2. Commit the change to packages.txt and pull request it.

Via the UI

  1. Use the Install section of preferences to install a package.

  2. Run:

    ~/.atom/bin/update-packages
  3. Answer "keep" when asked about your package.

  4. Commit the change to packages.txt and pull request it.

How to upgrade packages

  1. Use the UI to update packages.

  2. Run:

    ~/.atom/bin/update-packages
  3. Commit the changes to package.txt and pull request it.

Installed

atomfiles's People

Contributors

a-b-r-o-w-n avatar aaronjensen avatar melanievee avatar mikelovesrobots avatar radamant avatar substantial-philipbjorge avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

atomfiles's Issues

Way to manage local config

Is there a way for people to have some local config that doesn't need to be a shared setting and won't mess with git tracking?

I am specifically wondering about font size, which is stored in the config but is not a setting that needs to be shared.

Should we name the repo simply `atomfiles`?

At first I wanted to keep substantial in the name to indicate that it was for everyone and so it showed up in forks, but I think it'd show up in forks regardless. I kinda want to just rename it to atomfiles now. Thoughts?

Unit test work flow

Let's brainstorm some ways to integrate our unit testing workflow into atom.

With vim/tmux or emacs/terminal we could get instant feedback from tests without context switching. Is there a similar approach in atom?

remove file w/ hotkey doesn't work very well

ctrl-x d does delete the file, but it does not close the tab or clear the file and it types a d (which is an atom bug, i would guess). It may make sense to pull in quick-file-actions just for delete, the one as is is pretty busted.

Allow ctrl-i to be tab

Vim users out there may be used to hitting ctl-[ in place of escape. That's a control character, and the control character for horizontal tab is ctl-i.

I have grown accustomed to using ctl-i rather than tab and would like a way to continue to use it as tab in atom. It has recently been bound as the leader for expand-region, which I have never used. Without that binding, it doesn't appear to do anything in atom.

I would love it to map to all the things that tab maps to. I could just update the keymap file and open a pull request, but I sense this could be controversial, and I'd rather see the discussion in an issue instead of a PR.

Link to Readline key bindings

I think we should link to a good list of Readline key bindings for people who are curious what those are. I tried to google, but it looks like everywhere just states that the default mode for Readline is Emacs and that it can be switched to Vi mode. We could link to Emacs key bindings, but as I understood from your explanation, Readline is just a subset of Emacs. Anyone have a good link?

Common keybindings for pane/split creation and movement

For pane creation:

key action
ctrl-shift-s create horizontal split
ctrl-shift-v create vertical split

For pane navigation:

key action
ctrl-shift-h navigate pane left
ctrl-shift-l navigate pane right
ctrl-shift-k navigate pane up
ctrl-shift-j navigate pane down
cmd-h navigate pane previous (ring movement)
cmd-l navigate pane next

I know these keys may not be perfect, so please add your $0.02 to the discussion.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.