工具、习惯与生活

关于工具最近想通了一个道理:好的工具能更容易养成好的习惯,从而带来更加舒适的生活。

讲两件自己身上发生的两件事来佐证。

财务管理

这里所说的财务主要是针对人民币和银行卡之类的东西。

在财务管理这方面我有个特别不好的习惯–特随意。随意到什么程度呢,我从来不知道自己兜里有多少钱,人民币也从不关心放在哪,几乎家里每个地方都有钱的影子,衣服口袋、桌子、抽屉或床底下随处都能找到五角一块的。

继续阅读“工具、习惯与生活”

Total Commander使用手册

Total Commander 是我在工作中使用最频繁的一款软件。它的强大无与伦比,堪称神器中的神器!不过要很好的使用它,必须掌握如下的快捷键和设置方式。当然,这是根据我的爱好设定的,您可以自由更换成自己喜欢的方式。

Total Commander 常用快捷键及设置方式:

优先级 快捷键 命令 修改wincmd.ini[Shortcuts]
1 Ctrl+D 开始菜单
2 Ctrl+B 无层级显示文件与文件夹/恢复层级显示
3 Ctrl+Q 另一侧预览选中文件
4 F2 重命名文件 F2=cm_RenameOnly
5 Ctrl+F 搜索文件 C+F=cm_SearchFor
6 Tab 左右窗口间焦点互移
7 F3 预览文件
8 F4 编辑文件
9 F5 复制文件
10 F6 移动文件
11 F7 新建文件夹
12 Shift+F4 新建文本文件并跳转到编辑器中打开
13 Alt+F1/F2 左/右侧选择磁盘
14 Alt+F5 压缩文件
15 Alt+F6 解压文件 A+F6=cm_UnpackFiles
16 Ctrl+w 关闭当前窗口
17 F11 复制文件名到剪贴板 F11=cm_CopyNamesToClip
18 F12 复制文件完整路径名称 F12=cm_CopyFullNamesToClip
19 Alt+D 编辑路径 A+D=cm_EditPath
20 Ctrl+Z 编辑文件的备注
21 Ctrl+\ 切换到根目录
22 Alt+F8 打开FTP界面 A+F8=cm_FtpConnect

Total Commander 常用环境变量:

  • %Commander_path% 代表Total Commander的安装路径

此变量非常有用,比如插件的安装路径是以绝对路径的方式存储在wincmd.ini中,如果移动totalcmd 安装文件夹路径会导致插件失效。

此时可修改wincmd.ini 插件路径参数如下:

Total Commander使用手册

Total Commander 安装插件方法:

插件下载地址:https://www.ghisler.com/plugins.htm
下载的插件为zip压缩包。
在Total Commander中打开压缩包弹出是否安装插件提醒:

Total Commander使用手册

点击“是”,插件的安装过程其实就是在软件根目录下创建plugins文件夹,同时增加插件配置文件:

Total Commander使用手册

指定使用软件文件夹下的配置文件(绿色化软件)

在安装文件夹下的 wincmd.ini 中 [Configuration] 一节增加

UseIniInProgramDir=7

提醒事项:

指向桌面的开始菜单有两种方式:cd C:\Users\%USERNAME%\Desktop 和 cm_OpenDesktop ,推荐使用前一种方式。后一种方式会影响窗口间的文件移动。


参考:
【C学堂】第2讲:TC基本功:定位与选择


更新说明:

  • 2017年6月9日 增加指定ini配置文件路径,优化排版
  • 2017年2月15日 重写已有内容,增加插件安装部分。
  • 2016年4月22日 增进新建文本文件快捷键。
  • 2015年11月28日 增进系统变量环节及搜索快捷键、FTP快捷键。
  • 2015年11月15日 增进Ctrl+z快捷键说明和Ctrl+\快捷键说明。

Visual Studio 使用技巧

Visual Studio 快捷键

  1. 自动提示:Ctrl+J
  2. 查看帮助:F1键
  3. 程序代码:F7
  4. 运行:F5或者Ctrl+F5
  5. 格式化格式: Ctrl+E,d
  6. 快速导入类所需的命名空间: Alt+Shift+F10
  7. 快速跳转到类的定义: F12
  8. 注释掉选中的内容: Ctrl+e, c 或者使用 CTRL+K,CTRL+C
  9. 取消注释的内容: CTRL+K,CTRL+U
  10. 双击 tab 键快速补全代码列表:
输入字符 实现功能 备注
foreach 快速补全 foreach 语句 输入到 fore 即可
for 快速补全 for 语句
cw 快速补全 Console.WriteLine(); 语句
prop 生成自动属性
  1. 快速封装属性: Ctrl+R+E
  2. 逐步调试: F11
  3. 快速实现子类中继承于抽象父类中的所有抽象成员 Alt+Shift+F10
  4. 选中文本快速添加#region:Ctrl+K,S

Visual Studio(免费社区版)官方离线安装ISO光盘镜像下载
下载链接:http://download.microsoft.com/download/B/4/8/B4870509-05CB-447C-878F-2F80E4CB464C/vs2015.com_chs.iso

Visual Studio 2015 各版本比较
微软官方链接: https://www.visualstudio.com/products/compare-visual-studio-2015-products-vs

更新记录:
1. 2016-3-27:更新1到5;
2. 2016-4-5:增加条目6到9;
3. 2016-4-6:增加条目10,增加条目9内容
4. 2016-5-10:增加#region快捷键
5. 2016-5-25:增加取消注释

印象笔记(Evernote)技能收集

印象笔记实用快捷键 :

使用优先级 快捷键 功能描述
1 Ctrl+Q 快速查找标签、笔记、笔记本或搜索
2 F6 快速把焦点置于搜索框
3 Ctrl+Shift+v 纯文本粘贴
4 F11 隐藏文章列表
5 F10 隐藏目录列表
6 F9 立即同步
7 Win+A 任何环境下发送至笔记
8 Ctrl+K 快速添加超链接

更新历史:

2016-02-14:初版。
2016-06-04:增加新版支持的快捷键Ctrl+Q,更新样式。
2016-06-07:增加F9同步按钮。
2017-2-27:增加Ctrl+K添加超链接按钮。

Git 使用手册

生成并绑定SSH秘钥

进入用户主文件夹

$ cd ~

生成邮箱对应的SSH密钥

$ ssh-keygen -t rsa -f ~/.ssh/id_rsa.gitee -C "qqqqqq@qq.com"

这时~/.ssh目录下会多出id_rsa.gitee 和id_rsa.gitee.pub两个文件,id_rsa.gitee.pub里保存的就是我们要使用的key
-f ~/.ssh/id_rsa.gitee
指定生成的文件路径和名称,用于区分此密钥使用于哪个代码托管平台,此处以oschina为例
对于本地配置多个ssh key,只需要安装上述方式配置生成key,并修改config文件即可。

复制密钥至官网绑定SSH密钥

$ cat ~/.ssh/id_rsa.gitee.pub

以 gitee为例:

复制密钥至官网绑定SSH密钥

新增并配置config文件

如果config文件不存在,先添加,存在则直接修改

$ touch ~/.ssh/config

在config文件里添加如下内容 (User表示你的用户名)

Host gitee.net
    IdentityFile ~/.ssh/id_rsa.gitee
    User rqc

Host github.com
    IdentityFile ~/.ssh/id_rsa.github
    User rqc

按此语法格式,可继续添加 github.com、gitee.com 当代码托管平台的。能解决本地多个ssh key的问题

测试效果:

$ ssh -T git@gitee.com

若返回

Welcome to Gitee.com, [yourname]!

则证明添加成功。

如果返回:

Bad owner or permissions on /home/YourName/.ssh/config

则是ssh config文件权限的问题。在.ssh目录下,执行下面的语句:

$ sudo chmod 600 config

再次执行$ ssh -T git@gitee.com查看效果,直到添加成功。

创建全新项目并添加到托管平台

设置 Git 全局用户名和邮箱设置:

添加用户名和邮箱:

 git config --global user.name "YourName"   git config --global user.email "emailAddress@qq.com"

不设置提交用户名会显示Unknown

删除用户名和邮箱:

 git config --global --unset user.name   git config --global --unset user.email

创建 git 仓库:

 mkdir MyDir  #新建文件夹   cd MyDir     #进入文件夹
$ git init     #初始化git仓库

对于单个项目设置用户名和邮箱【推荐】

 git config user.name "YourName"   git config user.email "emailAddress@qq.com"

此方式对于不同的代码托管平台可以使用不同的用户名和邮箱。
也可是直接编辑config文件:项目文件夹/.git/config

添加项目说明文件

 echo "# add some introduction" >> README.md    #创建仓库说明文件并添加内容:README.md   git add README.md               #向仓库中添加README.md文件
 git commit -m "first commit"    #提交内容   git remote add origin git@gitee.com:YourName/yourRepo.git  #添加远程仓库
$ git push -u origin master       #把修改内容推送到master分支

登录托管平台,查看效果。

已有项目添加到托管平台

 cd existing_git_repo   git remote add origin git@gitee.com:YourName/yourRepo.git  #添加远程仓库地址
$ git push -u origin master           #推送内容到master分支

登录托管平台,查看效果。

Git 常用命令

查看历史提交记录

$ git log --pretty=oneline
Git 使用手册

查看工作区的状态

$ git status

查看远程连接

$ git remote -v

修改远程连接

$ git remote set-url origin git@gitee.com/YourName/yourRepo.git

Git pull 强制覆盖本地文件

 git fetch --all     git reset --hard origin/master 
$ git pull

Git 高级入门

Git 配置文件

git config 命令,专门用来配置或读取相应工作环境变量。
Git配置文件有三种:

  1. /etc/gitconfig 文件,系统中对所有用户都适用的配置。搭配git config 时用 --system 选项,读取此文件。
  2. ~/.gitconfig 文件,用户目录下的配置文件只适用于该用户。搭配git config 时用 --global 选项,读取此文件。
  3. 项目文件夹.git/config 文件,仅仅对当前项目有效的配置文件。

越往下一级配置则会覆盖上层的所有相同配置。

设置两个 Git 仓库地址

给 origin 设置两个地址:

 git remote origin set-url --add git@gitee.com/YourName/yourRepo1.git   git remote origin set-url --add git@gitee.com/YourName/yourRepo2.git

.git/config配置文件显示如下:

[remote "origin"]
        url = git@gitee.com/YourName/yourRepo1.git url = git@gitee.com/YourName/yourRepo2.git [branch "master"] remote = origin 

提交

$ git push origin master 会同时提交到两个repo

拉取

$ git pull origin master 会同时从两个repo中取得更新。

设置只用来备份的仓库,不会从此仓库更新

 git remote origin set-url --add git@gitee.com/YourName/yourRepo1.git    #会同时pull和push   git remote set-url origin --push --add git@gitee.com:YourName/yourRepo2.git
 #不会pull,只会push

在项目.git/config 里可以看到

[remote "origin"]
    url = git@gitee.com/YourName/yourRepo1.git pushurl = git@gitee.com/YourName/yourRepo2.git ... [branch "master"] remote = origin 

提交
$ git push origin master //会同时提交看两个repo

拉取
$ git pull origin master //只会从 repo1 里取得更新。

参考文章:

  1. Bad owner or permissions on .ssh/config的解决
  2. 网络搜索

Ubuntu 下安装oh-my-zsh

默认状况下Termial样式

Ubuntu系统默认状况下的终端样式如下:

Ubuntu default terminal's style

有个知名的神奇:Oh-My-Zsh 可以让终端及美观又实用:

Oh-My-Zsh agnoster theme install powerline font

今天就一步步的记录我安装Oh My Zsh 的过程

安装Oh-My-Zsh

安装Oh-My-Zsh之前必须安装zsh,否则会收到如下提示:

Zsh is not installed! Please install zsh first!

安装zsh:

  1. sudo apt-get install zsh安装zsh
  2. zsh --version确认是否安装成功
  3. sudo chsh -s $(which zsh)设置zsh为默认shell
  4. 注销重新登录

设置完成之后,终端变成如下样式:

ubuntu zsh style

  1. echo $SHELL确认zsh是否是默认SHELL,输出/usr/bin/zsh

安装Oh-My-Zsh

  1. 使用curl方式安装:
sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
  1. 默认安装完成Oh-My-Zsh的样式如下:(重启终端后有效)

First install Oh-My-Zsh UI

  1. Oh-My-Zsh的默认配置文件在:~/.zshrc
  2. 编辑~/.zshrc修改主题为:agnoster,效果:

修改:

Oh-My-Zsh agnoster theme configuration

修改后:

Oh-My-Zsh agnoster theme example

修改Oh-My-Zsh agnoster匹配字体

从上图我们可以明显的发现,显示效果中有乱码,这是因为字体没适配。我们需要下载支持Powerline的字体。

  • 下载地址:https://github.com/powerline/fonts
  • 下载完成双击安装

默认Ubuntu 终端使用的是 Ubuntu mono regular字体 13字号,体会成Ubuntu Mono derivative Powerline字体后,效果如下:

Oh-My-Zsh agnoster theme install powerline font

进一步优化

精简 user@hostname:添加export DEFAULT_USER="username"~/.zshrc中,可以隐藏固定的 user@hostname 信息。

hide username and hostname

Docker 命令列表

  1. docker pull [name]获取镜像
  2. docker images 显示Docker镜像列表
  3. docker inspect [镜像ID]获取镜像的详细信息
  4. docker search [关键词]查找关键词镜像列表
  5. docker ps -a 查看Docker后台进程
  6. docker rmi [镜像标签/镜像ID]删除镜像
  7. docker cp [file] [容器ID]:/etc/复制文件到容器指定位置
  8. docker rm [容器ID]删除容器
  9. docker commit -m "description..." -a "author" [容器ID] [New id]基于已有容器创建新的镜像
  10. docker run -it ubuntu /bin/bash使用镜像创建一个容器,并在其中运行bash应用(-t 分配一个伪终端,-i 让容器标准输入保持打开)
  11. docker create -it [镜像]新建一个容器
  12. docker start [容器ID]运行处于终止状态的容器
  13. docker run -d ubuntu [命令]后台运行容器
  14. docker logs [容器ID]查看容器输出信息
  15. docker stop [-t|--time[=10]] [容器ID]终止容器,默认等待10s
  16. docker kill [容器ID]直接强制终止容器
  17. docker ps -a -q查看处于终止状态的容器
  18. docker restart [容器ID]重启一个容器
  19. docker exec -ti [容器ID] /bin/bash进入到创建容器中运行交互命令
  20. docker save -o name.tar ubuntu:14.04存出镜像到本地为name.tar
  21. docker load --input name.tar导入镜像存储文件到本地镜像库
  22. docker export [容器ID] > name.tar导出停止或运行中的容器到文件中去
  23. cat name.tar | sudo docker import - test/ubuntu:v1.0导入容器导出的文件成为镜像

Docker无法删除none标签镜像解决方法

在使用Docker安装ubuntu的过程中,因为Docker Hub的速度太慢,于是使用Ctrl+Z关闭下载了进程。

可是此过程会产生了一个none标签的镜像,此镜像使用 -f 也无法强制删除。

rqc@ubuntu:~$ docker rmi c061463d062e
Error response from daemon: conflict: unable to delete c061463d062e (cannot be forced) - image is held by an ongoing pull or build
Error: failed to remove images: [c061463d062e]

Error response from daemon: conflict: unable to delete c061463d062e (cannot be forced) - image is held by an ongoing pull or buildError: failed to remove images

最终,在Docker的官方讨论区里找到了解决方法:链接

分别执行以下命令之后再删除镜像:

systemctl restart docker
docker rmi 3f8d2e13b904