This repository has been archived on 2024-10-22. You can view files and clone it, but cannot push or open issues or pull requests.
spacemacs/doc/QUICK_START.org
2016-04-21 20:58:53 -04:00

177 lines
6.8 KiB
Org Mode
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#+TITLE: Quick start
* Configuration :TOC_4_gh:noexport:
- [[#configuration-layers][Configuration layers]]
- [[#dotfile-spacemacs][Dotfile (.spacemacs)]]
- [[#dotdirectory-spacemacsd][Dotdirectory (~/.spacemacs.d)]]
- [[#learning-spacemacs][Learning Spacemacs]]
- [[#editing-styles][Editing Styles]]
- [[#the-leader-keys][The leader keys]]
- [[#evil-tutor][Evil-tutor]]
- [[#universal-argument][Universal argument]]
- [[#configuration-layers-and-package-discovery][Configuration layers and Package discovery]]
- [[#key-bindings-discovery][Key bindings discovery]]
- [[#describe-functions][Describe functions]]
- [[#how-tos][How-To's]]
* Configuration layers
Spacemacs divides its configuration into self-contained units called
=configuration layers=. These layers are stacked on top of each other
to achieve a custom configuration.
By default Spacemacs uses a dotfile called =~/.spacemacs= to control which
layers to load. Within this file you can also configure certain features.
A configuration layer is a directory containing at least a =packages.el=
file which defines and configures packages to be downloaded from Emacs
package repositories using the =package.el= built-in feature of Emacs.
If you already have your own =Emacs= configuration you can move it to your
own layer.
The following command creates a layer in the =private= directory:
#+BEGIN_EXAMPLE
SPC : configuration-layer/create-layer RET
#+END_EXAMPLE
Any configuration layers you create must be explicitly loaded in =~/.spacemacs=.
Note: For your privacy, the contents of the =private= directory are not
under source control. See the section on private configuration management in
the [[file:DOCUMENTATION.org][documentation]].
* Dotfile (.spacemacs)
As mentioned =.spacemacs= controls which configuration layers to load and
is also a means to customizing Spacemacs.
The following command will create a =.spacemacs= file in your home directory:
#+BEGIN_EXAMPLE
SPC : dotspacemacs/install RET
#+END_EXAMPLE
To open the installed dotfile:
#+BEGIN_EXAMPLE
SPC f e d
#+END_EXAMPLE
To load some configuration layers using the variable
=dotspacemacs-configuration-layers=:
#+BEGIN_SRC elisp
;; List of configuration layers to load.
dotspacemacs-configuration-layers '(auto-completion smex)
#+END_SRC
Some configuration layers support configuration variables to expose granular
control over layer-specific features, [[file:../layers/+source-control/git/README.org][git layer]] being one such example.
Variables can be directly set within =dotspacemacs-configuration-layers= like so:
#+BEGIN_SRC elisp
;; List of configuration layers to load.
dotspacemacs-configuration-layers '(auto-completion
(git :variables
git-magit-status-fullscreen t)
smex)
#+END_SRC
At anytime you can apply the changes made to the dotfile or layers
_without restarting_ Spacemacs by pressing ~SPC f e R~.
The [[file:../core/templates/.spacemacs.template][dotfile template]] contain further information about how to customize
Spacemacs. See the dotfile configuration section of the [[file:DOCUMENTATION.org][documentation]] for
more details.
* Dotdirectory (~/.spacemacs.d)
Like =Emacs=, Spacemacs initialization can also be contained in an =init.el= file
in a special directory =~/.spacemacs.d=. The contents of the dotfile should be
then copied in the =init.el= file.
The Emacs dotfile or dotdirectory is not replaced but rather
complemented by the Spacemacs dotfile or dotdirectory. During startup,
Emacs still uses =~/.emacs.d/init.el= (or =~/.emacs=) for its
initialization, and variable =user-emacs-directory= will still point
to =~/.emacs.d/=, even if =~/.spacemacs.d= or =~/.spacemacs= are
present. Only now =~/.emacs.d/init.el= is provided by Spacemacs
(e.g. after cloning the Spacemacs git repo into an empty
=~/.emacs.d/=), and your own personnal configurations go into
=~/.spacemacs.d/init.el= (or =~/.spacemacs=).
Have a look into the FAQ for an easy workaround to maintain (your
former) vanilla Emacs and (your new) Spacemacs configurations
side-by-side without the need to rename and backup =~/.emacs.d/=.
* Learning Spacemacs
** Editing Styles
Spacemacs can be used by Vim users or Emacs users by setting the
=dotspacemacs-editing-style= variable to =vim=, =emacs= or even =hybrid=
in the dotfile =~/.spacemacs=.
** The leader keys
Spacemacs key bindings use a leader key which is by default bound to
~SPC~ (space bar) in =vim= or =hybrid= editing styles and ~M-m~ in =emacs=
style.
You can change it by setting the variable =dotspacemacs-leader-key= if
you use the =vim= style or =dotspacemacs-emacs-leader-key= if you use
the =emacs= style (these variables must be set in the file =~/.spacemacs=).
For simplicity the documentation always refers to the leader key as
~SPC~.
There is secondary leader key called the major-mode leader key which is
set to ~,~ by default. This key is a shortcut for ~SPC m~
where all the major-mode specific commands are bound.
** Evil-tutor
If you are willing to learn the Vim key bindings (highly recommended since
you can benefit from them even in =emacs= style), press ~SPC h T~
to begin an Evil-adapted Vimtutor.
** Universal argument
In =vim= editing style the universal argument defaults to ~SPC u~
instead of ~C-u~ because the latter is used to scroll up as in Vim.
** Configuration layers and Package discovery
By using =helm-spacemacs-help= with ~SPC h SPC~ you can quickly search
for a package and get the name of the layers using it.
You can also easily go to the =README.org= of a layer or go to the initialization
function of a package.
** Key bindings discovery
Thanks to [[https://github.com/justbur/emacs-which-key][which-key]], whenever a prefix command is pressed (like ~SPC~)
a buffer appears after one second listing the possible keys for this prefix.
It is also possible to search for specific key bindings by pressing:
#+BEGIN_EXAMPLE
SPC ?
#+END_EXAMPLE
To narrow the bindings list to those prefixed with =SPC=,
type a pattern like this regular expression:
#+BEGIN_EXAMPLE
SPC\ b
#+END_EXAMPLE
which would list all =buffer= related bindings. *Note:* You are at the
/HELM-Descbind/ prompt, the pattern consists of 6 letters: uppercase ~SPC~, a
backslash, an actual space and a lowercase ~b~.
** Describe functions
=Describe functions= are powerful Emacs introspection commands to get information
about functions, variables, modes etc. These commands are bound thusly:
| Key Binding | Description |
|-------------+-------------------|
| ~SPC h d f~ | describe-function |
| ~SPC h d k~ | describe-key |
| ~SPC h d m~ | describe-mode |
| ~SPC h d v~ | describe-variable |
* How-To's
Some quick =how-to's= are compiled in the [[file:FAQ.org::How%20do%20I...][FAQ.org]] file.