分类:代码

码农是第一生产力。

用 xampp 安装 wordpress

  • XAMPP 官网 下载安装包 xampp-portable-win32-5.6.19-0-VC11-installer.exe ,安装到 D:/xampp 目录。
  • 修改 D:/xampp/php/php.ini
    • 支持上传大文件

      upload_max_filesize = 32M
      
    • 去掉 mysql 的注释

      extension=php_mysql.dll
      
    • 支持 xdebug 调试

      [XDebug]
      zend_extension = "D:\xampp\php\ext\php_xdebug.dll"
      xdebug.profiler_append = 0
      xdebug.profiler_enable = 0
      xdebug.profiler_enable_trigger = 0
      xdebug.profiler_output_dir = "R:\tmp"
      xdebug.profiler_output_name = "cachegrind.out.%t-%s"
      xdebug.remote_enable = on
      xdebug.remote_handler = "dbgp"
      xdebug.remote_host = "127.0.0.1"
      xdebug.remote_port = 9000
      xdebug.trace_output_dir = "R:\tmp"
      xdebug.idekey= PHPSTROM
      
  • wordpress 中文官网 下载安装包,解压到 D:/xampp/htdocs ,重命名为 fengjian.info
  • XAMPP Control 中启动 Apache 和 MySql 服务。
  • 打开网址 localhost/phpMyAdmin ,新建数据库 fengjian.info ,排序规则 utf8_general_ci
  • 打开网址 localhost/fengjian.info ,开始安装使用 wordpress:数据库名填 fengjian.info ,用户名填 root ,密码为空。

在 linode 上使用 spacemacs

一直在用 linode vps,安装的 ubuntu 系统,远程用 putty 连接,emacs 是主力编辑器。emacs 配置是 ftp 上传的,安装成功后就一直没有更新过。没有用 git 托管,配置同步终究是不太方便。今天有时间,决定把 spacemacs 配置同步到 github,再更新到 linode。

我的 spacemacs 配置一共有三部分:一个 .emacs.d 目录,是 spacemacs 的原始代码,未做任何修改;一个 .spacemacs.private 目录,存放私有 layer 和 snippets;一个 .spacemacs 文件,就是 spacemacs 配置文件。

直接从 github 下载 spacemacs 的 develop 分支,作为 .emacs.d 目录:

git clone https://github.com/syl20bnr/spacemacs.git .emacs.d
git checkout -t origin/develop

在本地建立一个目录 .spacemacs.config ,并在目录内新建两个符号链接,保存 spacemacs 的私有配置,并将这个目录上传到 github。PS: junction 语法太 BT,参数顺序与 ln 是反的。

mklink /J ".spacemacs.private" "../.spacemacs.config/.spacemacs.private"
mklink /H ".spacemacs" "../.spacemacs.config/.spacemacs"

远程 linode 上,下载 spacemacs 的私有配置,并创建符号链接。

cd ~
git clone https://github.com/sweord/.spacemacs.config.git
ln -s .spacemacs.config/.spacemacs.private .spacemacs.private
ln -s .spacemacs.config/.spacemacs .spacemacs

启动 emacs,没有成功安装,提示找不到某个 el 文件,查看 emacs 版本太老还是 24.3 的,需要安装新版本的 emacs-25.1

add-apt-repository -y ppa:ubuntu-elisp
apt-get update
apt-get install emacs-snapshot

由于码农的洁癖,老版本必须删除。先查看安装包的名称:

dpkg -S emacs

再全部删除:

apt-get remove emacs24-bin-common emacs24-common emacs24-common-non-dfsg emacs24-nox

启动 emacs,spacemacs 自启成功,自动安装一百三十多个 package 后,成功启动了。linode 服务器网速不错,整个安装过程非常快。查看 spacemacs 启动时间,才两点几秒,太快了。要知道,spacemacs 在我的 x200 笔记本上启动时间大约 15 秒多,在我的 i5-2240 CPU 台式机上,启动时间要 8 秒多,在 linode 上为什么这么快?查看了 cpu 信息,原来是 X5 2680 v5 , cache 有 30M,相当 NB 啊。

cat /proc/cpuinfo

设置 emacs 窗口起始位置和大小

emacs 启动后,是否可以以指定的大小显示在同一个位置?当然可以,通过下面这个 lisp 语句可以达到这个效果。

(setq default-frame-alist
      `((top . 0)
        (left . 0)
        (width . 172)
        (height . 60)
        ))

问题来了。如果你将这个配置写到配置文件中,同步到 svn。假定你有三台不同的电脑,有笔记本,也有台式机,显示器分辨率都是不同的,那么 emacs 在三台设置上的初始大小和位置是不同的。这意味着从 svn 上下载下来的配置文件,在每台电脑上需要先修改才能使用,而且这个修改不能提交到 svn 上。看起来不妥,怎么办?

一个解决办法是,将这个配置写到一个本地文件 local-gui.el 中,并将此文件设置成 svn 忽略。在正式配置文件中,调用加载这个本地文件。

(load-file (concat my-emacs-config-path "/local-gui.el"))

这样问题基本解决。其实还有更简单的方法。。。不用修改配置文件,直接修改 emacs 程序的启动参数就可以达到这个效果。

D:\emacs\bin\runemacs.exe -fh -g 80x52+650+0

80x52+650+0 就是设置 emacs 初始大小的位置的参数,80 为宽度,52 是调度, 650 是 x 坐标,0 是 y 坐标。

spacemacs workflow

Spacemacs 的优势在于预装了很多有用的 package, 整合到一起,无冲突。并在此基础上定义了一套方便的快捷键。使用 spacemacs 之前,担心快捷键太多记不住。实际上,使用几次后,发现快捷键定义还是很有规律的,而且有按键提示,不需要太多记忆。熟悉几个主要操作后,可以提高 emacs 的使用效率。

打开文件

一般情况下,我们经常操作的文件不会太多,都在最近文件列表里,列出最近使用 buffer 的快捷键是 SPC b b 。另外一个比较有用的是 SPC TAB ,在最近使用的两个 buffer 中切换。

如果要找的文件不在最近列表中,可以使用 SPC f L ,调用全盘快速搜索程序,windows 上默认使用 es.exe ,linux 上默认使用 locate ,快速定位到目标文件。

跳到函数定义

在编辑配置文件,或查看 emacs-lisp 文件时, SPC s j 可以在 minibuffer 中列出所有函数列表,选中后司跳到定义处。

搜索字符串

搜索功能有几个常见场景

  • 搜索光标下字符串

    使用 vim 的 superstar 功能就,只要按一下 * 就能快速搜索。

  • 搜索输入的字符串

    SPC s s 是 helm-swoop 的快捷键,类似于 multi-occur 的功能,输入字符串,在 minibuffer 中列出该字符串出现的所有列,选择后跳转。

写作 blog

打开 blog.org 文件后, C-z 退出 evil 模式,个人感觉在 evim 模式下,使用中文输入法不太方便。

M-> 跳转到文件最后,输入 blog-drawer ,这是我自定义的一个 snippet,用于创建 blog 标题和 drawer。

* $1
:PROPERTIES:
:BLOG: www.litchisoftware.com
:CATEGORY: ${2:代码}
:END:
$3

写完文章后, M-x org2blog/wp-post-subtree-and-publish 发布 blog。这个命令是个自定义函数

;;;###autoload
(defun org2blog/wp-post-subtree-and-publish ()
  "Publish the current subtree as a page."
  (interactive)
  (org2blog/wp-post-subtree t))

spacemacs 配置方法

这两天摸索了 spacemacs 的配置方法。定制的指导思想,除了 .spacemacs 文件,不改动 spacemacs 的其它任何文件。以后升级或迁移配置时,直接从 github 下载最新 spacemacs 代码即可,不用做任何改动。在 .spacemacs 配置中,重定义私有配置目录为 ~/.spacemacs.private ,自定义 layer 和 snippets 都放在此目录中。在 emacs 裸奔的机器上,下载并安装完 spacemacs,再下载私有配置,就能使用了。配置过程中的几个主要修改点:

  • 自定义私有目录

    .spacemacs 文件中,修改以下配置

    dotspacemacs-configuration-layer-path '("~/.spacemacs.private/")
    
  • 修改已有 layer 的配置

    spacemacs 中,部分 layer 会有 config.el 配置文件,该文件中保存 layer 的定制修改,但我并不想对 spacemacs 原始文件做任何改动。因为一旦修改了 spacemacs 的 layer 文件,就要把 spacemacs 代码也纳入私有 repo 管理 ,而我希望私有 repo 尽可能小,只有自已的配置,没有第三方代码。办法是有的,在 .spacemacs 中,选择加载包时,可以直接定制配置。

    (auto-completion
     :variables
     ;; auto-completion-front-end 'auto-complete
     auto-completion-return-key-behavior 'complete
     auto-completion-tab-key-behavior 'cycle
     auto-completion-enable-snippets-in-popup t
     auto-completion-complete-with-key-sequence nil
     auto-completion-complete-with-key-sequence-delay 0.1
     auto-completion-private-snippets-directory  (concat (car dotspacemacs-configuration-layer-path) "snippets/")
     auto-completion-enable-sort-by-usage t
     )
    
  • 添加一个 package

    自已原来一直用 org2blog 写博客,但 spacemacs 中没有集成这个包,怎么办?先用下面命令添加一个 layer,根据提示一步步完成。

    M-x configuration-layer/create-layer
    

    完成后,得到 README.orgpackage.el 。在 package.el 中,有详细的说明,怎么定义此 package 的引用和初始化函数。在定义过程中要用到 use-package 这个包,可以去 github 看下使用方法,简单来说,初始化 init 部分在包加载前调用, config 部分在包加载后调用。

  • 修改基本配置

    如果不需要用到其它 package,只是修改基本配置,直接在 .spacemacs 文件的 dotspacemacs/user-config 函数中修改就可以了。

修改完后,不一定需要重新启动 emacs,使用快捷键 SPC f e R 可以重装加载配置。但有些配置是添加到配置列表中的,重新加载配置不启作用,这种情况就需要重启 emacs 了。