Jump to Navigation

开用spacemacs

开用spacemacs

大概试用spacemacs一个月了,试用感受是,对我来说spacemacs是一个高度整合的emacs配置优化与管理项目。
除此之外,spacemacs还有简单整合vim操作的操作功能。

spacemacs中,配置一个emacs扩展非常容易,只需要加一行配置,加入扩展的名字即可。
在spacemacs中,扩展叫做layer,以实现与扩之间的整合封装。
每个layer管理并使用一个或者多个emacs扩展,并提供适当的接口实现统一配置。
这样当然有一个缺点,有些没有进spacemacs layer的扩展,还需要手动做一些定制化配置。
在定制化方面,spacemacs实际上仍然做的比较好,提供了丰富的接口与详细的说明。

另外,spacemacs还提供了统一的theme支持与theme管理功能,
并且最新v0.104.1版本默认的theme已经比较好看了,一直用着的。

现在,spacemacs替换下来之前用了几年的.emacs.d目录,只做了简单的配置,
可是已经比原来自己从0配置出来的还要强大很多了,看来得继续使用下去了。
spacemacs很好的支持了flycheck,写脚本的时候帮助还是比较大的,能够即时提示一些不规范的写法,错误的变量等,虽然代价是响应变慢了。
这个是以前用emacs没太关注的,一直配置的不太好用。

我的定制配置,主要包括常用的开发语言的layer,自动补全的layer,tab indent的配置。
现在还没有支持ecb的工程模式,这个还需要以后再试着配置一下。
spacemacs改动配置时,需要通过网络动态下载相应的包,而melpa.org站点着实访问很慢,
改动配置的话需要注意网络可用情况,网络不稳定的话有可能破坏配置。

顺便附带基本的.spacemacs配置,虽然大部分是自动生成的,凑个长度,

  1. ;; -*- mode: emacs-lisp -*-
  2. ;; This file is loaded by Spacemacs at startup.
  3. ;; It must be stored in your home directory.
  4.  
  5. (set-variable 'ycmd-server-command '("python2" "/path/to/ycmd/ycmd"))
  6. (add-hook 'python-mode-hook 'ycmd-mode)
  7. (add-hook 'ruby-mode-hook 'ycmd-mode)
  8. (add-hook 'php-mode-hook 'ycmd-mode)
  9. (add-hook 'go-mode-hook 'ycmd-mode)
  10.  
  11. (load "~/.emacs.d/duplicate-line.el")
  12. (global-set-key "\M-p" 'duplicate-previous-line)
  13. (global-set-key "\M-n" 'duplicate-following-line)
  14.  
  15.  
  16. (defun dotspacemacs/layers ()
  17. (setq-default
  18. dotspacemacs-distribution 'spacemacs
  19. dotspacemacs-configuration-layer-path '()
  20. dotspacemacs-configuration-layers
  21. '(
  22.  
  23.  
  24. auto-completion
  25. better-defaults
  26. chinese
  27. cscope
  28. emacs-lisp
  29. git
  30. markdown
  31. org
  32. (shell :variables
  33. shell-default-height 30
  34. shell-default-position 'bottom)
  35. syntax-checking
  36. version-control
  37. flycheck
  38.  
  39. semantic
  40. color
  41. python
  42. c-c++
  43. php
  44. go
  45. rust
  46. html
  47. javascript
  48. shell-script
  49. ycmd
  50.  
  51. dockerfile
  52. dash
  53.  
  54. gtags
  55. yaml
  56. )
  57.  
  58. dotspacemacs-additional-packages '()
  59.  
  60. dotspacemacs-excluded-packages '()
  61.  
  62. dotspacemacs-delete-orphan-packages t))
  63.  
  64. (defun dotspacemacs/init ()
  65.  
  66. (setq-default
  67. dotspacemacs-editing-style 'emacs
  68. dotspacemacs-verbose-loading nil
  69.  
  70. dotspacemacs-startup-banner 'official
  71.  
  72. dotspacemacs-startup-lists '(recents projects)
  73.  
  74. dotspacemacs-themes '(spacemacs-dark
  75. spacemacs-light
  76. solarized-light
  77. solarized-dark
  78. leuven
  79. monokai
  80. zenburn)
  81.  
  82. dotspacemacs-colorize-cursor-according-to-state t
  83.  
  84. dotspacemacs-default-font '("Source Code Pro"
  85. :size 17
  86. :weight normal
  87. :width normal
  88. :powerline-scale 1.2)
  89.  
  90. dotspacemacs-leader-key "SPC"
  91.  
  92. dotspacemacs-emacs-leader-key "M-m"
  93.  
  94. dotspacemacs-major-mode-leader-key ","
  95.  
  96. dotspacemacs-major-mode-emacs-leader-key "C-M-m"
  97.  
  98. dotspacemacs-command-key ":"
  99.  
  100. dotspacemacs-remap-Y-to-y$ t
  101.  
  102. dotspacemacs-auto-save-file-location 'cache
  103.  
  104. dotspacemacs-use-ido nil
  105.  
  106. dotspacemacs-helm-resize nil
  107.  
  108. dotspacemacs-helm-no-header nil
  109.  
  110. dotspacemacs-helm-position 'bottom
  111.  
  112. dotspacemacs-enable-paste-micro-state nil
  113.  
  114. dotspacemacs-which-key-delay 0.4
  115.  
  116. dotspacemacs-which-key-position 'bottom
  117.  
  118. dotspacemacs-loading-progress-bar t
  119.  
  120. dotspacemacs-fullscreen-at-startup nil
  121.  
  122. dotspacemacs-fullscreen-use-non-native nil
  123.  
  124. dotspacemacs-maximized-at-startup nil
  125.  
  126. dotspacemacs-active-transparency 90
  127.  
  128. dotspacemacs-inactive-transparency 90
  129.  
  130. dotspacemacs-mode-line-unicode-symbols t
  131.  
  132. dotspacemacs-smooth-scrolling t
  133.  
  134. dotspacemacs-smartparens-strict-mode nil
  135.  
  136. dotspacemacs-highlight-delimiters 'all
  137.  
  138. dotspacemacs-persistent-server nil
  139.  
  140. dotspacemacs-search-tools '("ag" "pt" "ack" "grep")
  141.  
  142. dotspacemacs-default-package-repository nil
  143. ))
  144.  
  145. (defun dotspacemacs/user-init ()
  146. "Initialization function for user code.
  147. It is called immediately after `dotspacemacs/init'. You are free to put any
  148. user code."
  149. )
  150.  
  151. (defun dotspacemacs/user-config ()
  152. "Configuration function for user code.
  153. This function is called at the very end of Spacemacs initialization after
  154. layers configuration. You are free to put any user code."
  155. (progn
  156. (setq indent-tabs-mode nil)
  157. (setq default-tab-width 4)
  158. (setq tab-width 4)
  159. (setq c-basic-offset 4)
  160. (setq ruby-indent-level 4)
  161. )
  162. )
  163.  
  164. ;; Do not write anything past this comment. This is where Emacs will
  165. ;; auto-generate custom variable definitions.

==================
ycmd gocode补全问题:由于go包下载不全导致补全失效。
ycmd python补全问题:需要清.emacs.d/.cache?

Category:

添加新评论

Plain text

  • 不允许HTML标记。
  • 自动将网址与电子邮件地址转变为链接。
  • 自动断行和分段。
CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.
Image CAPTCHA
Enter the characters shown in the image.


Main menu 2

Story | by Dr. Radut