emacs 在 ubuntu console 界面下快速启动

后台操作

  • C-z 将 emacs 切换到后台。 evil 模式下为 C-x C-z
  • fg 将最近后台任务切换到前台
  • jobs 查看后台任务列表
  • fg 1 将后台任务 1 切换到前台
  • bg 将任务切换到后台,一般在命令行最后加上 & bg

进程操作

  • ps -e | grep emacs 查看 emacs 进程号
  • kill pid 杀死 emacs 进程

emacs daemon

vim ~/.bashrc
export ALTERNATE_EDITOR=""
alias e="emacsclient -c"

spacemacs rectangle 操作

mark

  • rectangle-mark-mode C-x SPC

operations

  • open-rectangle c-x r o
  • kill-rectangle C-x r k
  • delete-rectangle C-x r d
  • yank-rectangle C-x r y
  • string-insert-rectangle unbound
  • string-rectangle C-x r t
  • number-to-register C-x r N

git 常用命令

  • 创建 git 库

    git init
    
  • 添加文件

    git add --all
    
  • 提交文件

    git commit -am "message"
    
  • 获取远程库

    git clone https://a.com/b.git
    
  • 从远程更新分支

    git pull
    
  • 向远程推送更新

    git push
    
  • 查看分支信息

    git branch -av
    
  • 创建分支,对应到远程分支

    git branch origin/v2.1
    git branch v2.1 remotes/origin/v2.1
    
  • 创建并切换到分支

    git checkout -b v2.1
    
  • 创建并切换到远程分支

    git checkout -t origin/v2.1
    
  • 查看当前状态

    git status
    
  • 清除本地修改

    git reset --hard
    
  • 修改远程仓库地址

    git remote set-url origin https://a.com/b.git
    
  • 将目录从 repo 中删除

    git rm --cached -r mydir
    
  • linux 下忽略文件权限修改

    git config --global core.fileMode false
    

maven 打包时间戳问题

maven 打包时,可以生成时间戳属性,利用该属性来组装包名。

<version>5.0.${build.time}B</version>
<properties>
  <maven.build.timestamp.format>yyyyMMddHHmmss</maven.build.timestamp.format>
</properties>

对资源文件开启 filtering 功能,资源文件中的 POM 变量在打包过程中会被自动替换。在 java 代码中访问 properties 资源文件,就可以取到版本号。

<resource>
  <directory>src/main/resources</directory>
  <filtering>true</filtering>
</resource>

但是,这个时间戳属性有个问题,生成的时间 ${maven.build.timestamp} 是 UTC 时间,无法修改时区。网上找到一个办法,可以用插件解决这个问题。

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>build-helper-maven-plugin</artifactId>
  <version>1.8</version>
  <executions>
    <execution>
      <id>timestamp-property</id>
      <goals>
        <goal>timestamp-property</goal>
      </goals>
      <configuration>
        <name>build.time</name>
        <pattern>yyyyMMdd'.'HHmm</pattern>
        <timeZone>GMT+8</timeZone>
      </configuration>
    </execution>
  </executions>
</plugin>

该插件生成的属性 ${build.time} 已经是本地时区。

但是,在 IDEA 中, Build Projects ,再 Build Artifacts... ,属性文件中的 ${project.version} 并没有被替换。

摸索了一阵,发现 IDEA Build Projects 并不会调用 maven 生命周期,导致 plugin 不被执行。虽然 maven 自带变量可以被替换,但是自定义变量却不会被替换。

使用工具按钮的 maven install 打包,资源中的变量可以被正常替换。

还有一个方法,可以将 IDEA 的 Build 与 maven goal 绑定起来:

bind maven goal

图1  绑定 maven goal