Tmux 常见问题以及解决方案

oh my tmux 关闭第二键ctrl-a ctrl-a可以用来移动光标到行首的,不要作为tmux的第二键 set -gu prefix2 unbind C-a Tmux reload config :source-file ~/.tmux.conf tmux 显示时间 ctrl b + t tmux从当前目录打开新的窗口 bind '"' split-window -c "#{pane_current_path}" bind % split-window -h -c "#{pane_current_path}" bind c new-window -c "#{pane_current_path}"

2022-05-28 12:30:58 · 1 分钟 · Eddie Wang

hugo博客增加mermaid 绘图插件

step1 在layouts/baseof.html 的最后追加如下内容 {{ if .Store.Get "hasMermaid" }} <script type="module"> import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.esm.min.mjs'; mermaid.initialize({ startOnLoad: true }); </script> {{ end }} step2: 在layouts/_default/_markup/render-codeblock-mermaid.html <pre class="mermaid"> {{- .Inner | htmlEscape | safeHTML }} </pre> {{ .Page.Store.Set "hasMermaid" true }} 在blog中增加如下代码 pie title French Words I Know "Merde" : 50 "Oui" : 35 "Alors" : 10 "Non" : 5 sequenceDiagram title French Words I Know autonumber Alice->>Bob: hello Bob-->>Alice: hi Alice->Bob: talking

2022-05-27 11:49:44 · 1 分钟 · Eddie Wang

klogg: 目前我最喜欢的日志查看工具

项目信息 github地址 https://github.com/variar/klogg 1. 安装 klogg是个跨平台软件,windows, mac, linux都可以安装。具体安装方式参考github项目地址 2. 界面布局 文件信息栏 日志栏 过滤器设置栏 过滤后的日志显示栏 3. 文件加载 klogg支持多种方式加载日志文件 将日志文件拖动到klogg中 直接将常见的压缩包文件拖动到klogg中,klogger将会自动将其解压后展示 支持从http url地址下载日志,然后查看 支持从剪贴板复制日志,然后展示 4. 过滤表达式 因为klogg支持正则过滤,所以他的功能就非常强悍了。 逻辑表达式 表达式 例子 备注 与 and “open” and “close” 包含open,并且包含close 或 or “open” or “close” 包含open, 或者 close 非 not not(“open”) 不包含open 与或非同时支持复杂的运算,例如包含open 但是不包含close: "open" and not("close") 5. 快捷方式 klogg的快捷方式很多参考了vim, vim使用者非常高兴。 键 动作 arrows 上下或者左右移动 [number] j/k 支持用j/k上下移动 h/l 支持用h/l左右移动 ^ or $ 滚动到某行的开始或者结尾 [number] g 跳到对应的行 entered G 跳到第一行 Shift+G 跳到最后一行 Alt+G 显示跳到某一行的对话框 ’ or " 在当前屏幕快速搜索 (forward and backward) n or N 向前或者向后跳 * or . search for the next occurrence of the currently selected text / or , search for the previous occurrence of the currently selected text f 流的方式,类似 tail -f m 标记某一行,标记后的行会自动加入过滤结果中 [ or ] 跳转到上一个或者下一标记点 + or - 调整过滤窗口的尺寸 v 循环切换各种显示模式- Matches: 只显式匹配的内容- Marks: 只显式标记的内容- Marks and Matchs:显示匹配和标记的内容 (Marks and Matches -> Marks -> Matches) F5 重新加载文件 Ctrl+S Set focus to search string edit box Ctrl+Shift+O 打开对话框去选择其他文件 参考 https://github.com/variar/klogg/blob/master/DOCUMENTATION.md

2022-04-13 19:41:53 · 1 分钟 · Eddie Wang

macbook pro 使用1664天的感受

我之前写过一篇文章《macbook pro使用三年后的感受》,今天这篇文章是用4.5年的感受。 再次梳理一下,中间遇到过的问题 蝴蝶键盘很早有有些问题了,最近疫情在家,键盘被用坏了,J键直接坏了。只能外接键盘来用 屏幕下方出现淡红色的纹路,不太明显,基本不影响使用 中间我自己给macbook换过一次电池,换电池之前只要不插电,macbook很容易就关机了 风扇经常转,噪音有点吵,我已经觉得无所谓了 17年买这台电脑的时候,应该是9400左右。配置应该是最低配的 i5双核2.3Ghz, 8G内存,128硬盘的。 有些人可能惊讶,128G的硬盘怎么能够用的。但是我的确够用,我的磁盘还有将近50G的剩余空间呢。 我不是视频或者影音工作者,用的软件比较少。整个应用程序所占用的空间才4个多G。剩下的文稿可能大部分是代码。 由于我我基本上都是远程用ssh连上nuc上开发,所以mac上的资料更少。 但是macbook键盘坏了这个问题,是不能忍的。偶尔要移动办工的时候,不可能再带个外接键盘吧。 是时候准备和陪伴我4.5年的电脑说再见了。 本来想买14寸的macbook pro m1的,但是重量的增加以及很丑的刘海也是我不能忍的。 所以我觉得我会买一台轻便点的windows笔记本,而且windows还有一个很吸引我的点,就是linux子系统。这个linux子系统,要比mac的系统更加linux。 各位同学有没有推荐的windows的轻便笔记本呢?

2022-04-04 21:29:13 · 1 分钟 · Eddie Wang

[未完成] 浪潮之底系列 - tcpdump的故事

故事发生在1988年的美国。这一年互联网的始祖网络,阿帕网已经诞生了将近20年。而我们所熟知的linux将在三年后,也就是1991才出现。 在1988年,这时候的互联网只有阿帕网。 然而这个网络并没有想象中的那么好用,他还存在很多问题,而且也经常崩溃。 解决阿帕网崩溃的这个问题,落到了LBL(Lawrence Berkeley National Laboratory实验室的肩上。 这个实验室有四个牛人,他们同时也是tcpdump的发明人。 Van Jacobson Sally Floyd Vern Paxson Steve McCanne 这个实验室主要的研究方向是TCP拥塞控制、BSD包过滤、VoIP等方向。 为了解决阿帕网经常崩溃的问题,就必须要有一个好用的抓包工具。 本着不重复造轮子的原则,这时候也已经又了一个叫做etherfind的工具,但是这个工具有以下的问题 包过滤的语法非常蹩脚 协议编解码能力非常弱 性能也非常弱 总之一句话,他们认为etherfind不行。 工欲善其事,必先利其器。所以他们就想创造一个新的工具。这个工具必须要有以下的特征 能够从协议栈底层过滤包 把高级的过滤语法能够编译的底层的代码 能够在驱动层进行过滤 创建了一个内核模块叫做 Berkeley Packet Filter(BPF) 参考 https://baike.baidu.com/item/ARPAnet/3562284

2022-03-27 17:33:18 · 1 分钟 · Eddie Wang

有意思的命令行工具

1. datamash https://www.gnu.org/software/datamash/ 能够方便的计算数据的平均值,最大值,最小值等数据。 2. textsql https://github.com/dinedal/textql 能够方便的对csv文件做sql查询 3. graph-cli https://github.com/mcastorina/graph-cli 能够直接读取csv文件,然后绘图。

2022-02-25 09:23:35 · 1 分钟 · Eddie Wang

manjaro kde 之旅

1. 安装vivaldi浏览器 pamac install vivaldi 参考:https://wiki.manjaro.org/index.php/Vivaldi_Browser 2. 关闭三次密码错误锁定 修改/etc/security/faillock.conf, 将其中的deny取消注释,并改为0,然后注销。重新登录。 deny = 0 3. 禁用大写锁定键 在输入设备中,选择键盘-》高级》 Caps Lock行为, 选中Caps Lock被禁用, 然后应用。

2022-01-18 09:39:05 · 1 分钟 · Eddie Wang

简单实用的M4教程

文本处理的难点 有一个文本文件,内容如下,摘抄其中两行内容如下,里面有两个配置db_addr, local_ip这两个配置,需要在不同环境要修改的。 db_addr=1.2.3.4:3306 local_ip=192.168.2.4 但是哪些地方要修改呢?为了提醒后续的维护者,我们给要修改的地方加个备注吧。 db_addr=1.2.3.4:3306 # 这里要修改 local_ip=192.168.2.4 # 这里要修改 .... ... if len(a) = 1024 { # 这里要修改1024 ... } ... 用sed替换? 让别人一个一个地方去修改,也太麻烦了,有没有可能用脚本去处理呢?例如我们用DB_ADDR和LOCAL_IP这种字符串作为占位符,然后我们就可以用sed之类的命令去做替换了。 db_addr=DB_ADDR local_ip=LOCAL_IP sed -i 's/DB_ADDR/1.2.3.4:3306/g;s/LOCAL_IP/192.168.0.1/g' 1.cfg 这样做是有点方便了,但是也有以下几个问题 如果定义的占位符太多,sed会变得越来越长 如果某些占位符里本身就含有/或者一些特殊含义的字符,就需要做特殊处理了 用M4吧,专业的人做专业的事情 apt-get install m4 通过命令行定义宏 1.m4 db_addr=DB_ADDR local_ip=LOCAL_IP .... ... if len(a) = MAX_LEN { ... } ... M4可以使用-D来定义宏和宏对应的值,默认输出到标准输出,我们可以用>将输出写到文件中 m4 -D DB_ADDR=1.2.3.4:3306 -D LOCAL_IP=192.168.2.2 -D MAX_LEN=2048 1.m4 db_addr=1.2.3.4:3306 local_ip=192.168.2.2 .... ... if 1 = 2048 { ... } ... 用define语句定义宏 用define()语句来定义宏 用`‘来作为字符串引用,避免被展开 define(`DB_ADDR', `1.2.3.4:3306') define(`LOCAL_IP', `192.168.2.2') define(`MAX_LEN', `2048') db_addr=DB_ADDR local_ip=LOCAL_IP .... ... if len(a) = MAX_LEN { ... } ... 执行命令m4 1.m4, 可以看到宏展开,但是有很多空行。 ...

2021-09-25 12:22:19 · 1 分钟 · Eddie Wang

使用树莓派3b+作为辅助开发体验

配置 树莓派3B+的配置 4核1G CPU ARMv7 Processor 64G SD卡 常用软件 neovim LXTerminal终端 chrome浏览器 谷歌拼音输入法 常用语言 golang c nodejs 外设 键盘鼠标: 雷柏 无线机械键盘加鼠标 150块左右 屏幕:一块ipad大小外接屏幕,400块左右 常用工作 Golang UDP Server开发, 总体还算流畅。前提时不要加载太多的neovim插件,特别象coc-vim, go-vim等插件,安装过后让你卡的绝望。每次当我绝望之时,我就关闭了图形界面,回到终端继续干活。但是即使使用纯文本方式登录,运行vim还是很卡。 后来我在macbook pro上也用neovim开发,发现也是很卡。于是我就释然了,9千多的macbook都卡,300多的树莓派卡一点怎么了! 但是卡顿还是非常影响心情的,于是我就大量精简vim的插件。 我基本上就用两个插件,都是和状态栏有关的。其他十二个插件都给注释掉了 call plug#begin('~/.vim/plugged') Plug 'vim-airline/vim-airline' Plug 'vim-airline/vim-airline-themes' Plug 'jiangmiao/auto-pairs' "Plug 'yonchu/accelerated-smooth-scroll' "Plug 'preservim/tagbar', { 'for': ['go', 'c']} "Plug 'airblade/vim-gitgutter' "Plug 'fatih/vim-go', { 'do': ':GoUpdateBinaries', 'for': 'go' } "Plug 'dense-analysis/ale' "Plug 'vim-scripts/matchit.zip' "Plug 'pangloss/vim-javascript', {'for':'javascript'} "Plug 'leafgarland/typescript-vim' "Plug 'neoclide/coc.nvim', {'branch': 'release'} "Plug 'jremmen/vim-ripgrep' "Plug 'plasticboy/vim-markdown' "Plug 'mzlogin/vim-markdown-toc' call plug#end() filetype plugin indent on filetype plugin on filetype indent on set guicursor= set history=1000 let g:netrw_banner=0 let g:ale_linters = { \ 'javascript': ['standard'], \ 'typescript': ['tsserver'] \} let g:ale_fixers = {'javascript': ['standard']} let g:ale_lint_on_save = 1 let g:ale_fix_on_save = 1 let g:ale_typescript_tsserver_executable='tsserver' let g:airline#extensions#tabline#enabled = 1 let g:ale_set_loclist = 0 let g:ale_set_quickfix = 1 let g:ale_open_list = 0 let g:vim_markdown_folding_disabled = 1 let g:vmt_cycle_list_item_markers = 1 let g:tagbar_sort = 0 " colorscheme codedark " let g:airline_theme = 'codedark' " " buffer let mapleader = "," nnoremap <Leader>j :bp<CR> " previous buffer nnoremap <Leader>k :bn<CR> " next buffer nnoremap <Leader>n :bf<CR> " previous buffer nnoremap <Leader>m :bl<CR> " next buffer nnoremap <Leader>l :b#<CR> " previous buffer nnoremap <Leader>e :e<CR> " open netrw nnoremap <Leader>d :bd<CR> " close buffer nnoremap <Leader>g :!go fmt %<CR> " go fmt current file nnoremap <Leader>tm :%s/\s\+$//e<CR> " trim space at endofline nnoremap <Leader>a A nnoremap <Leader>w :w<CR> nnoremap <Leader>c :clo<CR> nnoremap <Leader>/ :Rg<Space> inoremap jj <ESC> highlight CocErrorFloat ctermfg=White let g:netrw_list_hide= '.*\.swp$' let g:ctrlp_custom_ignore = { \ 'dir': '\v[\/]\.?(git|hg|svn|node_modules)$', \ 'file': '\v\.(exe|so|dll|min.js)$', \ 'link': 'some_bad_symbolic_links', \ } set autoread " au CursorHold,CursorHoldI * :e " au FocusGained,BufEnter * :e set so=7 set ruler set cmdheight=2 set hid set backspace=eol,start,indent set whichwrap+=<,>,h,l set ignorecase set smartcase set hlsearch set incsearch set showmatch set mat=2 syntax enable set background=dark set ffs=unix,dos,mac "set ai "Auto indent "set si "Smart indent set wrap "Wrap lines set cursorline set tabstop=4 set shiftwidth=4 set expandtab set background=dark " colorscheme solarized " let g:ackprg = 'rg --vimgrep --type-not sql --smart-case' map ; : autocmd FileType javascript setlocal ts=2 sts=2 shiftwidth=2 但是没有go-vim写golang还是不太方便的,特别是保存的时候格式化,但是也有方案, 执行vim的Ex命令,:!go fmt % 视频 看视频是非常危险的行为,有可能需要强制关机重启。

2021-08-30 21:18:15 · 2 分钟 · Eddie Wang

树莓派3b+踩坑记录

选择那个版本的系统? 不要过高的估算树莓派的性能,最好不要选择那些具有漂亮界面的ubuntu或者manjaro, 因为当你使用这些带桌面的系统时,很大概率界面能让你卡的想把树莓派砸了。 所以优先选择不带图形界面的lite版本的系统,如果确实需要的话,可以再安装lxde 网线插了,还是无法联网 插了网线,网口上的绿灯也是在闪烁,但是eth0就是无法联网成功。真是气人。 解决方案: 编辑 /etc/network/interfaces, 将里面的内容改写成下面的,然后重启树莓派。 这个配置文件的涵义是:在启动时就使用eth0有线网卡,并且使用dhcp给这个网卡自动配置IP auto eth0 iface eth0 inet dhcp iface etho inet6 dhcp source-directory /etc/network/interfaces.d 无桌面版本,如何手工安装桌面 首先安装lxde sudo apt update sudo apt install lxde -y 然后通过raspi-config, 配置默认从桌面启动 sudo rasip-config 选择系统配置, 按回车键进入 选择Boot/Auto login, 按回车进入 选择Desktop, 回车确认。保存之后,退出重启。 键盘无法输入| | 在linux中是管道的意思,然而我的键盘却无法输入。最终发现是键盘布局的原因。 在图标上右键,选择配置 注意这里是US, 这是正常的。如果是UK,就是英式布局,是有问题的,需要把UK的删除,重新增加一个US的。 如何安装最新版本的neovim? 树莓派使用apt安装的neovim, 版本太老了。很多插件使用上都会体验不好。所以建议安装最新版的neovim。 ...

2021-08-14 11:01:17 · 1 分钟 · Eddie Wang