系统
manjaro
ubuntu
centos
同步时间
-
设置硬件时钟 sudo hwclock --systohc
-
同步时间 -- ntpdate -u ntp.api.bz timedatectl set-ntp yes
pacman
设置源
-
step1 sudo pacman-mirrors -i -c China -m rank sudo pacman -Syy
-
step2 /etc/pacman.conf: [archlinuxcn] SigLevel = Optional TrustedOnly Server = https://mirrors.ustc.edu.cn/archlinuxcn/$arch
导入GPG key
sudo pacman -Syy && sudo pacman -S archlinuxcn-keyring
key 签名问题解决办法
sudo pacman-key --init sudo pacman-key --populate
x32 mirrorlist
http://mirrors.zju.edu.cn/manjaro/x32-unstable/state
更新系统
sudo pacman -Syyu
-
输入法 sudo pacman -S fcitx-im sudo pacman -S fcitx-configtool sudo pacman -S fcitx-sogoupinyin
-
配置sudo vim ~/.xprofile export GTK_IM_MODULE=fcitx export QT_IM_MODULE=fcitx export XMODIFIERS="@im=fcitx"
必备
-
screenfetch sudo pacman -S screenfetch
-
screenkey sudo pacman -S screenkey
-
yaourt sudo pacman -S yaourt
-
sougou sudo pacman -S fcitx-sogoupinyin
-
wechat sudo pacman -S electronic-wechat(not support now)
-
neteasy music yaourt musicbox help: https://github.com/darknessomi/musicbox
-
chromium 中文乱码 sudo pacman -S wqy-microhei
-
安装vmware https://www.jianshu.com/p/de571b44ab60
-
vmware download:https://www.vmware.com/products/workstation-pro/workstation-pro-evaluation.html
常用软件
- 声音控制 terminal中运行命令:alsamixer
- 截图:flameshot
install
sudo pacman -S p7zip
解压
7z x filename
install 截屏工具
sudo pacman -S scrot
首先确认是否添加过swap分区
为了防止出现任何以外,请先看一下内存中是否已经有swap:
free -m
一般情况下运行命令后会出现如下的内容:
total used free shared buffers cached
Mem: 1840 1614 226 15 36 1340
-/+ buffers/cache: 238 1602
Swap: 0 0 0
如果你看到 Swap 分区中是0的话,那么就可以接着看第二步
如果不是的话说明你已经有了swap分区,你可以通过下面的命令查看swap文件:
swapon -s
第二步,创建Swap分区
使用dd来创建一个空的swap文件(2G为例):
dd if=/dev/zero of=/swapfile count=2048 bs=1M
其中 dd 命令的内容可以按自己的需求修改:
if =输入文件(或设备名称)。
of =输出文件(或设备名称)。
ibs = bytes 一次读取bytes字节,即读入缓冲区的字节数。
skip = blocks 跳过读入缓冲区开头的ibs*blocks块。
obs = bytes 一次写入bytes字节,即写入缓冲区的字节数。
bs = bytes 同时设置读/写缓冲区的字节数(等于设置ibs和obs)。
cbs = byte 一次转换bytes字节。
count=blocks 只拷贝输入的blocks块。
然后你应该会看到如下的反馈:
2048+0 records in 2048+0 records out 2147483648 bytes (2.1 GB) copied, 10.5356 s, 204 MB/s 然后我们来验证一下是否已经生成完成:
ls / | grep swapfile 如果正常生成的话你可以看到 swapfile 文件
第三步,激活Swap分区
Swap分区需要读写的权限,所以运行命令授权:
chmod 600 /swapfile 查看授权是否成功:
ls -lh /swapfile 如果成功的话你可以看到如下反馈:
-rw------- 1 root root 2.0G Oct 2 18:47 /swapfile 然后挂载Swap分区:
mkswap /swapfile 你应该能看到如下的反馈:
Setting up swapspace version 1, size = 2097148 KiB no label, UUID=ff3fc469-9c4b-4913-b653-ec53d6460d0e
Step 4: Turn swap on 完成之前的步骤之后你的swap分区已经可以使用了,我先只要打开它就好:
swapon /swapfile 这时候你可以用 free 命令再次查看Swap分区是否已经开始运行
free -m
total used free shared buffers cached
Mem: 1840 1754 86 16 23 1519
-/+ buffers/cache: 210 1630
Swap: 2047 0 2047
如果 Swap 空间不是 0 就说明你成功了
第五步,开机启动设置
一般而言Swap是没有开机启动的,所以你需要编辑/etc/fstab 文件,我一般用 nano,你也可以用vi或者vim达到同样的效果
vim /etc/fstab
在末尾加上如下内容:
/swapfile none swap sw 0 0
保存之后我们就完成了Swap的全套设置
修改swappiness
- 查看swappiness
cat /proc/sys/vm/swappiness
- 修改swappiness
sudo sysctl vm.swappiness=10
sudo vim /etc/sysctl.conf
在这个文档的最后加上这样一行:
vm.swappiness=10
ubuntu
修改镜像源
- CSDN帮助
- /etc/apt/sources.list
kali
ssh 配置
- 开启ssh服务,允许root登录
- 查看ssh服务状态
/etc/init.d/ssh status
- 修改配置文件
vim /etc/ssh/sshd_config
PermitRootLogin yes
PasswordAuthntication yes
- 启动ssh服务
/etc/init.d/ssh start
- 修改源
sudo vi /etc/apt/sources.list
#中科大
deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
deb-src http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
#软件源清单更新
sudo apt-get dist-upgrade
#软件版本更新
sudo apt-get update
sudo apt-get upgrade
- 密钥失败
The following signatures were invalid: EXPKEYSIG ED444FF07D8D0BF6 Kali Linux
wget -q -O - https://archive.kali.org/archive-key.asc |apt-key add
#不成功的话改http请求试试
wget -q -O - http://archive.kali.org/archive-key.asc |apt-key add
kali
- url: https://www.offensive-security.com/kali-linux-vm-vmware-virtualbox-image-download/
- virtual images
kali version
kali 2018.2
- user:root pwd:toor
kali-2020.1
- 虚拟机版本 user:kali pwd:kali
- 修改默认root密码:sudo passwd root
- vmware 需要修改:设置--->选项--->版本:其他linux
msconsole
更新
curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall && \
chmod 755 msfinstall && \
./msfinstall
漏洞验证
17_010
- msfconsole
- search 17_010
- use windows/smb/ms17_010_eternalblue
- show options
- set RHOSTS 192.168.2.159
- run/exploit
- shell
- net user test test /add
- net localgroup administrators test /add
cve-2020-0796
- msfconsole
- search 20_0796
- https://my.oschina.net/u/4302130/blog/3224951/
windows乱码问题
- cmd:chcp 65001
dirbuster
- 作用:扫描网站目录
- 字典资源: https://github.com/rootphantomer/Blasting_dictionary
快速打开哥哥服务,win + R
- services.msc 打开服务
- firewall.cpl
- control 打开控制面板
- taskmgr 打开任务管理器
- chrome
- gpedit.msc 打开本地组策略
- eventvwr.msc 打开事件查看器
windows工具
scoop 包管理工具
- 安装
- iex (new-object net.webclient).downloadstring('https://get.scoop.sh')
- Set-ExecutionPolicy RemoteSigned -scope CurrentUser
- 安装域名解析问题,修改host:151.101.76.133 raw.githubusercontent.com
- help:https://www.cnblogs.com/sinferwu/p/12726833.html
- 添加额外包仓库
- scoop bucket add extras https://github.com/lukesampson/scoop-extras.git
-
安装常用工具:sudo ag git curl 7zip concfg aria2
-
使用
- scoop install concfg
- scoop update
- scoop list
- scoop -h
- scoop search
-
wiki:https://github.com/lukesampson/scoop/wiki
-
help:https://www.jianshu.com/p/f412b95c19b8
-
help:https://www.jianshu.com/p/b09fe256be0f
-
aria2
aria2 在 Scoop 中默认开启
scoop config aria2-enabled true
关于以下参数的作用,详见aria2的相关资料
scoop config aria2-retry-wait 4 scoop config aria2-split 16 scoop config aria2-max-connection-per-server 16 scoop config aria2-min-split-size 4M
vmware
- windows7 创建虚拟机时左边列表不显示怎么办? 关闭防火墙
net命令
- net time \ip 查看系统时间 eg: net time 127.0.0.1
- net share 查看共享
- net user 查看用户
- net user abc 123 /add 新建用户:新建用户abc密码123
- net user abc 123 修改用户密码:修改用户abc的密码为123
- net user abc /del 删除用户:删除用户abc
- net localgroup administrators 查看管理员组成员
- net localgroup administrators abc /add 把abc 加入管理员组
- net use f: \192.168.2.11\share 123456 /user:administrator 将其他电脑的share目录映射到本机的f盘
- net use f: /del
- net use * /del
常用命令 cd,dir,mkdir,del,echo,attrib,md,cls
-
cls 清屏
-
del ****.txt
-
echo hello >> test.txt
-
md a 创建a目录
-
type 类似于tail type a.txt | more
-
copy con 文件名:拷贝屏幕内容到文件里面, C-z enter结束
-
attrib +h test.txt:给文件test.txt添加隐藏属性
-
attrib -h test.txt:给文件test.txt取消隐藏属性
-
fsutil file createnew d:\system.ini 10
-
assoc .txt=exefile 修改文件关联
-
assoc .txt=txtfile
-
assoc .txt 查看.txt文件关联
-
ren 重命名文件或文件夹
dhcp服务器
- ipconfig release/renew/all 释放ip/续约/查看信息
dns服务器
- ipconfig /flushdns
- nslookup
win+r
- control 进入控制面板
- gpedit.msc 进入组策略配置
- services.msc 进入服务
win7
- 强制关机--->修复
- sethc ---> cmd
- shift+5
icacls
- icacls D:\tools\cygwin\ /T /grant Administrator:F
- 将cygwin文件夹以及其子文件夹里修改为Administrator所有
- 赋予完全控制权限
- 适用于文件权限不对无法删除或修改文件的情况
控制台乱码
- chcp 65001
查看连接用户
- query user 使用远程桌面管理命令query, query命令可以显示远程连接到服务器的会话、 运行的进程以及远程登录的用户,
查看磁盘
- diskpart
- list disk
补丁下载地址
- http://www.catalog.update.microsoft.com/Search.aspx?q=KB4535102
proxy
正向代理、反向代理有什么区别?
- 简单地说,正向代理代理的是用户,反向代理代理的是服务器。
expression
lua
官方网站
- lua5.4官方手册
http://www.lua.org/manual/5.4/contents.html
- lua5.4的新特性
http://www.lua.org/manual/5.4/readme.html#changes
https://zhuanlan.zhihu.com/p/137588708
- 官方下载地址:
http://www.lua.org/ftp/lua-5.4.3.tar.gz
工具
- luarocks安装
yum install luarocks
- luacheck安装
luarocks install luacheck
python
python3 install pip3
wget --no-check-certificate https://pypi.python.org/packages/source/p/pip/pip-8.0.2.tar.gz#md5=3a73c4188f8dbad6a1e6f6d44d117eeb tar -zxvf pip-8.0.2.tar.gz cd pip-8.0.2 python3 setup.py build python3 setup.py install
joinquant
doc
video
本地环境搭建
网格交易
基本概念
#总持仓数量
g.amount = context.portfolio.positions[security].total_amount
#起始资金
g.cash =context.portfolio.starting_cash
#基准价格
bottom_price = g.price
#持仓平均成本
g.cost = context.portfolio.positions[security].avg_cost
#可使用的现金
cash = context.portfolio.available_cash
#获取当前价格
current_price = get_current_tick(security, dt=None, df=False).current
#总持仓数量
amount = g.amount
#目前持仓金额
current_value = current_price*amount
#资金分成20份
unit_value = g.cash/20
#如果持仓下跌10%止损
if g.cost >0 and (g.cost-current_price)/g.cost >=0.10:
order_target(security, 0)
return
常用API
- initialize 初始化函数
def initialize(context):
# g为全局变量
g.security = "000001.XSHE"
- run_daily/run_weekly/run_monthly 定时运行策略(可选)
def initialize(context):
## func是您自己定义的函数
# 按月运行
run_monthly(func, monthday, time='9:30', reference_security, force=False)
# 按周运行
run_weekly(func, weekday, time='9:30', reference_security, force=False)
# 每天内何时运行(没有force属性)
run_daily(func, time='9:30', reference_security)
- before_trading_start 开盘前运行策略(可选)
- after_trading_end 收盘后运行策略(可选)
- on_strategy_end 策略运行结束时调用(可选)
- on_event 事件回调(可选)
- handle_data 运行策略(可选)
# 该函数每个单位时间会调用一次, 如果按天回测,则每天调用一次,如果按分钟,则每分钟调用一次。
def handle_data(context, data):
order("000001.XSHE",100)
demo
-
单股票的网格交易1.0
-
初始化 https://www.joinquant.com/post/28547
import numpy as np
import pandas as pd
from pandas import Series
from jqdata import *
import time
def initialize(context):
# 设定沪深300作为基准(同股票为基准)
set_benchmark('000300.XSHG')
#set_benchmark('300145.XSHE')
# 开启动态复权模式(真实价格)
set_option('use_real_price', True)
# 输出内容到日志 log.info()
log.info('初始函数开始运行且全局只运行一次')
# 过滤掉order系列API产生的比error级别低的log
# log.set_level('order', 'error')
### 股票相关设定 ###
# 股票类每笔交易时的手续费是:买入时佣金万分之三,卖出时佣金万分之三加千分之一印花税, 每笔交易佣金最低扣5块钱
set_order_cost(OrderCost(close_tax=0.001, open_commission=0.0003, close_commission=0.0003, min_commission=5), type='stock')
## 运行函数(reference_security为运行时间的参考标的;传入的标的只做种类区分,因此传入'000300.XSHG'或'510300.XSHG'是一样的)
# 开盘前运行
run_daily(before_market_open, time='before_open', reference_security='000300.XSHG')
# 开盘时运行
run_daily(market_open, time='every_bar', reference_security='000300.XSHG')
# 收盘后运行
run_daily(after_market_close, time='after_close', reference_security='000300.XSHG')
#初始化,第一次交易的标志
g.first = 0
- before_market_open
def before_market_open(context):
# 输出运行时间
log.info('函数运行时间(before_market_open):'+str(context.current_dt.time()))
# 要操作的股票:(g.为全局变量)
g.security = '002918.XSHE.'
g.initial = '2015-01-05'
#每天交易一次的标志
g.count = 0
- setup_position
def setup_position(context,security,bench,status):
#基准价格
bottom_price = g.price
if bottom_price == 0:
return
#持仓平均成本
g.cost = context.portfolio.positions[security].avg_cost
print("g.cost%s"%g.cost)
#可使用的现金
cash = context.portfolio.available_cash
print("cash:%s"%cash,"g_price:%s"%g.price)
#获取当前价格
current_price = get_current_tick(security, dt=None, df=False).current
#总持仓数量
amount = g.amount
#目前持仓金额
current_value = current_price*amount
#资金分成20份
unit_value = g.cash/20
#如果持仓下跌10%止损
if g.cost >0 and (g.cost-current_price)/g.cost >=0.06:
order_target(security, 0)
return
print("unit_value:%s" % unit_value)
#计算目前价格差
returns = (current_price-bottom_price)/bottom_price
#打印需要的数据
if g.count == 0:
print("b_P:%s"%bottom_price)
print("c_p:%s"%current_price,"current_value:%s"%current_value,"amount:%s"%amount)
print(".........")
g.count = 0
#print(type(returns),type(bottom_price))
#卖出
if (status == 'short') and (g.count == 0):
# 价格差大于5%
if returns > bench and current_value > 6*unit_value:
order_target_value(security,6*unit_value)
# 价格差大于10%
if returns > 2*bench and current_value > 3*unit_value:
order_target_value(security,3*unit_value)
# 价格差大于15%
if returns > 3*bench and current_value >1*unit_value :
order_target_value(security,1*unit_value)
# 价格差大于20%
if returns > 4*bench and current_value >0:
order_target_value(security,0)
#结束本日交易标志
g.count=1
if g.count==0:
print("returns:%s"%returns,bench,amount,status)
print("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@")
# 买入
if (status == 'long') and (cash >0) and (g.count ==0):
# 价格差小于-4%,仓位小于20%
if returns < bench and current_value < 4*unit_value:
order_target_value(security,4*unit_value)
# 价格差小于-8%,仓位小于35%
if returns < 2* bench and current_value < 7*unit_value:
order_target_value(security,7*unit_value)
# 价格差小于-12%,仓位小于45%
if returns < 3* bench and current_value <9*unit_value :
order_target_value(security,9*unit_value)
# 价格差小于-16%,仓位小于50%
if returns < 4* bench and current_value < 10*unit_value:
order_target_value(security,10*unit_value)
g.count = 1
if g.count==0:
print("returns:%s"%returns,bench,amount,status)
print("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$")
print("____________________________________")
return True
- market_open
def market_open(context):
log.info('函数运行时间(market_open):'+str(context.current_dt.time()))
security = g.security
#第一次交易数量
g.num = 1100
#总持仓数量
g.amount = context.portfolio.positions[security].total_amount
#起始资金
g.cash =context.portfolio.starting_cash
#第一次买入
if g.first ==0 :
g.orders=order(security,g.num-100)
g.price = g.orders.price
g.first = 1
print("g.price:%s"%g.price)
#全部卖出后,突破5日均线后买入
if g.amount == 0:
close_data = attribute_history(security, 5, '1d', ['close'])
# 取得过去五天的平均价格
MA5 = close_data['close'].mean()
# 取得上一时间点价格
now_price = close_data['close'][-1]
# 如果上一时间点价格高出五天平均价5%, 则全仓买入
if now_price > 1.05*MA5 :
# 用所有 cash 买入股票
g.orders=order(security, g.num)
g.price = g.orders.price
# 记录这次买入
log.info("Buying %s" % (security))
#网格运算
y=setup_position(context,security,0.05,'short')
x=setup_position(context,security,-0.04,'long')
#空仓步长:5%,10%,15%,20%
#print("x=%s" %(x))
#print("y=%s" %(y))
- after_market_close
def after_market_close(context):
log.info(str('函数运行时间(after_market_close):'+str(context.current_dt.time())))
#得到当天所有成交记录
trades = get_trades()
for _trade in trades.values():
log.info('成交记录:'+str(_trade))
log.info('一天结束')
log.info('##############################################################')
我的常用配置
.vimrc
"set term=screen
set ruler
set laststatus=2 " make the last line where the status is two lines deep so you can see status always
set backspace=indent,eol,start " make that backspace key work the way it should
set nocompatible " vi compatible is LAME
set showmode " show the current mode
syntax on " turn syntax highlighting on by default
"set fdm=indent
"
""行号{
set nu!
"set relativenumber
"}
"
"set guifont=h12
set hls
"set background=dark
set t_Co=256
"设置配色方案{
left g:molokai_original = 1
let g:rehash256 = 1
"desert
"colorscheme solarized molokai github lucius desert
"}
" markdown theme
"let g:detorte_theme_mode = 'dark'
"tab{
set tabstop=2
set expandtab
""}
filetype off
call plug#begin('~/.vim/plugged')
Plug 'git://github.com/tomasr/molokai.git'
"Plug 'scrooloose/nerdtree', { 'on': 'NERDTreeToggle' }
"Plug 'preservim/nerdtree' |
" \ Plug 'xuyuanp/nerdtree-git-plugin'
Plug 'preservim/nerdtree' |
\ Plug 'xuyuanp/nerdtree-git-plugin' |
\ Plug 'ryanoasis/vim-devicons'
Plug 'tiagofumo/vim-nerdtree-syntax-highlight'
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
Plug 'michaelHL/awesome-vim-colorschemes'
Plug 'majutsushi/tagbar'
Plug 'godlygeek/tabular'
Plug 'ctrlpvim/ctrlp.vim'
"Plug 'ack.vim'
"Plug 'vim-scripts/luainspect.vim'
"Plug 'xolox/vim-misc'
"Plug 'xolox/vim-lua-ftplugin'
Plug 'Shougo/neocomplcache'
Plug 'nathanaelkane/vim-indent-guides'
Plug 'Yggdroot/indentLine'
Plug 'airblade/vim-gitgutter'
Plug 'gregsexton/gitv'
Plug 'tpope/vim-fugitive'
Plug 'git://github.com/rking/ag.vim.git'
" Multiple Plug commands can be written in a single line using | separators
"Plug 'SirVer/ultisnips' | Plug 'honza/vim-snippets'
Plug 'tpope/vim-surround'
Plug 'scrooloose/syntastic'
Plug 'Chiel92/vim-autoformat'
Plug 'tpope/vim-commentary'
Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' }
"Plug '/usr/bin/fzf'
Plug 'junegunn/fzf.vim'
Plug 'Yggdroot/LeaderF', { 'do': './install.sh' }
Plug 'mg979/vim-visual-multi'
"Plug 'voldikss/vim-browser-search'
Plug 'kien/rainbow_parentheses.vim'
Plug 'uarun/vim-protobuf'
Plug 'tpope/vim-abolish'
Plug 'fatih/vim-go'
"Plug 'w0rp/ale'
"Plug 'tamlok/detorte'
"Plug 'tamlok/vim-markdown'
"Plug 'iamcco/mathjax-support-for-mkdp'
"Plug 'iamcco/markdown-preview.vim'
"Plug 'iamcco/markdown-preview.nvim', { 'do': { -> mkdp#util#install() }, 'for': ['markdown', 'vim-plug']}
"Plug 'iamcco/markdown-preview.nvim', { 'do': 'cd app && yarn install' }
"Plug 'neoclide/coc.nvim', {'branch': 'release'}
" Initialize plugin system
call plug#end()
colorscheme molokai "neon evening molokai solarized molokai github lucius
filetype plugin indent on " required
"set runtimepath^=~/.vim/bundle/ag
set runtimepath^=~/.vim/plugged/ag
"path{
set path=./,../,
"set path=./,/usr/include,,..,../lualib,
"}
" vim-indent-guides {
"let g:indent_guides_enable_on_vim_startup = 1 "添加行,vim启动时启用
"let g:indent_guides_start_level = 1 "添加行,开始显示对齐线的缩进级别
"let g:indent_guides_guide_size = 1 "添加行,对齐线的宽度,(1字符)
"let g:indent_guides_tab_guides = 0 "添加行,对tab对齐的禁用
"}
"
"indentLine{
"let g:indentLine_char='|'
let g:indentLine_char='|'
let g:indentLine_enabled = 1
"}
"let g:mkdp_path_to_chrome = "firefox"
"let g:mkdp_path_to_chrome = "google-chrome"
"let g:mkdp_browserfunc = 'MKDP_browserfunc_default'
"let g:mkdp_auto_open = 1
" set to 1, nvim will open the preview window after entering the markdown buffer
" default: 0
let g:mkdp_auto_start = 0
" set to 1, the nvim will auto close current preview window when change
" from markdown buffer to another buffer
" default: 1
let g:mkdp_auto_close = 0
" set to 1, the vim will refresh markdown when save the buffer or
" leave from insert mode, default 0 is auto refresh markdown as you edit or
" move the cursor
" default: 0
let g:mkdp_refresh_slow = 0
" set to 1, the MarkdownPreview command can be use for all files,
" by default it can be use in markdown file
" default: 0
let g:mkdp_command_for_global = 0
" set to 1, preview server available to others in your network
" by default, the server listens on localhost (127.0.0.1)
" default: 0
let g:mkdp_open_to_the_world = 0
" use custom IP to open preview page
" useful when you work in remote vim and preview on local browser
" more detail see: https://github.com/iamcco/markdown-preview.nvim/pull/9
" default empty
let g:mkdp_open_ip = ''
" specify browser to open preview page
" default: ''
let g:mkdp_browser = 'firefox'
" set to 1, echo preview page url in command line when open preview page
" default is 0
let g:mkdp_echo_preview_url = 1
" a custom vim function name to open preview page
" this function will receive url as param
" default is empty
let g:mkdp_browserfunc = ''
":MarkdownPreview
":MarkdownPreviewStop
" options for markdown render
" mkit: markdown-it options for render
" katex: katex options for math
" uml: markdown-it-plantuml options
" maid: mermaid options
" disable_sync_scroll: if disable sync scroll, default 0
" sync_scroll_type: 'middle', 'top' or 'relative', default value is 'middle'
" middle: mean the cursor position alway show at the middle of the preview page
" top: mean the vim top viewport alway show at the top of the preview page
" relative: mean the cursor position alway show at the relative positon of the preview page
" hide_yaml_meta: if hide yaml metadata, default is 1
" sequence_diagrams: js-sequence-diagrams options
" content_editable: if enable content editable for preview page, default: v:false
" disable_filename: if disable filename header for preview page, default: 0
let g:mkdp_preview_options = {
\ 'mkit': {},
\ 'katex': {},
\ 'uml': {},
\ 'maid': {},
\ 'disable_sync_scroll': 0,
\ 'sync_scroll_type': 'middle',
\ 'hide_yaml_meta': 1,
\ 'sequence_diagrams': {},
\ 'flowchart_diagrams': {},
\ 'content_editable': v:false,
\ 'disable_filename': 0
\ }
" use a custom markdown style must be absolute path
" like '/Users/username/markdown.css' or expand('~/markdown.css')
let g:mkdp_markdown_css = ''
" use a custom highlight style must absolute path
" like '/Users/username/highlight.css' or expand('~/highlight.css')
let g:mkdp_highlight_css = ''
" use a custom port to start server or random for empty
let g:mkdp_port = ''
" preview page title
" ${name} will be replace with the file name
let g:mkdp_page_title = '「${name}」'
" recognized filetypes
" these filetypes will have MarkdownPreview... commands
let g:mkdp_filetypes = ['markdown']
"ctrlp{
let g:ctrlp_cmd = 'CtrlP'
let g:ctrlp_map = '<c-p>'
set wildignore+=*.o,*.exe,*.git,*.pdb,*.bak,*.so,*.a
let g:ctrlp_by_filename = 1 " only lookup file name
let g:ctrlp_max_height = 15
let g:ctrlp_clear_cache_on_exit = 0
let g:ctrlp_cache_dir = $HOME.'/.ctrlp/cache/'
let g:ctrlp_working_path_mode = 'rw'
let g:ctrlp_custom_ignore = {
\ 'dir': '\v[\/]\.(git|hg|svn)$',
\ 'file': '\v\.(exe|so|dll|bak|gds|lib|suo|exp)$',
\ 'link': 'SOME_BAD_SYMBOLIC_LINKS',
\ }
"}
"调用ag进行搜索提升速度,同时不使用缓存文件
if executable('ag')
set grepprg=ag\ --nogroup\ --nocolor
let g:ctrlp_user_command = 'ag %s -l --nocolor -g ""'
let g:ctrlp_use_caching = 0
endif
"ctags{
set tags=tags;
"set autochdir
nnoremap <silent> <F12> :A<CR>
":set grepprg=grep\ -nri
""""""""""""""""""""""""""""""
" Tag list (ctags)
" """"""""""""""""""""""""""""""
let Tlist_Ctags_Cmd = '/usr/bin/ctags'
"Tagbar
let g:tagbar_ctags_bin = '/usr/bin/ctags'
let Tlist_Show_One_File = 1
"不同时显示多个文件的tag,只显示当前文件的
"let Tlist_Exit_OnlyWindow = 1
"如果taglist窗口是最后一个窗口,则退出vim
let Tlist_Use_Right_Window = 1 "在右侧窗口中显示taglist窗口
let Tlist_File_Fold_Auto_Close=1
"让不被编辑的文件的方法列表自动折叠起来
let Tlist_Show_Menu=1 "显示taglist菜单
let Tlist_Auto_Open=0 "启动vim自动启动TagList
let g:NERDTreeWinSize = 25
let g:tagbar_width = 25
let g:tagbar_type_lua = {
\ 'ctagstype' : 'lua',
\ 'kinds' : [
\ 'm:modules:0:0',
\ 'f:functions:0:1',
\ 'v:locals:0:0'
\ ],
\ 'sort' : 0
\ }
let g:lua_inspect_events = ''
let mapleader=" "
" tips plug
"let g:pmenu_scheme = 'dark'
"let g:pmenu_scheme = 'macos'
"map <Tab> <Plug>EasyCompTabTrigger
"imap <S-Tab> <Plug>EasyCompShiftTabTrigger
" easycompelte end============
" neocomplcache
let g:neocomplcache_enable_at_startup = 1
let g:neocomplcache_enable_auto_select = 1
"let g:neocomplcache_enable_quick_match = 1
let g:ag_prg='ag --column'
let g:ag_working_path_mode='r'
"git gutter
nmap ]c <Plug>GitGutterNextHunk
nmap [c <Plug>GitGutterPrevHunk
" syntastic
set statusline+=%#warningmsg#
set statusline+=%{SyntasticStatuslineFlag()}
set statusline+=%*
let g:syntastic_always_populate_loc_list = 1
let g:syntastic_auto_loc_list = 1
let g:syntastic_check_on_open = 1
let g:syntastic_check_on_wq = 0
"设置error和warning的标志
let g:syntastic_enable_signs = 1
let g:syntastic_error_symbol='✗'
let g:syntastic_warning_symbol='►'
"no-unused-args 忽略不使用的参数
"no-redefined 忽略重定义
"no-max-line-length 忽略每行最长的检测
"ignore 542 551 忽略if条件的body为空(如...elseif ret == nil then end,then和end中间没有语句);忽略空语句(如;),如果用了;则成对出现该语法检测warning
"有语法错误的一行左侧栏会有S>标识,光标移动到改行,vim下发会给出提示。修改正确后保存,则该'S>'会消失。
"let g:syntastic_lua_checkers = ["luac", "luacheck"]
let g:syntastic_lua_checkers = ["/use/bin/luac5.4.3", "luacheck"]
"let g:syntastic_lua_luacheck_args =
""--codes --no-max-comment-line-length --ignore 542 551"
let g:syntastic_lua_luacheck_args = "--codes"
"go checker
let g:syntastic_go_checkers = ["govet", "errcheck","go"]
"c
"let g:syntastic_c_compiler =['gcc', 'clang', 'make']
"let g:syntastic_c_compiler_options ='-Wpedantic -g'
let g:syntastic_c_compiler_options ='-std=gnu99'
let g:syntastic_c_include_dirs=['/usr/include/']
let g:syntastic_c_config_file='.syntastic_c_config_file'
"cpp
let g:syntastic_cpp_include_dirs = ['/usr/include/']
let g:syntastic_cpp_remove_include_errors = 1
let g:syntastic_cpp_check_header = 1
let g:syntastic_cpp_compiler = 'clang++'
let g:syntastic_cpp_compiler_options = '-std=c++11 -stdlib=libstdc++'
" syntastic end
" autoformat 操作符2边加空格
let g:formatdef_allman = '"astyle --style=allman --pad-oper"'
let g:autoformat_autoindent = 0
let g:autoformat_retab = 0
let g:autoformat_remove_trailing_spaces = 0
"map <C-F12> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q.<CR>
map <C-F12> :!ctags -R --fields=+iaS --extra=+q.<CR>
"Press space twice to jump to the next '<++>' and edit it
map <LEADER><LEADER> <Esc>/<++><CR>:nohlsearch<CR>c4l
set tabstop=4
set softtabstop=4
set shiftwidth=4
set noexpandtab
set expandtab
set autoindent
set cindent
set cc=80
set list
set listchars=tab:>-,trail:-
set nocompatible
set noswapfile
set nobackup
set nowritebackup
set noundofile
set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1
" before vim 8.1 modellines bug
set modelines=0
set nomodeline
"inoremap :setl pastegi+:setl nopastegi
"
inoremap jk <ESC>
" fzf_begin{
map <leader>f :Rg<CR>
map <leader>p :Files<CR>
map <leader>b :Buffers<CR>
" Empty value to disable preview window altogether
" let g:fzf_preview_window = ''
"
" Always enable preview window on the right with 60% width
let g:fzf_preview_window = 'right:60%'
command! -bang -nargs=* Ag
\ call fzf#vim#ag(<q-args>,
\ <bang>0 ? fzf#vim#with_preview('up:60%')
\ : fzf#vim#with_preview('right:50%:hidden', '?'),
\ <bang>0)
let g:fzf_layout = {'down':'40%'}
map <leader>a :Ag<CR>
nnoremap <silent> <Leader>A :Ag<CR>
" fzf_end}
"{ Leaderf_begin
"let g:Lf_ShortcutF = '<C-P>'
let g:Lf_ShortcutF = '<C-F>'
map <leader>F :Leaderf! rg<CR>
"{ Leaderf_end
"{ rainbow_begin
let g:rbpt_colorpairs = [
\ ['brown', 'RoyalBlue3'],
\ ['Darkblue', 'SeaGreen3'],
\ ['darkgray', 'DarkOrchid3'],
\ ['darkgreen', 'firebrick3'],
\ ['darkcyan', 'RoyalBlue3'],
\ ['darkred', 'SeaGreen3'],
\ ['darkmagenta', 'DarkOrchid3'],
\ ['brown', 'firebrick3'],
\ ['gray', 'RoyalBlue3'],
\ ['darkmagenta', 'DarkOrchid3'],
\ ['Darkblue', 'firebrick3'],
\ ['darkgreen', 'RoyalBlue3'],
\ ['darkcyan', 'SeaGreen3'],
\ ['darkred', 'DarkOrchid3'],
\ ['red', 'firebrick3'],
\ ]
let g:rbpt_max = 16
let g:rbpt_loadcmd_toggle = 0
au VimEnter * RainbowParenthesesToggle
au Syntax * RainbowParenthesesLoadRound
au Syntax * RainbowParenthesesLoadSquare
au Syntax * RainbowParenthesesLoadBraces
"{ rainbow_end
"ale begin
"https://github.com/tvatter/ale#faq-quickfix
" Write this in your vimrc file
"let g:ale_set_loclist = 0
"let g:ale_set_quickfix = 1
"
"let g:ale_open_list = 1
" Set this if you want to.
" " This can be useful if you are combining ALE with
" " some other plugin which sets quickfix errors, etc.
"let g:ale_keep_list_window_open = 1
"nmap <silent> <C-k> <Plug>(ale_previous_wrap)
"nmap <silent> <C-j> <Plug>(ale_next_wrap)
"ale end
" 关闭json隐藏引号
let g:vim_json_conceal = 0
"path指定查找的路径,详情help path
" includeexpr是尝试替换路径名中的.为/,详情help includeexpr
set includeexpr=substitute(v:fname,'\\.','/','g')
" suffixesadd为尝试路径后缀,详情help suffixesadd
set suffixesadd=.lua
set suffixesadd+=.proto
if filereadable("./.workspace.vim")
source ./.workspace.vim
endif
"""""""""""""""""""""""""""""""
"NerdTree setting
""""""""""""""""""
set encoding=utf-8
set termencoding=utf-8
set fileencoding=chinese
set fileencodings=ucs-bom,utf-8,chinese
set langmenu=zh_CN.utf-8
"language messages zh_cn.utf-8
"Show line number.
let g:NERDTreeShowlineNumber=1
"Show hide file.
let g:NERDTreeHidden=1
"Show Node model.
let NERDTreeDirArrows=0
"Delete help information at the top
let NERDTreeMinimalUI=1
let g:NERDTreeDirArrowExpandable = '|'
let g:NERDTreeDirArrowCollapsible = '/'
"""""""""""""""""""""""""""""""
"end NerdTree setting
"""""""""""""""""""""""""""""""
"""""""""""""""""""""""""""""""
"nerdtree-git-plugin setting
"""""""""""""""""""""""""""""""
let g:NERDTreeGitStatusIndicatorMapCustom = {
\ "Modified" : "✹",
\ "Staged" : "✚",
\ "Untracked" : "✭",
\ "Renamed" : "➜",
\ "Unmerged" : "═",
\ "Deleted" : "✖",
\ "Dirty" : "✗",
\ "Clean" : "✔︎",
\ "Unknown" : "?"
\ }
"""""""""""""""""""""""""""""""
"end nerdtree-git-plugin setting
"""""""""""""""""""""""""""""""
""""""""""""""""""""""""""""""
"vim-nerdtree-syntax-highlight settings
""""""""""""""""""""""""""""""
"Highlight full name (not only icons). You need to add this if you don't have vim-devicons and want highlight.
let g:NERDTreeFileExtensionHighlightFullName = 1
let g:NERDTreeExactMatchHighlightFullName = 1
let g:NERDTreePatternMatchHighlightFullName = 1
"Highlight full name (not only icons). You need to add this if you don't have vim-devicons and want highlight.
let g:NERDTreeHighlightFolders = 1
"highlights the folder name
let g:NERDTreeHighlightFoldersFullName = 1
"you can add these colors to your .vimrc to help customizing
let s:brown = "905532"
let s:aqua = "3AFFDB"
let s:blue = "689FB6"
let s:darkBlue = "44788E"
let s:purple = "834F79"
let s:lightPurple = "834F79"
let s:red = "AE403F"
let s:beige = "F5C06F"
let s:yellow = "F09F17"
let s:orange = "D4843E"
let s:darkOrange = "F16529"
let s:pink = "CB6F6F"
let s:salmon = "EE6E73"
let s:green = "8FAA54"
let s:Turquoise = "40E0D0"
let s:lightGreen = "31B53E"
let s:white = "FFFFFF"
let s:rspec_red = "FE405F"
let s:git_orange = "F54D27"
let s:gray = "808A87"
let g:NERDTreeExtensionHighlightColor = {} " this line is needed to avoid error
let g:NERDTreeExtensionHighlightColor['o'] = s:gray " sets the color of o files to blue
let g:NERDTreeExtensionHighlightColor['h'] = s:blue " sets the color of h files to blue
let g:NERDTreeExtensionHighlightColor['c'] = s:green " sets the color of c files to blue
let g:NERDTreeExtensionHighlightColor['cpp'] = s:green " sets the color of cpp files to blue
let g:NERDTreeExtensionHighlightColor['c++'] = s:green " sets the color of c++ files to blue
""""""""""""""""""""""""""""""
"end vim-nerdtree-syntax-highlight settings
""""""""""""""""""""""""""""""
""""""""""""""""""""""""""""""
"vim-devicons settings
""""""""""""""""""""""""""""""`
set encoding=UTF-8
"Can be enabled or disabled
let g:webdevicons_enable_nerdtree = 1
"whether or not to show the nerdtree brackets around flags
let g:webdevicons_conceal_nerdtree_brackets = 1
"adding to vim-airline's tabline
let g:webdevicons_enable_airline_tabline = 1
"adding to vim-airline's statusline
let g:webdevicons_enable_airline_statusline = 1
""""""""""""""""""""""""""""""
"end vim-devicons settings
""""""""""""""""""""""""""""""`
set incsearch
tmux.conf
set -g default-terminal "screen-256color"
set-option allow-rename off
#-- base settings --#
set -g mode-keys vi
# prefix key (Ctrl+a)
set -g prefix ^a
unbind ^b
bind ^a send-prefix
#up
bind-key k select-pane -U
#down
bind-key j select-pane -D
#left
bind-key h select-pane -L
#right
bind-key l select-pane -R
.gitconfig
[user]
name = cfanzp
email = cfan.zp@qq.com
[color]
interactive = auto
diff = auto
status = auto
branch = auto
ui = true
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = false
[alias]
co = checkout
ci = commit
st = status
sh = stash
sa = stash apply
sp = stash pop
ap = add -p
br = branch
cp = checkout -p
cv = commit -v
dc = diff --cached
d = diff
pr = pull --rebase
ps = push
l = log --graph --pretty=format:'%C(yellow)%h%Creset %C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=short --all
lg = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --all
[hub]
protocol = https
[diff]
tool = vimdiff
[core]
editor = vim
linux如何配置命令行全局代理?
为什么要配置命令行全局代理?
- 我们在go语言开发的时候,安装vim插件的时候,有些资源不使用代理无法下载。这个时候配置一个全局代理,问题就轻松解决了。
配置
- 在家目录中的.profile或.bash_profile文件中加入如下别名配置
- 这里配置的是socks5代理
- http代理配置只需要把配置socks改成http即可
alias proxy='export all_proxy=socks5://127.0.0.1:1080;export http_proxy=socks5://127.0.0.1:1080;export https_proxy=socks5://127.0.0.1:1080;export no_proxy=socks5://127.0.0.1:1080; export ALL_PROXY=socks5://127.0.0.1:1080;export HTTP_PROXY=socks5://127.0.0.1:1080;export HTTPS_PROXY=socks5://127.0.0.1:1080;export NO_PROXY=socks5://127.0.0.1:1080'
alias unproxy='unset all_proxy; unset http_proxy; unset https_proxy;unset no_proxy; unset ALL_PROXY; unset HTTP_PROXY; unset HTTPS_PROXY;unset NO_PROXY'
使用方法
- 开启代理
proxy
- 关闭代理
unproxy
测试
curl github.com
- linux tools
实用工具
fanyi 翻译工具
- 安装: npm install fanyi -g
- 注意linux版本需要festval来支持发音,可以屏蔽:lib/fanyi/...../index.js中发音相关代码来使功能正常
translate-shell 翻译工具
- 安装:
- sudo pacman -S translate-shell
- 下载安装: wget git.io/trans chmod +x ./trans sudo mv trans /usr/bin/
- github 安装: git clone https://github.com/soimort/translate-shell && cd translate-shell make make install
- 使用
- 英译中: trans :zh good
- 中译英: trans :en good
- trans [原语种]:[目标语种] [要查的词|字|句]
- 查看语言代码:
- trans -R
- trans -T
- 帮助: https://blog.csdn.net/linuxprobe2017/article/details/78795009
jq 命令行json格式化工具
- 用法:
- cat 1.json | jq
- cat 1.json | jq -C 带颜色
- cat 1.json | jq -M 不带颜色
- jq . 1.json 显示所有
- jq '.[0]' TableCard.json 显示匹配的0号
- jq '.[0] | length' TableCreateConfigList.json 获取元素个数
- 帮助:https://blog.csdn.net/weixin_33842328/article/details/85064554
graphviz 命令行绘制流程图
- 帮助:
- 官网:http://www.graphviz.org/download/source/
- 相关介绍:https://www.zhihu.com/question/28596616
axel
- 使用
- axel -n 20 http://www.baidu.com/download/a.zip
- download:https://github.com/axel-download-accelerator/axel.git
compare 比较图片
how2
tldr 手册页简化工具
fpp(pathpicker)
- cd /usr/local
- git clone https://github.com/facebook/PathPicker.git
rg(ripgrep)
- github:https://github.com/BurntSushi/ripgrep
- install sudo pacman -S ripgrep
- centos install: sudo yum-config-manager --add-repo=https://copr.fedorainfracloud.org/coprs/carlwgeorge/ripgrep/repo/epel-7/carlwgeorge-ripgrep-epel-7.repo sudo yum install ripgrep
you-get
lsix
- 安装:
- sudo pacman -S imagemagick
- 下载:https://imagemagick.org/script/download.php
- https://github.com/ImageMagick/ImageMagick.git
- 使用帮助:https://ywnz.com/linuxml/3940.html
mobaxterm
- 安装: https://mobaxterm.mobatek.net/download-home-edition.html
- axel -n 20 https://download.mobatek.net/2032020060430358/MobaXterm_Portable_v20.3.zip
vim 插件coc
- 安装
- Plug 'neoclide/coc.nvim', {'branch': 'release'}
- 帮助
- https://www.jianshu.com/p/55cf1fa7a467
- github:https://github.com/neoclide/coc.nvim/wiki/Language-servers
mycli
- centos 安装
- 升级python2到python3
- wget https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tgz
- ./configure --prefix=/usr/local/python3
- make
- make install
- mv /usr/bin/python /usr/bin/python_bak
- ln -s /usr/local/python3/bin/python3 /usr/bin/python
- pip3.6 install mycli 8 .ln -s /usr/local/bin/mycli /usr/bin/mycli
cmus 音乐播放器
- https://github.com/cmus/cmus
制作个人的博客笔记系统
- markdown + pandoc + makefile + git(github)参考:http://www.mikewootc.com/wiki/tool/sitebuild/mikewiki.html
磁盘相关
- duf 查看磁盘使用情况
- du 查看各个文件占用磁盘情况
- df 查看磁盘暂用情况
网络安全工具
- PortBender
https://github.com/praetorian-inc/PortBender
mdbook
修改主题
- 参考
- book.toml demo
[book]
authors = ["cfanzp"]
language = "en"
multilingual = false
src = "src"
title = "linux开发笔记"
[output.html]
theme = "./my-theme"
no-section-label = false
[output.html.fold]
enable = true
level = 0
常用命令
sed批量替换
- 批量替换单个文件中的内容
set -i 's/land_logic/runner_logic/g' ./ctp_single.lua
- 批量替换多个文件中的内容
ag land_logic -l |xargs sed -i 's/land_logic/runner_logic/g'
set -i 's/land_logic/runner_logic/g' `ag land_logic rl ./*.lua`
tar
- 打包redis目录
tar -czvf redis.tar.gz redis
7z
- 解压 icon.7z
7z x icon.7z
- manjaro 拓展
- url:https://jingyan.baidu.com/article/6766299702211f14d51b8491.html
ssh
- 公私密钥登录
ssh root@123.207.126.144 -p22 -i id_rsa
ssh无法连接
- ssh登陆报错“WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!”问题原因及解决方法
删除对应ip的在known_hosts相关信息
vim /.ssh/known_hosts
- ssh 升级 openssh 8.8sp1
https://blog.csdn.net/qq_29974229/article/details/120888947
- 升级openssh反馈gitlab相关配置失效 git clone 需要输入密码
https://blog.csdn.net/qq_43297703/article/details/106123791?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.highlightwordscore&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.highlightwordscore
#vim /etc/ssh/sshd_config
KexAlgorithms diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group-exchange-sha256,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group1-sha1,curve25519-sha256@libssh.org
重启sshd:
#service sshd restart
确认ssh公钥已经上传到gitlab密钥之后,查看一下git用户是否被锁定
执行命令:sudo passwd -u git
强制执行命令:sudo passwd -u -f git
git
git 缩写配置
- 在home目录创建.gitconfig文件复制粘贴以下配置并保存退出
[user]
name = xx
email = xx@qq.com
[color]
interactive = auto
diff = auto
status = auto
branch = auto
ui = true
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = false
[alias]
co = checkout
ci = commit
st = status
sh = stash
sa = stash apply
sp = stash pop
ap = add -p
br = branch
cp = checkout -p
cv = commit -v
dc = diff --cached
d = diff
pr = pull --rebase
ps = push
l = log --graph --pretty=format:'%C(yellow)%h%Creset %C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=short --all
lg = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --all
[hub]
protocol = https
[diff]
tool = vimdiff
[core]
editor = vim
常用缩写
git co
git br
git ci
git lg
工作流
- 开发新功能a
sequenceDiagram
participant proj1
participant a
proj1->>a:基于proj1分支创建一个a分支(step1)
a->>proj1:a分支开发完后合并入proj1分支,并删除a分支(step2)
step1:
git br a proj1
git push origin a
step2:
git co proj1
git pull
git co a
git merge proj1
git push
git co proj1
git merge a
git push
git br -D a
常用命令
- 删除远程分支a:
- 切换到本地其它分支,如master
git co master
- 删除远程分支
git push origin --delete a
- 修改远程分支地址
git remote -v
git remote rm origin
git remote add origin git@gitee.com:cfanzp/linux_note.git
git tag
命令 | 作用 |
---|---|
git tag | 查看标签列表 |
git tag -l "v1.0*" | 模糊匹配查询 |
git tag --list "v0.0*" | 模糊匹配查询 |
git tag -a v1.0 -m "my version 1.0" | 添加附注标签 |
git show v1.0 | 查看标签相关信息 |
git tag -lw | 创建轻量标签,git show 不会看到额外标签信息 |
git tag -a v0.9 9fceb02 | 后期打标签 |
git push origin --tags | 将标签推送到远端 |
git tag -d v1.0 | 删除标签 |
git push origin --delete | 删除远端标签 |
git diff
命令 | 作用 |
---|---|
git diff | 查看差异 |
git diff cached | 查看工作版本和暂存的差异 |
git diff HEAD | 查看工作版本和HEAD的差异 |
git diff HEAD^ HEAD | 查看上上个版本和HEAD的差异 |
git diff --stat | 查看差异的文件列表 |
git diff --stat ./client | 查看client目录 差异的文件列表 |
git diff > patch | 使用git diff 打补丁 |
git apply --check patch | 使用补丁,没有任何输出表示可以顺利接受这个补丁 |
git apply --reject patch | 使用补丁,冲突会生成.rej文件 |
git 回退到某个版本
- git reset commit-id
- git push origin branch-name --force
远程分支更新
- git remote update origin --prune
删除所有历史commit,创建一个新仓库
- Checkout
git checkout --orphan latest_branch
- Add all the files
git add -A
- Commit the changes
git commit -am "commit message"
- Delete the branch
git branch -D master
- Rename the current branch to master
git branch -m master
- Finally, force update your repository
git push -f origin master
gitlab
gitlab 安装
配置要求
CPU:2核+
内存:2G+
gitlab服务器组成
1. nginx
2. gitlab-shell
3. gitlab-workhorse
4. logrotate:日志文件管理工具
5. postgresql:数据库
6. redis:缓存数据库
7. sidekiq:用于在后台执行队列任务
8. unicorn:An HTTP server for Rack applications
yum 安装
- 新建 /etc/yum.repos.d/gitlab_gitlab-ce.repo
[gitlab-ce]
name=Gitlab CE Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
gpgcheck=0
enabled=1
- 安装依赖
sudo yum install curl openssh-server openssh-clients postfix cronie
sudo service postfix start
sudo chkconfig postfix on
#这句是用来做防火墙的,避免用户通过ssh方式和http来访问。
sudo lokkit -s http -s ssh
- 再执行
sudo yum makecache
sudo yum install gitlab-ce
sudo gitlab-ctl reconfigure #Configure and start GitLab
- 修改密码
gitlab-rails console -e production
user = User.where(id:1).first
user.password='123456'
user.save!
安装参考链接
- https://www.jianshu.com/p/b04356e014fa
安装包安装
- 下载
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-10.0.0-ce.0.el7.x86_64.rpm
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-14.3.2-ce.0.el7.x86_64.rpm
- 安装
rpm -i gitlab-ce-10.0.0-ce.0.el7.x86_64.rpm
- 修改配置:指定服务器ip以及自定义端口
vim /etc/gitlab/gitlab.rb
修改external_url
- 重置并启动GitLab
gitlab-ctl reconfigure
gitlab-ctl restart
- 访问GitLab Web
如果没有域名,直接输入服务器ip和指定端口进行访问
初始账户: root 密码:5iveL!fe
参考链接
- https://www.cnblogs.com/zhangycun/p/10963094.html
常见问题
访问出现502错误
- 8080端口被暂用原因
Whoops, GitLab is taking too much time to respond.
关闭8080端口对应app或修改端口
参考url:https://blog.csdn.net/mqdxiaoxiao/article/details/104422826
gitlab目录结构
/opt/gitlab/ # 主目录
/etc/gitlab/ # 放置配置文件
/var/opt/gitlab/ # 各个组件
/var/log/gitlab/ # 放置日志文件
/var/opt/gitlab/git-data/repositories # 数据库的地址
/var/opt/gitlab/postgresql/data # gitlab组和项目的地址
/etc/gitlab/gitlab.rb # gitlab配置文件
启动日志
[root@dev129 zp]# gitlab-ctl restart
ok: run: alertmanager: (pid 70668) 1s
ok: run: gitaly: (pid 70679) 0s
ok: run: gitlab-exporter: (pid 70696) 1s
ok: run: gitlab-workhorse: (pid 70700) 0s
ok: run: grafana: (pid 70710) 0s
ok: run: logrotate: (pid 70724) 0s
ok: run: nginx: (pid 70732) 0s
ok: run: node-exporter: (pid 70739) 0s
ok: run: postgres-exporter: (pid 70745) 0s
ok: run: postgresql: (pid 70755) 0s
ok: run: prometheus: (pid 70765) 1s
ok: run: puma: (pid 70920) 0s
ok: run: redis: (pid 70926) 1s
ok: run: redis-exporter: (pid 70936) 0s
ok: run: sidekiq: (pid 70951) 0s
[root@dev129 zp]#
- 参考url:https://www.cnblogs.com/kevingrace/p/5985918.html
重置指定用户密码
https://baijiahao.baidu.com/s?id=1710986123716406076&wfr=spider&for=pc
迁移项目到gitlab
git clone --mirror <URL to my OLD repo location>
cd <New directory where your OLD repo was cloned>
git remote set-url origin <URL to my NEW repo location>
git push -f origin
git 修改远程地址
git remote rm origin
git remteo add origin git@192.168.2.129:myb/myb.git
mermaid
介绍
- 官网:https://mermaidjs.github.io/
- Github 项目地址:https://github.com/knsv/mermaid
使用
- Mermaid 支持多种图表的方向,语法如下:
graph 方向描述
图表中的其他语句...
- 符号
用词 | 含义 |
---|---|
TB | 从上到下 |
BT | 从下到上 |
LR | 从左到右 |
RL | 从右到左 |
- 结点含义
表述 | 含义 |
---|---|
id[文字] | 矩形节点 |
id(文字) | 圆角矩形节点 |
id((文字)) | 圆形节点 |
id>文字] | 右向旗帜状节点 |
id{文字} | 菱形节点 |
- 节点间的连线
表述 | 说明 |
---|
| 添加尾部箭头
-
| 不添加尾部箭头
-- | 单线 --text-- | 单线上加文字 == | 粗线 ==text== | 粗线加文字 -.- | 虚线 -.text.- | 虚线加文字
- eg
web修改数据库表配置--->通知share进程--->通知cn进程--->通知lobby进程--->luckydraw_agent服务reload相关表--->通知agent--->通知客户端
graph TB
id1(web管理后台)--修改抽奖配置表-->id2[share进程收到通知]
sequenceDiagram
participant Alice
participant Bob
Alice->Bob:Hello Bob, how are you?
graph TB start-->stop
graph LR;
start-->stop;
start-->A;
start-->B;
帮助
smb
重启
service smb restart
设置SELinux 成为permissive模式
setenforce 0
登录权限用的是samba用胡的权限
samba用户必须为linux用户
重启后无法访问smb
- 可能是防火墙原因,关闭防火墙
iptables -F
- 设置SELinux 成为permissive模式
setenforce 0
help:
i3wm key
- 多屏显示
xrandr --output HDMI2 --auto --right-of HDMI-3
- mod
ctrl: $mod
- config
alt:Mod1
ctrl:Mod4
- 打开一个虚拟终端
mod+enter
- 拆分
mod+enter
mod+v ++ mod+enter;水平分割
mod+n ++ mod+enter;竖指分割
- 聚焦到父窗口
mod+a
- 进入工作区
mod+1,2,3...
- 移动窗口到其他工作区
mod+shift+1,2,3
- 全屏模式:
mod+f
- 三种模式:
splith/splitv: mod + e mod+hjkl
stacking: mod + s mod+jk
tabbed: mod + w mod+hl
- 杀掉应用
mod+shift+q
- 重启i3
mod+shift+r
- 退出i3
mod+shift+e
- 浮动i3
mod+shift+space
- 打开应用
mod+d
- 小技巧:i3光标在virtualbox中,如何切换工作区?
- 方法是按右边Ctrl键盘,xfreerdp被聚焦时同样适用。
- 截图工具flameshot
- 安装 sudo apt-get install flameshot
- 设置快捷键 bindsym Print --release exec /usr/bin/flameshot gui
- 浮动for_window [class="flameshot"] floating enable
- 保存剪贴板快捷键Ctrl-c
- 使用按PrintScreen键
i3lock
介绍
- 可用于锁屏
- 默认白色
- 下载i3lock-color可以进行锁品美化,显示时间
i3lock-color
- 安装: sudo pacman -S i3lock-color
- 脚本:
- https://github.com/Raymo111/i3lock-color
- ./lock.sh
- ./lock_bar.sh
- github:
- https://github.com/Raymo111/i3lock-color
- i3/config 配置:
- bindsym $mod+Mod1+l exec ~/.config/i3/lock.sh
配置i3status
相关配置
- 配置文件路经: cp /etc/i3status.conf ~/.i3status.conf
- 配置颜色
- 设置cpu使用率
- 关闭IPv6显示
- 字段tztime local,format = “%Y-%m-%d %H:%M:%S %A” 最后添加一个%A 就可以显示星期几了。
参考帮助
- github:https://github.com/i3/i3status
- https://www.icode9.com/content-4-512576.html
- Arch linux i3bar之i3status配置 https://www.waimaosns.cc/arch-linux-i3bar-i3status-config/
- linux man page:https://linux.die.net/man/1/i3status
demo
- https://gitee.com/siyingcheng/my_manjaro_i3wm_config/blob/master/config/i3status/config
- ./.i3status.conf
install
- sudo pacman -S screenkey
player
- 推荐使用vlc,cvlc
声音管理器
- pavucontrol
- install: sudo pacman -S pavucontrol
polybar
install
yaourt -S polybar
install -Dm644 /usr/share/doc/polybar/config $HOME/.config/polybar/config
配置
- 弄一份 example 的配置文件过来 编辑启动文件 vim ~/.config/polybar/launch.sh 如下:
#!/usr/bin/env bash
# Terminate already running bar instances
killall -q polybar
# Wait until the processes have been shut down
while pgrep -u $UID -x polybar >/dev/null; do sleep 1; done
# Launch bar1 and bar2
# polybar bar1 &
# polybar bar2 &
polybar example &
echo "Bars launched..."
#!/usr/bin/env bash
Terminate already running bar instances
killall -q polybar
Wait until the processes have been shut down
while pgrep -u $UID -x polybar >/dev/null; do sleep 1; done
Launch bar1 and bar2
polybar bar1 &
polybar bar2 &
polybar example &
echo "Bars launched..." vim ~/.i3/config 搜索 start_conky,注释掉 添加 exec_always --no-startup-id ~/.config/polybar/launch.sh 替换原来系统的 conky 注释掉 i3bar_command i3bar,添加 i3bar_command $HOME/.config/polybar/launch.sh。 $mod + shift + r 重新加载 i3
other tools
yaourt -S ttf-unifont or yay -S ttf-unifont yaourt -S siji-git
polybar 不留边
我们可以修改config文件进行属性的设定。example的状态栏会有留边,我们可以修改border-size属性来取消。
border-size = 0 border-color = #00000000
polybar无法透明化
-
如果你使用compton进行透明化,polybar可能会出现无法透明的情况。
- 可能与你的compton配置有关。
- 可能是你的polybar问题。
-
将[color]下的background修改为 background = #cc222222 ,从而实现透明化。
rofi
- 安装
yaourt -S rofi
- 编辑 vim .i3/config,注释掉有 $mod+d 的那一行,添加:
bindsym $mod+d exec rofi -show run
- 重新加载配置
$mod+shift+r
-
$mod+d 运行
-
切换到 cd ~/.config/rofi/
-
生成配置文件
rofi -dump-Xresources > config
- 选择你想要的主题即可
rofi-theme-selector
dotfiles配置
使用makefile管理dotfiles
demo
- https://github.com/voldikss/dotfiles/blob/master/Makefile
ftp工具
ftp
- 安装ftp: yum install ftp
- 进入ftp: ftp 192.168.2.118
- 获取文件a.txt: get a.txt
- 上传文件a.txt: put a.txt
lftp
- yum install lftp
tmux
install
yum install -y tmux
退出tmux
C-b d 退出tumx,并保存当前会话
或
tmux detach
重命名窗口
C-b + :
rename-window myb_dev
或
C-b + ,
关闭当前pannel
C-b + :
kill-pane
重命名会话(Session)
C-b + :
rename-session myb_dev
或
C-b + $
防止退出时重命名窗口被重置
修改.tmux.conf
set-option allow-rename off
跳转pannel大小
Ctrl+b Ctrl+<arrow key>:按箭头方向调整窗格大小。
使用
-
打开:tmux
-
操作前缀:Ctrl + b
-
分割:%;b
-
关闭分割:x
-
C-b ? 显示快捷键帮助
-
C-b C-o 调换窗口位置,类似与vim 里的C-w
-
C-b 空格键 采用下一个内置布局
-
C-b ! 把当前窗口变为新窗口
-
C-b " 模向分隔窗口
-
C-b % 纵向分隔窗口
-
C-b q 显示分隔窗口的编号
-
C-b o 跳到下一个分隔窗口
-
C-b 上下键 上一个及下一个分隔窗口
-
C-b ALT-方向键 调整分隔窗口大小
-
C-b c 创建新窗口
-
C-b 0~9 选择几号窗口
-
C-b c 创建新窗口
-
C-b n 选择下一个窗口
-
C-b l 切换到最后使用的窗口
-
C-b p 选择前一个窗口
-
C-b w 以菜单方式显示及选择窗口
-
C-b t 显示时钟
-
C-b ; 切换到最后一个使用的面板
-
C-b x 关闭面板
-
C-b & 关闭窗口
-
C-b s 以菜单方式显示和选择会话
-
C-b d 退出tumx,并保存当前会话,这时,tmux仍在后台运行,可以通过tmux attach进入 到指定的会话
其它命令
# 列出所有快捷键,及其对应的 Tmux 命令
$ tmux list-keys
# 列出所有 Tmux 命令及其参数
$ tmux list-commands
# 列出当前所有 Tmux 会话的信息
$ tmux info
# 重新加载当前的 Tmux 配置
$ tmux source-file ~/.tmux.conf
帮助
frp
内网穿透工具
-
github: https://github.com/fatedier/frp.git https://github.com/fatedier/frp/releases/
-
help: https://sunnyrx.com/2016/10/21/simple-to-use-frp/
-
install
wget https://github.com/fatedier/frp/releases/download/v0.24.1/frp_0.24.1_linux_amd64.tar.gz
tar -zxvf frp_0.24.1_linux_amd64.tar.gz
cd frp_0.24.1_linux_amd64
rm -f frps
rm -f frps.ini
vi frpc.ini
- config
- 客户端配置服务器端端口和ssh端口
- start
-
server ./frps -c ./frps.ini
-
client ./frpc -c ./frpc.ini
- 后台运行
- server
nohup ./frps -c ./frps.ini &
- client
nohup ./frpc -c ./frpc.ini &
- 安全暴露内网服务
https://gofrp.org/docs/examples/stcp/
- 配置开机启动
#systemd配置文件路径:
/usr/lib/systemd/system/
- 添加frpc.service
- 添加frps.service
- 客户端日志目录:/var/log/frp/frpc.log
- 服务器日志目录:/var/log/frp/frps.log
- 日志文件若权限不够,修改frpc.service中的user为root或单独添加一个用户赋予权限
https://blog.csdn.net/qq_42952331/article/details/104810383
https://www.cnblogs.com/srczhang/p/12698685.html
flameshot
简介
flameshot 是一款跨平台的截图工具。
配置文件路经
linux:
~/.config/flameshot/flameshot.ini
windows:
C:\Users\{YOURNAME}\AppData\Roaming\flameshot\flameshot.ini
github地址:
https://github.com/flameshot-org/flameshot
下载
https://github.com/flameshot-org/flameshot/releases/tag/v0.10.2
常见平台安装
- MacOS
brew install --cask flameshot
- Manjaro
pacman -S flameshot
- Ubuntu 18.04+
apt install flameshot
- Debian 10+
apt install flameshot
- windows 直接下载安装包,下载地址:
https://github.com/flameshot-org/flameshot/releases/tag/v0.10.2
常用快捷键
按PrintScreen键 激活
Ctrl + c 拷贝到剪贴版
Ctrl + s 保存到文件
Ctrl + z 撤销
常见问题
- 运行时提示 linux下提示/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found 解决办法
sudo pacman -Ss gcc
sudo pacman -S core/gcc
nginx笔记
nginx学习知识点
- nginx正向代理
- nginx反向代理
- nginx透明代理
- 4层转发与7层转发
- nginx集成lua
- nginx开发插件
- nginx 日志配置
nginx相关资料
nginx配置笔记
基本概念
- 惊群现象:一个网路连接到来,多个睡眠的进程被同时叫醒,但只有一个进程能获得链接,这样会影响系统性能。
全局块
- nginx服务器用户组
- nginx进程pid
- 日志存放路径
- 配置文件引入
- 允许生成worker process数
event块
- 配置影响nginx服务器或与用户的网络连接。包括:
- 每个进程的最大连接数
- 选取那种事件驱动模型处理连接请求
- 是否允许同时接受多个网路连接
- 开启多个网络连接序列化等。
http块
- 可以嵌套多个server
- 配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。
- 文件引入
- mime-type定义
- 日志定义
- 是否使用sendfile传输文件
- 连接超时时间
- 单连接请求数
server块
- 配置虚拟主机的相关参数,一个http中可以有多个server块
location 块
- 配置请求的路由,以及各种页面的请求情况
nginx文件结构
... #全局块
events { #events块
...
}
http #http块
{
... #http全局块
server #server块
{
... #server全局块
location [PATTERN] #location块
{
...
}
location [PATTERN]
{
...
}
}
server
{
...
}
... #http全局块
}
一个nginx 配置文件的拆解分析
########### 每个指令必须有分号结束。#################
#user administrator administrators; #配置用户或者组,默认为nobody nobody。
#worker_processes 2; #允许生成的进程数,默认为1
#pid /nginx/pid/nginx.pid; #指定nginx进程运行文件存放地址
error_log log/error.log debug; #制定日志路径,级别。这个设置可以放入全局块,http块,server块,级别以此为:debug|info|notice|warn|error|crit|alert|emerg
events {
accept_mutex on; #设置网路连接序列化,防止惊群现象发生,默认为on
multi_accept on; #设置一个进程是否同时接受多个网络连接,默认为off
#use epoll; #事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport
worker_connections 1024; #最大连接数,默认为512
}
http {
include mime.types; #文件扩展名与文件类型映射表
default_type application/octet-stream; #默认文件类型,默认为text/plain
#access_log off; #取消服务日志
log_format myFormat '$remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for'; #自定义格式
access_log log/access.log myFormat; #combined为日志格式的默认值
sendfile on; #允许sendfile方式传输文件,默认为off,可以在http块,server块,location块。
sendfile_max_chunk 100k; #每个进程每次调用传输数量不能大于设定的值,默认为0,即不设上限。
keepalive_timeout 65; #连接超时时间,默认为75s,可以在http,server,location块。
upstream mysvr {
server 127.0.0.1:7878;
server 192.168.10.121:3333 backup; #热备
}
error_page 404 https://www.baidu.com; #错误页
server {
keepalive_requests 120; #单连接请求上限次数。
listen 4545; #监听端口
server_name 127.0.0.1; #监听地址
location ~*^.+$ { #请求的url过滤,正则匹配,~为区分大小写,~*为不区分大小写。
#root path; #根目录
#index vv.txt; #设置默认页
proxy_pass http://mysvr; #请求转向mysvr 定义的服务器列表
deny 127.0.0.1; #拒绝的ip
allow 172.18.5.54; #允许的ip
}
}
}
参考
- https://www.runoob.com/w3cnote/nginx-setup-intro.html
- https://www.jianshu.com/p/96d3b1fba09b
- https://www.jianshu.com/p/96d3b1fba09b
nginx日志
nginx如何配置日志
- 在server块中添加日志的格式定义及应用
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"'
'$connection $upstream_addr '
'upstream_response_time $upstream_response_time '
'request_time $request_time ';
access_log logs/access.log main;
- 每个字段的含义
$server_name:虚拟主机名称。
$remote_addr:远程客户端的IP地址,请求者IP。
-:空白,用一个“-”占位符替代,历史原因导致还存在。
$remote_user:远程客户端用户名称,用于记录浏览者进行身份验证时提供的名字,如登录百度的用户名scq2099yt,如果没有登录就是空白。
[$time_local]:访问的时间与时区,比如07/Jun/2016:08:54:27 +0800,时间信息最后的"+0800"表示服务器所处时区位于UTC之后的8小时。
$request:请求的URI和HTTP协议,这是整个PV日志记录中最有用的信息,记录服务器收到一个什么样的请求
$status:记录请求返回的http状态码,比如成功是200。
$uptream_status:upstream状态,比如成功是200.
$body_bytes_sent:发送给客户端的文件主体内容的大小,比如899,可以将日志每条记录中的这个值累加起来以粗略估计服务器吞吐量。
$http_referer:记录从哪个页面链接访问过来的。
$http_user_agent:客户端浏览器信息
$http_x_forwarded_for:客户端的真实ip,通常web服务器放在反向代理的后面,这样就不能获取到客户的IP地址了,通过$remote_add拿到的IP地址是反向代理服务器的iP地址。反向代理服务器在转发请求的http头信息中,可以增加x_forwarded_for信息,用以记录原有客户端的IP地址和原来客户端的请求的服务器地址。
$ssl_protocol:SSL协议版本,比如TLSv1。
$ssl_cipher:交换数据中的算法,比如RC4-SHA。
$upstream_addr:upstream的地址,即真正提供服务的主机地址。
$request_time:整个请求的总时间。
$upstream_response_time:请求过程中,upstream的响应时间。
vim
安装
$ cd /usr/local/src/
$ wget https://codeload.github.com/vim/vim/tar.gz/v8.0.0134
解压
$ tar zxf v8.0.0134
编译
$ cd vim-8.0.0134/
$ ./configure --with-features=huge \
--enable-multibyte \
--enable-rubyinterp=yes \
--enable-pythoninterp=yes \
--with-python-config-dir=/usr/lib64/python2.7/config \
--enable-python3interp=yes \
--with-python3-config-dir=/usr/local/python3/lib/python3.6/config-3.6m-x86_64-linux-gnu \
--enable-perlinterp=yes \
--enable-luainterp=yes \
--enable-gui=gtk2 --enable-cscope --prefix=/usr
./configure --with-features=huge --with-luajit --enable-luainterp=yes--enable-fail-if-missing --with-lua-prefix=/usr/local --prefix=/usr/local/vim/vim8 --enable-multibyte --enable-rubyinterp=yes --enable-pythoninterp=yes --with-python-config-dir=/usr/lib64/python2.7/config --enable-python3interp=yes --with-python3-config-dir=/usr/local/python3/lib/python3.6/config-3.6m-x86_64-linux-gnu --enable-perlinterp=yes --enable-luainterp=yes --enable-gui=gtk2 --enable-cscope
/bin/perl -e 'unless ( $] >= 5.005 ) { for (qw(na defgv errgv)) { print "#define PL_$_ $_\n" }}' > auto/if_perl.c
/bin/perl /usr/bin/xsubpp -prototypes -typemap /usr/share/perl5/ExtUtils/typemap if_perl.xs >> auto/if_perl.c
$ make VIMRUNTIMEDIR=/usr/share/vim/vim80
$ sudo make install
- 安装成功后,通过/usr/local/vim8/bin/vim运行vim命令。将vim命令路径添加到系统变量,就可以直接运行vim了。
$ /usr/local/vim/vim8/bin/vim /etc/profile.d/path.sh
添加以下内容:
#!/bin/bash
export PATH=$PATH:/usr/local/vim/vim8/bin/
$ source /etc/profile.d/path.sh
帮助
vim插件
注释插件
vim-commentary
- gitbub:vim-commentary
- 优点:好用
- 安装
- 使用:https://blog.csdn.net/jpch89/article/details/94453692
语法检测
syntastic
ale
- ale
- 优点:异步,不会有卡顿感
- 安装:
Plug 'dense-analysis/ale'
lua-checker
- luacheck:gitee
- luacheck使用
- lua-rocks:github
quickfix使用
quickfix功能将编译过程中产生的错误信息保存到文件中,
然后vim利用这些信息跳转到源文件的对应位置,
我们就可以进行错误的修正,
之后跳到下一个错误重复上述操作,
从而极大地提高编译错误的修改效率。
:cc 显示详细错误信息
:cp 跳到上一个错误
:cn 跳到下一个错误
:cw 如果有错误列表,则打开quickfix窗口,没有则什么也不错
:cope(n) 打开quickfix窗口,可以在后面添加窗口高度参数,如10行: :copen 10
:ccl(ose) 关闭quickfix窗口
vim基本用法
e: end 移动到一个单词的最后一个字符
命令行模式(Ex模式)
-
{start},{end}都是地址,这里用行号代表地址 :1,5p 打印第1到第5行,光标移动到第5行(:{start},{end}p)
-
1代表第1行的地址
-
.代表当前行的地址
-
%代表当前文件中的所有行
-
$代表行尾
-
'<代表高亮选区的开始
-
'>代表高亮选区的结束
-
'm 包含位置标记m的行
-
normal命令:
:4,6normal A; 在第4行到第6行后面加入分号
:4,6normal i// c++中注释4到6行
:4,6normal i-- lua中注释4到6行
-
@:命令重复上一个Ex
-
回溯历史命令
:ag up/down键:查看含有ag的历史命令
- 命令行窗口
Ctrl+f:命令行模式切换到命令行窗口
q:打开命令行Ex窗口
q/打开命令行查询窗口
执行Shell中的程序
- :!{cmd} 单次执行命令
- :shell 开启一个交互式的shell 使用exit退出返回到vim
- CTRL Z:挂起Vim返回bash执行命令 fg返回Vim,jobs查看后台挂起进程
移动
- j,k移动实际行
- gj,gk移动屏幕行(在有折行的情况下十分有用)
word-emotions(基于单词的移动)
-
w 正向移动到下一个单词的开头
-
e 正向移动到下一个单词的结尾
-
b 反向移动到上一个单词的开头
-
ge 反向移动到上一个单词的开头
-
ea 在单词结尾添加
-
gea 在上一个单词结尾添加
对字符进行查找
- f{char} 查字符
- F{char} 反向查字符
- ; 分号重复上次查找
- , 相反方向重复上次查找
vim-plug
说明
- vim-plug 是一个Vim插件管理器,
- 利用异步并行可以快速地安装、更新和卸载插件。
- 它的安装和配置都非常简单,而且在操作过程中会给出很多易读的反馈信息,是一个相当友好精简的插件。
安装配置
- 下载 plug.vim 文件,
curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
wget https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
- 根据操作系统不同,放置在以下autoload目录中:
- Linux: ~/.vim/autoload
mkdir ~/.vim/
mkdir ~/.vim/autoload/
cp plug/plug.vim ~/.vim/autoload
- Windows: ~\vimfiles\autoload\plug.vim
- 在vimrc配置文件中增加plug-vim部分,示例如下:
call plug#begin('~/.vim/plugged')
" Shorthand notation for plugin
Plug 'foo/bar'
call plug#end()
插件命令
- 安装插件:PlugInstall
- 卸载插件:PlugClean
- 更新vim-plug:PlugUpgrade
- 更新插件:PlugUpdate
- 插件状态:PlugStatus
nerdtree
设置nerdtree的宽度
- 在.vimrc中添加配置如下
let g:NERDTreeWinSize = 25
;类似设置Tagbar的宽度
let g:tagbar_width = 30
vim-commentary
插件地址:https://github.com/tpope/vim-commentary
插件用法
单行注释:
普通模式下 gcc,可以配合 . 使用。
普通模式下 vgc、Vgc、
极简版用法
这里尽量选择直观或者最优解,用一句话概括该插件的核心用法。 单行注释用 gcc,多行注释先进入可视模式再 gc,取消注释用 gcu
使用方法
gcc 注释当前行(普通模式)
gc 可视模式下,注释当前选中的部分
gcu 撤销上一次注释的部分,可以是一行也可以是多行
gcgc 撤销注释当前行和邻近的上下两行
修改注释符号
"vim-commentary
"为python和shell等添加注释
autocmd FileType python,shell,coffee set commentstring=#\ %s
"修改注释风格
autocmd FileType java,c,cpp set commentstring=//\ %s
vim-fugitive
github地址
https://github.com/tpope/vim-fugitive
使用
:Gblame其实就是执行git blame命令,然后直接在vim中将git的输出结果与源代码一一对应起来。这样当你读团队代码的时候发现了一个坑,然后想知道是谁写的这个坑的时候,只需要:Gblame一下,结果立马呈现。
install
方法1
sudo pacman -S fzf
方法2
git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf cd ~/.fzf/ ./install
key
- 上下选择:C-k,C-j
- 退出:C-c
- 列出当前目录: C-T
- 历史搜索: C-R
- 选择目录: Alt-c
- NB用法,用vim打开文件: vim $(fzf)
- NB用法,用vim打开文件: vim $(ag findparm -l | fzf)
- 切换目录:cd $(find * -type d | fzf)
use
- cmd | fzf
- cd *****
- vim **
- oh-my-zsh
preview
export FZF_CTRL_T_OPTS="--preview '(highlight -O ansi -l {} 2> /dev/null || cat {} || tree -C {}) 2> /dev/null | head -200'"
vim
- cmd
Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' }
Plug '/usr/bin/fzf'
Plug 'junegunn/fzf.vim'
参考文档
- https://www.cnblogs.com/dylancao/p/10833431.html
- https://www.jianshu.com/p/bb91582317ed
- https://segmentfault.com/a/1190000015977368
coc
vim 插件按钮
https://vimawesome.com/plugin/coc-nvim
支持c++
安装
- 安装ccls
sudo pacman -S ccls
https://blog.csdn.net/yupei881027/article/details/104876551/
https://www.jianshu.com/p/55cf1fa7a467
git clone --depth=1 --recursive https://github.com/MaskRay/ccls
cmake -H. -BRelease -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_PREFIX_PATH=/path/to/clang+llvm
cd ccls
sudo cmake --build Release --target install
ccls 帮助文档
- install extensions
:CocInstall coc-json coc-tsserver
- 配置c/c++ language server
:CocConfig
https://github.com/neoclide/coc.nvim/wiki/Language-servers#ccobjective-c
{
"languageserver": {
"ccls": {
"command": "ccls",
"filetypes": ["c", "cc", "cpp", "c++", "objc", "objcpp"],
"rootPatterns": [".ccls", "compile_commands.json", ".git/", ".hg/"],
"initializationOptions": {
"cache": {
"directory": "/tmp/ccls"
}
}
}
}
}
支持lua
CocInstall coc-lua
#安装lua-lsp
#https://github.com/Alloyed/lua-lsp
luarocks install --server=http://luarocks.org/dev lua-lsp
"languageserver": {
"lua": {
"command": "lua-lsp",
"filetypes": ["lua"]
}
}
帮助
Docker
参考
jenkins
参考
docker nginx
基本命令
#查看容器
docker ps
#创建并运行一个容器nginx127
docker run --name=nginx127 -p 8081:80 -d docker.io/nginx
#进入容器nginx127
docker exec -it nginx127 /bin/bash
#退出容器
exit
#停止容器
docker stop nginx127
#删除容器
docker rm nginx127
配置nginx 密码访问
- 修改容器内配置
#查看运行容器的ID
docker ps
#进入nginx容器
docker exec -it 容器ID /bin/bash
#容器内部操作
#更新软件源
apt-get update
#安装apache2-utils
apt-get install apache2-utils
#创建用户名
htpasswd -c /etc/nginx/passwd.db 用户名
#输入密码(自动弹出)
New password:
Re-type new password:
#查看用户和密码
cat /etc/nginx/passwd.db
#退出
exit
- 修改nginx配置文件
server {
listen 80;
server_name 域名;
access_log /var/log/nginx/logging.access.log main;
location / {
auth_basic "Please input password"; #这里是验证时的提示信息
auth_basic_user_file /etc/nginx/passwd.db;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://IP:8088;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
mysql nginx 转发
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
stream {
upstream mysql_proxy_zp {
hash $remote_addr consistent;
server mybonline-inet.mysql.rds.aliyuncs.com:8000 weight=5 max_fails=3 fail_timeout=30s;
}
server {
#数据库服务器监听端口
listen 8000;
proxy_connect_timeout 10s;
#设置客户端和代理服务之间的超时时间,如果5分钟内没操作将自动断开。
proxy_timeout 300s;
proxy_pass mysql_proxy_zp;
}
}
nginx配置代理上网
#user nobody;
worker_processes 1;
error_log /var/log/nginx/error.log debug;
events {
worker_connections 1024;
}
http {
resolver 8.8.8.8;
server {
listen 8088;
location / {
proxy_pass http://$http_host$request_uri;
}
}
windows 安装与使用ngin
https://www.cnblogs.com/jiangwangxiang/p/8481661.html
http://nginx.org/en/download.html
gitbook
docker 安装gitbook
docker run -d --name gitbook \
-p 4001:4000 \
-v /data/doc/doc/gitbook:/srv/gitbook \
-v /data/doc/doc/gitbook/_book:/srv/html \
fellah/gitbook
mysql 查看t_account表结构
desc t_account;
show columns from t_account;
describe t_account;
show create table t_account;
mysql 查看存储过程
select `name` from mysql.proc where db = 'xx' and `type` = 'PROCEDURE' //存储过程
select `name` from mysql.proc where db = 'xx' and `type` = 'FUNCTION' //函数
show create procedure register; //存储过程register
show procedure status; //存储过程
show function status; //函数
解决数据库注册中文写入失败的问题
-
问题描述: 调用注册存储过程是,nickname 含中文写入失败
-
解决方法: 将存储过程中文参数由varchar 改为nvarchar类型
解决数据库在插入数据中包含表情特殊符
-
问题描述: 在插入数据的过程中,如玩家名字,包含表情 插入数据失败
-
解决方法 将字段字符集设置utf8mb4,排序规则设置utf8mb4_unicode_ci t_account:nickname t_record_circle:circle_scores t_record_round:round_scores等等
修改密码
- 使用 mysqladmin 命令修改 MySQL 的 root 用户密码格式为
mysqladmin -u用户名 -p旧密码 password 新密码。