本页面主要保存一些细小的技巧

Git

stash

如果想 pull 代码又不想提交代码, 可以将当前修改内容放到 stash 暂存

   $ git stash
等待 pull 完毕, 可以将当前修改从 stash 取出
   $ git stash pop
这样对于服务器部署的时候更新代码, 可以很方便的保持服务器本地配置

Vim

YouCompleteMe

YouCompleteMe 插件在补全 C 的之后只有在 ./-> 时才会弹出补全菜单, 为了正常补全, 可以在 .vimrc 下添加如下配置:

let g:ycm_semantic_triggers = {}
let g:ycm_semantic_triggers.c = ['->', '.', ' ', '(', '[', '&']
效果可以看这里

Key Map

把 Caps Lock 和右Ctrl 互换后有一些比较好按的快捷键:

<Ctrl-3>(Caps Lock + 3) == Esc

<Ctrl-2>(Caps Lock + 2) == <C-X><C-O>

以上两个键都在 Insert Mode 下生效

单引号转义

Vimscript 里的单引号字符串如果想要包含单引号需要用两个单引号进行转义

:let test='test''test'
:echo test
" 输出为 test'test

Linux

挂载 Windows 共享

将 192.168.1.1 的共享文件夹 share 挂载到本地 /media:

mount -t cifs -o guest //192.168.1.1/share /media

C

获取数组元素的指针

数组是一片连在一起的内存块, 所以任何对象添加到数组都是复制到数组. 比如如下代码:

#include <stdio.h>
#include <stdlib.h>

int main(){
    struct var {char *name; int global;};
    struct var buf[1024], *tmp;
    tmp = malloc(sizeof(struct var));
    tmp->name = "hi";
    tmp->global = 1;
    buf[0] = *tmp;
    struct var t = buf[0];
    printf("%p--%p--%p\n", tmp, (struct var*)&buf[0], &t);
}
输出为
0x2066010--0x7fff35bcec90--0x7fff35bcec80
你把元素添加到数组就不可能在通过元素获得该元素的指针.如果需要地址, 需声明为指针数组