0%

最近又折腾了一下vim,主要是之前把所有的ide都设置成了vim模式,但是感觉还是没感觉出为啥这么多人喜欢用vim.然后最近就研究了一下vim的键位映射.感觉如果是原生的vim编程确实不输于ide,配置插件.
这里主要讲一下折腾了半天才弄明天的键位配置.
vim 可以设置任意的快捷键. 参考:help key-notation 查看相关文档,举例如下:

  • 代表Escape键:
  • 代表Enter键;
  • 代表Command键。
  • Alt键可以使用来表示。
  • 代表Ctrl.
    其他的相关的网上文档很多,自己看看就明白.但是有一个大坑是alt键.如果是安装了插件,安装文档说明比如<M -i> 但是你按了alt+i组合键完全不起作用,然后你就开始各种怀疑人生.主要原因,如果你是用的macos系统.alt键是被设置成了插入功能.在term2属性里面把alt映射为ECS+ 之后还需要在.vimrc里面做如下配置:
    1
    2
    3
    4
    5
    6
    7
    "macos 默认alt 是插入,配置term2 把alt应设置esc+,需要把英文字符都映射一下,就是让按<M -字符 为alt+字符如上,循环写法如下
    " ref https://stackoverflow.com/questions/7501092/can-i-map-alt-key-in-vim
    for i in range(97,122)
    let c = nr2char(i)
    exec "map \e".c." <M-".c.">"
    exec "map! \e".c." <M-".c.">"
    endfor

1
pip install fabric3

写在了 pythonlearn 里

fabic 这个包主要是用在服务器交互里面,比如发布项目到 git 后,本机运行一个脚本,会连接服务器执行一堆下载,编译的事情

写了一个方便写模板的 fabric

  • 场景
    敲一个 fab new:test 生成一个 test.md 的文件 ,并把 hexo 模板写入进去,模板把文件名”test”
    写入到模板里面.
1
2
# will generate a test.md  file
fab new:test
  • config file
    fabfile.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
"""
自动化添加文件头
参考 https://www.solarck.com/using-netlify-auto-deployed-pelican.html
- 新建
fab new:test,tag

"""

import os
from datetime import datetime
from fabric.api import *
from fabric.contrib.console import confirm
from fabric.utils import abort
from fabric.colors import *

env.hosts = ['']
env.port = 22
env.user = ''
env.password = ''

# Local path configuration (can be absolute or relative to fabfile)
env.deploy_path = './'
env.content_path = './'


META = """---
title: {:20}
Date: {:%Y-%m-%d %H:%M}
categories: # 这里写的分类会自动汇集到 categories 页面上,分类可以多级
- mac
tags:
- {:10}
Authors: Jingzy
---
"""


def new(title='new',tag=''):
os.chdir(env.content_path)
file_name=title+'.md'
with open(file_name, 'w') as f:
f.write(META.format(title,datetime.now(),tag))

def preview():
local('pelican -d -s pelicanconf.py')
os.chdir(env.deploy_path)
local('python -m http.server 8000 -b 127.0.0.1')


def github(comMsg ='' ):
local('git add --all')
local('git commit -m "{} update at {:%Y-%m-%d %H:%M}"'.format(comMsg,datetime.now()))
local('git push origin master')

# fab hexo_deploy
def hexo_deploy():
run('jg posthexo')
# run("git pull origin master")
result =run("pwd")
with cd('/home/_posts'):
run('pwd') # /tmp
run('git pull origin master ') # /tmp
with cd('/home/hexo'):
run('pwd')
run('hexo g')
run('pwd') # /root

ts 2.8下React组件模式,结合typesscript 和react.这个看了好几遍,感觉挺经典,之前ts不熟,做下笔记.

知识点一 泛型的默认值
1
2
3
4
5
6
7
8
9
10
11

type ToggleableComponentProps<P extends object = {'length':number }> = {
show: string
toggle: string
} & P
const he = { name: 'jing' }
const aaa: ToggleableComponentProps = {
show: 'ff',
toggle: 'length',
length: 12,
}

这块后面的object=object 是什么意思?
P extends object 连在一起读,P 必须是继承自 object 的泛型。后面的等于号,例如 interface Example< T> ,在使用时如果编译器没办法根据上下文推测 T,就必须手动指定,例如 class MyClass implement Example<string> ,等于号在这里的作用和ES6 的默认值是一样的用法,例如 T = number 如果外界没有指定泛型,编译器又无法根据上下文推测出结果时,就会采用这个默认类型 {‘length’:12 }

知识点二 高阶组件包裹的话,static属性会消失

  • 项目
    1月从北京项目回来做购物网站,5月开始是wolife,8月半路做了些微信企业号。之后是wolife全面维护。

  • 知识

    • springMVC
    • maven
    • hbuilder app
    • git
  • 生活

    • 加了一群飞鱼人,生活从空间到微信。
    • 整天在等公交车时候用印象笔记写日记。
    • 用黑莓看订阅邮件,学到了不少东西。
      阅读全文 »

场景一:服务器放一些视频,可以查看视频列表,你只希望有权限的人可以看。

  • 开启Nginx的目录文件列表功能效果截图:
    Paste_Image.png

  • nginx实现访问网站或目录密码认证保护 效果截图:

    阅读全文 »

演示图片:

main.html,puzzle.css,puzzle.js 三个文件分别存放html,对应的格式,js控制。

其中重点如下

  • puzzle.css
    transition:0.3s是设置过渡时间,这是css3的属性,它会让属性改变呈现过渡动画,所以
    当我们改变方块的位置时,它会有一个动画,我们不必自己编写动画函数
  • puzzle.js
    • 移动控制思路
      大div套9个小div,大div用一个array变量d 标识 .代表一个9宫格排序。每个数组变量值代表当前格子被哪个移动板占据。如果值与array下标一致,则表明排好序。另用一个array 代表每个宫格位置的移动板可以移动的的宫格的坐标

程序演示连接

看的这篇文章,感觉有效果的是下面几个。

帮你保持历史操作,跳回到你经常使用的目录。

下面是我的配置文件里脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# USAGE:
# s bookmarkname - saves the curr dir as bookmarkname
# g bookmarkname - jumps to the that bookmark
# g b[TAB] - tab completion is available
# l - list all bookmarks

# save current directory to bookmarks
touch ~/.sdirs
function s {
cat ~/.sdirs | grep -v "export DIR_$1=" > ~/.sdirs1
mv ~/.sdirs1 ~/.sdirs
echo "export DIR_$1=$PWD" >> ~/.sdirs
}

# jump to bookmark
function g {
source ~/.sdirs
cd $(eval $(echo echo $(echo \$DIR_$1)))
}

# list bookmarks with dirnam
function l {
source ~/.sdirs
env | grep "^DIR_" | cut -c5- | grep "^.*="
}
# list bookmarks without dirname
function _l {
source ~/.sdirs
env | grep "^DIR_" | cut -c5- | grep "^.*=" | cut -f1 -d "="
}

# completion command for g
function _gcomp {
local curw
COMPREPLY=()
curw=${COMP_WORDS[COMP_CWORD]}
COMPREPLY=($(compgen -W '`_l`' -- $curw))
return 0
}

# bind completion command for g to _gcomp
complete -F _gcomp g

##创建自己的命令包.
通过脚本,我可以将ssh key拷贝到任何网站服务器——只需要键入dur keyuser@somehost.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
function dur {
case $1 in
clone|cl)
git clone git@bitbucket.org:nicolapaolucci/$2.git
;;
move|mv)
git remote add bitbucket git@bitbucket.org:nicolapaolucci/$(basename $(pwd)).git
git push --all bitbucket
;;
trackall|tr)
#track all remote branches of a project
for remote in $(git branch -r | grep -v master ); do git checkout --track $remote ; done
;;
key|k)
#track all remote branches of a project
ssh $2 'mkdir -p .ssh && cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub
;;
fun|f)
#list all custom bash functions defined
typeset -F | col 3 | grep -v _ | xargs | fold -sw 60
;;
def|d)
#show definition of function $1
typeset -f $2
;;
help|h|*)
echo "[dur]dn shell automation tools"
echo "commands available:"
echo " [cl]one, [mv|move]"
echo " [f]fun lists all bash functions defined in .bashrc"
echo " [def] <fun> lists definition of function defined in .bashrc"
echo " [k]ey <host> copies ssh key to target host"
echo " [tr]ackall], [h]elp"
;;
esac
}