something about Netcat

Netcat参数

  • Netcat版本:[v1.10-46]

  • 连接目标主机: nc [-option] hostname port[s] [ports]
  • 监听等待连接: nc -l -p port [-options] [hostname] [port]

参数 含义 备注
-c 使用 shell command作为连接后的应用程序, /bin/sh 危险
-e filename 使用 filename应用作为连接后的应用程序; 危险
-b 允许广播
-g gateway 设置路由跳点,最多设置8个
-G num
-i secs 扫描端口时,设置的发送线路的延迟间隔;
-k 设置socket保持存活
-l (小写L)监听模式等待连接 常用
-n 仅数字ip地址,无DNS
-o file (小写字母O),十六进制转储
-p port 指示本地端口 常用
-r 随机化本地和远端端口
-q secs 在标准输入结束和延迟和退出
-s addr 本地源地址
-T tos 设置服务类型 常用
-t 应答TELNET沟通
-u 指示使用UDP模式 常用
-v 详细模式 ,显示详细信息,( -vv )更加详细 常用
-w secs 设置超时时间
-C 设置,发送 CRLF 的换行符
-z 启用 无I/O模式 ,此模式无I/O内容,仅进行扫描 ;更快速; 常用

something about vim

tricks

  • 移动选中文本

    1
    vnoremap J :m '>+1<CR>gv=gv
    1
    vnoremap K :m '<-2<CR>gv=gv
  • 使用正则排序

    1
    :sort r /reg/
  • 将外部命令的输出读入缓冲区

    1
    :r !cmd
  • 将缓冲区内容作为外部命令输入

    1
    :w !cmd
  • 运行选中代码

    1
    :'<,'>!python
  • 将当前文件转换为html文件

    1
    :%TOhtml
  • 统计文件字节数,支持visual模式

    1
    g<C-g>
  • 在insert模式下删除行首方向一个单词

    1
    <C-w>
  • 在insert模式下删除到行首

    1
    <C-u>
  • 在insert模式中重复上一行内容 / 下一行内容

    1
    <C-y> / <C-e>
  • 在insert模式下执行一个normal命令

    1
    <C-o>{cmd}
  • 底部命令行中输入当前光标单词

    1
    <C-r><C-w>
  • 底部命令行中输入当前光标所在行内容

    1
    <C-r><C-a>
  • shell中挂起vim任务

    1
    <C-z>
  • shell中查看挂起的任务

    1
    jobs
  • shell中返回挂起的vim 任务

    1
    fg [n]
  • 向文件尾方向移动30行 / 向文件头方向移动30行

    1
    30+ / 30-
  • 跳转至上次关闭文件时,normal模式下光标所在行

    1
    '"
  • 跳转至上次关闭文件时,insert模式下光标所在行

    1
    '^
  • insert模式中,重复上次insert模式中所作的所有操作

    1
    <C-a>
  • 逆转文档内容

    1
    :g/^/m0
  • 调试配置项

    1
    2
    # help :verbose
    :verbose set background

正则

  • 环视

    • 顺序肯定环视

      very magic模式公式 \vXYZ%(regexp)@=

      1
      2
      3
      4
      # magic 模式 匹配后面是`world`的`hello`
      /hello\%\(world\)\@=
      # very magic 模式 匹配后面是`world`的`hello`
      /\vhello%(world)@=
    • 顺序否定环视

      very magic模式公式 \vXYZ%(regexp)@!

      1
      2
      3
      4
      # magic 模式 匹配后面不是`world`的`hello`
      /hello\%\(world\)\@!
      # very magic 模式匹配后面不是`world`的`hello`
      /\vhello%(world)@!
    • 逆序肯定环视

      very magic模式公式 \v%(regexp)@<=XYZ

      1
      2
      3
      4
      # magic 模式 匹配前面是`hello`的`world`
      /\%\(hello\)\@<=world
      # very magic 模式 匹配前面是`hello`的`world`
      /\v%(hello)@<=world
    • 逆序否定环视

      very magic模式公式 \v%(regexp)@<!XYZ

      1
      2
      3
      4
      # magic 模式 匹配前面不是`hello`的`world`
      /\%\(hello\)\@<!world
      # very magic 模式 匹配前面不是`hello`的`world`
      /\v%(hello)@<!world
    • 标记匹配起始/结束

      \zs,\ze

      1
      /\vhello\zsworld\ze

窗口管理

  • 移动当前窗口位置

    1
    2
    3
    4
    5
    6
    7
    " 将当前窗口移动到左边
    <C-w>H

    " 下/上/右
    <C-w>J
    <C-w>K
    <C-w>L
  • 进入指定窗口

    1
    2
    3
    4
    5
    " 进入最顶部窗口
    <C-w>t

    " 进入最底部窗口
    <C-w>b
  • 旋转窗口

    1
    2
    3
    4
    5
    " 第一个窗口 -> 第二个 -> 第三个 -> ... -> 第一个
    <C-w>r

    " 第一个窗口 -> 第n个窗口 -> 第n-1个 -> ... -> 第一个
    <C-w>R
  • 将轮转文件拆分到另一个窗口

    1
    <C-w>^
  • 创建一个新窗口,编辑新文件

    1
    <C-w>n

diff模式

  • 指定两个文件diff

    在拆分的两个窗口中分别使用:diffthis,指定对两个窗口中的文件进行diff

    1
    :diffthis
  • 指定当前buff文件与某个新文件diff

    1
    :diffsplit /path/to/newfile
  • 关闭diff模式

    1
    :diffoff
  • 冲突间移动

    1
    2
    3
    4
    " 移动至下一个冲突(文件尾部方向)
    ]c
    " 移动至上一个冲突(文件首部方向)
    [c
  • 冲突合并

    1
    2
    3
    4
    5
    6
    7
    " 另一个文件 ---> 当前文件
    " 意为`obtain`
    do

    " 当前文件 ---> 另一个文件
    " 意为`put`
    dp
  • diff窗口管理

    与普通窗口管理相同

补全

  • 退出补全

    1
    2
    " 退出补全菜单,恢复当次已补全内容
    C-e
  • 确定补全

    1
    2
    " 选中补全菜单中当前条目,并接受
    C-y

排版

  • 居中

    1
    2
    3
    4
    " 居中当前文本行
    :center
    " 简写 :ce
    :ce
  • 居左

    1
    2
    3
    4
    " 居左当前文本行
    :left
    " 简写 :le
    :le
  • 居右

    1
    2
    3
    4
    " 居右当前文本行
    :right
    " 简写 :ri
    :ri
  • 重排

    1
    2
    3
    4
    "对选中的文字重排,即对过长的文本行断行
    gq
    "重排当前行
    gqq

编辑二进制

  • 编辑二进制文件

    1
    2
    # 以-b模式启动,可以将文件认为是二进制的方式进行编辑打开
    vim -b filename
  • 将当前缓冲区内容转为十六进制

    比较大的问题是,由于是死板的转换,文末的换行符也会被转换为0a

    1
    2
    " 借助于vim的外部工具xxd将内容转为十六进制
    :%!xxd
  • 编辑好的十六进制内容转换为正常文本

    1
    :%!xxd -r

外部命令

  • 调用外部命令

    普通调用外部命令

    1
    :! ls
  • 调用外部命令,输出追加到buffer

    1
    2
    " help read
    :r ! ls
  • 调用外部命令处理缓冲区内容

    buffer内容作为命令的stdin,处理结果输出回buffer

    1
    :% ! sort

buffer

  • 光标居顶

    可见区下移

    1
    zt
  • 光标居中

    1
    zz
  • 光标居底

    可见区上移

    1
    zb
  • 光标居左

    可见区右移

    1
    zL
  • 光标居右

    可见区左移

    1
    zH

选项

  • modeline

    在文件首/尾写入vim局部配置, 以注释方式如

    1
    # vim: set tabstop=2 shiftwidth=2 textwidth=120 expandtab :
  • scrolloff

    设置vim渲染时,buffer顶部/底部预留行数