分类: 电脑网络

  • ZSH历史命令自动补全

    oh-my-zsh 的默认配置在碰到历史命令替换时需要先替换出来确认一遍才会执行,不会默认执行。

    如原本下面的命令会直接进入新建的目录

    $ mkdir dir
    $ cd !$
    $
    

    但在 zsh(oh-my-zsh 默认配置) 中,会变成

    $ mkdir dir
    $ cd !$
    $ cd dir
    

    移除这个的默认配置,只需在配置文件终稿添加 unsetopt hist_verify 即可。

  • 终端进入目录自动运行 shell 脚本

    利用 prompt 钩子,可以在终端进入目录时执行特定的 shell 代码。如:

    Call function 'foo'
    PROMPT_COMMAND=foo
    
    # The function
    foo() {
        pwd
    }
    

    对于使用 oh-my-zsh 的情况,可以直接做成插件形式,如:

    # ~/.oh-my-zsh/plugins/puglin-xx
    
    setopt PROMPT_SUBST
    
    typeset -ga chpwd_functions
    
    chpwd_functions+='foo'
    
    function foo() {
        # whatever code
        pwd
    }
    

    利用这个特性可以做一些特殊的需求,比如检测 git 仓库的用户名是否是合适的(使用多家 git 托管服务且用户名不一致的情况下有用),分支是否 ok 等。

    Update@2019-01-29

    如果是不同 git 使用不同配置的情况(如区分个人和工作配置),可以使用 git include 配置 来解决,如:

    ~/.gitconfig

    [user]
        name = personal_name
        email = xxx@personal.com
    [includeIf "gitdir/i:~/work/"]
        path = ~/.gitconfig_work
    

    ~/.gitconfig_work

    [user]
        name = work_name
        email = xxx@work.com
    

    这样,一旦项目位于 ~/work/ 下,那么就是使用 ~/.gitconfig_work 的配置来覆盖通用的。

    需要注意,如果目录是做来软链的,那么软链后的路径以及软链前的路径都需要配置才能不管是用软链还是使用真实路径访问 git 项目才会使用覆盖后的配置。

  • win8 升级到 8.1 卡住

    把 win8 升级到 8.1 的过程中,在最后阶段一直卡在「应用更改」界面。

    解决方法是:断网。

    估计是更新相应的 modern 版应用,但由于国内网络环境问题,从而导致久久没法下载完成。

    话说,进入了高速互联网年代后,各家软件都开始了只提供在线更新机制而很少提供完整离线安装升级包了。一旦处于网络稍差的环境或者涉及到跨国的情况下,通常就会出问题了,尤其是在不支持断点续传的功能的情况下。

  • 集中管理与精简入口

    vim 是个优秀工具,其自由强大的插件是一个很重要的因素。不过一直插件都是手动管理的,搜索下载插件,然后放到指定的目录。如果要升级的话,重新走一边流程(其实很少升级,一般没什么问题,都不会留意是否有新版本不会去升级)。迁移到别的系统中则是把 vimrc.vim 目录一起复制过去。

    但手动的管理插件总感觉有些什么问题,更希望能有一个地方来集中管理,包括安装、升级和移除。把分散的维护工具放在一个统一的入口来做感觉会更好。

    Vbundle 是出于这个目的的一个工具,我没有直接用这个工具,而是使用其一个衍生版本 NeoBundle ,基本思路是在 vimrc 中写上相应插件的列表即可做到自动安装、可选升级和移除等。

    具体使用参照 文档 ,这里简单记录一下。
    (更多…)

  • Mac 自定义快捷键

    mac 下程序的快捷键和 Windows 和 Linux 下的差别很大,比如浏览器的 F5F12 键在 mac 上的作用就不一致或不存在。

    如果需要设置熟悉的快捷键,来自 让 Mac 版 Chrome 使用 F5 刷新网页 一个可行的方法如下:

    「设置」 -> 「键盘」 -> 「快捷键」 -> 「添加应用程序快捷键」,选择应用,输入快捷键,然后输入应用对应的菜单名即可。

    这个的一个问题是,一旦更换了系统语言,菜单名改变了,快捷键就失效了。

  • 把 iPhone 图片导入 Mac

    iPhone 容量不足了,故需要把照片转移到电脑或移动硬盘上。

    把 iPhone 和 Mac 连接,Mac 不会把其当作可移动设备来允许对里面的文件进行操作,即便是有所限制的 MTP 协议。

    故,没法直接地把图片从 iPhone 中拖到 Mac 中。

    Mac 自带的 iPhoto 可以导入手机中的照片,但应是导入到其自管理的图库中,不是平常的存在某个自定义目录那样子,故不想用这个方式。

    找了一圈,各种应用什么的可麻烦了,最后看到 3 Ways to Transfer Photos From iPhone or iPod Touch to Mac 一文,找到了解决方案。

    忽略掉里面的 iPhoto 方案,系统自带的两个应用可满足这个需求,分别是 Image CapturePreview

    (更多…)

  • Firefox更新同步系统

    不知 Firefox 从多少版本后开始更换了新的同步系统,之所以一直没发觉是因为其还同时运行着两套版本,在没 unlink 之前将一直使用旧的而不做提示。直到在另一台电脑上安装了最新的版本想同步时才发现原来更新了,但是好奇怪,居然没做帐号转移,搞得需要重新注册。

    同时,因为在 unlink 之前是不会提示新的入口的,然后我纳闷了好久,最后还是找了下官方的指引来看,最后下决心 unlink 了一下才搞明白。

    1. 把旧的机器上的 firefox 升级到最新。Ubuntu 仓库中的老旧,没办法,手动下载解压然后 ln 一下。
    2. 在 Sync 界面 unlink
    3. 然后在 unlink 后的新界面注册,邮件中激活后即可发现可管理帐号了,此时自动把现有数据同步到新系统中
    4. 别的设备上使用新帐号登录新平台即可

    P.S. 此为水文,目的是在忙碌中保持至少月更。

  • 解决 iPhone 天气定位不准带来的问题

    iPhone 自带的雅虎天气最近定位不准确,即便添加了自定义城市,下拉菜单中的信息还是不准确定位得到的信息,完全无用。

    解决方法,干脆地在『设置』『隐私』『定位服务』中禁用天气权限,这样默认出的就是自定义城市的了。

  • 解决 virtualenv 在 ubuntu 13.04(64) 下报错

    使用 virtualenv 新建环境时,报错,里有部分信息如下:

      File "/usr/lib/python2.7/_sysconfigdata.py", line 6, in <module>
        from _sysconfigdata_nd import *
    ImportError: No module named _sysconfigdata_nd
    

    找下 _sysconfigdata_nd 这个包,得到以下信息

    $ dpkg -S _sysconfigdata_nd
    libpython2.7-minimal:amd64: /usr/lib/python2.7/plat-x86_64-linux-gnu/_sysconfigdata_nd.py
    

    包没在对应的查找位置上,link 一下

    $ sudo ln -s /usr/lib/python2.7/plat-x86_64-linux-gnu/_sysconfigdata_nd.py /usr/lib/python2.7/_sysconfigdata.py
    

    参考资料

    1. _sysconfigdata_nd.py missing in /usr/lib/python2.7
  • npm 源与代理

    我大防火墙和跨国的原因,npm 和 Ruby gems 的待遇一样,慢且不时会死,所以还是切换为国内的源好点。应该有好几个源,这里选用清华的镜像源

    npm config set registry http://npm.tuna.tsinghua.edu.cn/registry
    

    代理环境下,即便终端中设置了 http_proxy 等环境变量,但 npm 在使用 nodejs 建立 http 请求时并没有使用这些值,而需要在配置文件(~/.npmrc)中添加独立的代理设置,下面是命令添加方式。

    npm config set proxy http://proxyserver:port
    

    可以通过 npm config get proxy 的返回值来看是否设置成功。

    话说,在使用 spm 时,同样需要设置代理,一开始没在文档中找到。等我跟踪源码从 install 模块到 Yuan 模块再到 config 模块来找到设置方法并成功后,不死心又去看下文档,结果轻松找到了,泪奔。