Browse Month: 一月 2016

vim 编辑器使用

vim 快捷键

基本操作

移动

Movement by screensi

命令 解释 命令 解释
ctrl + f 下移一页 ctrl + b 上移一页
ctrl + d 下移半页 ctrl + u 上移半页
ctrl + y 下移一行 ctrl + e 上移一行
zt[Enter] 移动到屏幕顶部 zz[.] 移动到屏幕中间
zb[-] 移动到屏幕底部 nzz 第n行移动到屏幕中间
H 移到屏幕顶部的行 M 移到屏幕中间的行
L 移到屏幕底部的行 nH 移到顶部下n行
nL 移到底部上n行 nEnter 下移n行
+ 下移一行 上移一行
^ 第一个非空格处 n\ 移动到当前行的n列
n 右移n 个字符

Movement by text blocksi

命令 解释 命令 解释
w 移到下一个单词开头 b 移到上一个单词开头
e 移到单词结尾 ( 移到当前句子开头
) 下一行句子开头 { 这一段的开头
} 下一段的开头 [[ 这一节的开头
]] 下一节的开头 ge [gE] 移到上一个单词

Movement by searches for patternsi

命令 解释 命令 解释
/ 往前搜索 ? 往回搜索
n [/Enter] 往前重复搜索 N [?Enter] 往回重复搜索
d/c 搜索c字符并删除前面的内容 fx 向后搜索x
Fx 向前搜索x tx 向后搜索x
Tx 向前搜索x ; 重复上一次搜索
, 重复搜索,方向相反

set nowrapscan 控制搜索是否可以绕回开头

Movement by line numberi

命令 解释 命令 解释
G 文件底部 gg 文件首行
nG 移到n行 返回上一个位置
返回上一个位置

复制粘贴

[line]y[scope] 复制

p/P 粘贴

大小写转换

[line]gu[scope] 转小写

[line]gU[scope] 转大写

scope 表示范围可能取值

  • w,e 转换单词
  • nw,ne 转换n个单词
  • nG 转换光标到nG行
  • 0, $ 转换光标到行首,行尾
  • h,l 转换光标前后一个字母

line 表示转换当前光标下多少行

查找替换

  • /word
  • ?word 向上查找

  • n1,n2s/word/replace/g 替换n1 到n2 行之间的word 为replace

  • 1,$s/word/replace/gc 确认并替换整篇文件的word 为replace

全局替换

对目录下所有文件执行替换

标记需要批量编辑的文件

:args ./*.php //D盘a目录下的所有纯文本文件作上标记
:args ./**/*.php  //包括子目录

执行替换

:argdo %s/^I/    /ge |update

将所有文件的abc替换为def字符串

  • %s 替换操作将施于所有行上
  • g 使得每行中的匹配字符串都被替换
  • e 避免某些文件中找不到字符串时报错
  • | 分隔两个命令
  • update 在文件有改变时进行保存

组合命令

组合命令

更改 删除 复制 解释
cH dH yH 屏幕顶部
cL dL yL 屏幕底部
c+ d+ y+ 下一行
c5 d5 y5 本行第5列
2c) 2d) 2y) 往下第2句
c{ d{ y{ 上一段
c/pattern d/pattern y/pattern 模式
cn dn yn 下一个模式
cG dG yG 文件结尾
c13G d13G d13G 第13行

标记

命令 解释 命令 解释
mx 当前位置标记为x ‘x 光标移动到标记x所在行第一个字符
`x 光标移到标记x的字符 回到上一个标记或上下文
回到上一个标记或上下文

多窗口

:[n]split[++opt][+cmd][file]

  • n 新窗口显示的行数
  • opt 选项
  • 执行指令
  • 欲编辑文件

打开多窗口

命令 解释 命令 解释
vim -On file1 file2… 启动时分屏 o 是字母o
n 是数字,表示分成几屏 ctrl+w v [vsp] 左右分隔当前打开的文件
:vsp filename 打开新文件,并左右分隔 vim -on file1 file2… 启动时分屏
ctrl+w s [sp] 上下分隔,当前文件 :sp filename 打开新文件,上下分隔
new 水平窗口 vnew 垂直窗口
sview filename 水平窗口打开文件 sfind filename 在路径中查找文件
ctrl+w c 关闭分屏 ctrl+w q 关闭分屏

切换窗口

命令 解释 命令 解释
ctrl+w l [h][k][j][w] 移到下一个窗口 ctrl+w w 窗口间切换
ctrl+w t 移到左上角窗口 ctrl+w b 移到右下角窗口
ctrl+w p 移到前一个窗口

移动窗口

命令 解释 命令 解释
ctrl+w r 轮换窗口位置 ctrl+w x 交换同行同列窗口位置
ctrl+w T 新建窗口到新标签页 ctrl+W L[H][K][J] 移动窗口到相应方向

调整窗口

命令 解释 命令 解释
ctrl+w = 所有屏都有一样的高度 ctrl+w + [:resize +n] 增加高度
ctrl+w – [:resize +n] 减少高度 :resize n 设置窗口水平尺寸
ctrl+w > 增加窗口宽度 ctrl+w < 减少窗口宽度
ctrl+w _ 最大窗口高度 ctrl+w 最大窗口宽度

缓冲区

命令 解释 命令 解释
windo 在每个窗口执行命令 bufdo 在每个缓冲区执行命令
ls [ls!][files][buffers] 列出所有缓冲区 ball 载入所有缓冲区
badd file 将文件加入列表 bunload 从内存中卸载
buffer[n] 移到缓冲区n bnext[n] 移到接下来的n个缓冲区 bNext[n] 移到前n各缓冲区
bfirst 移到第一个缓冲区 blast 移到最后一个缓冲区

分页

vim -p filename 以多分页形式打开文件

分页操作

| tabnew filename 增加分页
| tabe filename 在新分页中打开文件
| tabc 关闭当前tab
| tabo 关闭其他所有tab
| tabs 查看所有打开的tab
| tabp 或gT 前一个
| tabn 或gt 后一个
| tabsplit 打开当前缓冲区文件
| tabf 搜索当前目录并打开
| tabdo 多分页页命令

移动

| tabp 或gT 前一个
| tabn 或gt 后一个
| tabfirst 或tabr 移动到第一个分页
| tablast 移动到最后一个
| tabm[n] 移动到第n个分页

配置

| vim 默认只能打开10个分页页 set tabpagemax=15
| 分页页在窗口上方是否显示 set showtabline=[1,2,3]
| help tab-page-intro 帮助

其他命令

| :n 跳至下一个文件
| :e# 回到之前编辑文件
| :Ex 目录浏览
| :Sex 水平分隔窗口,并开启目录浏览器
| :ls 显示buffer情况
| :shell 不关闭vim的情况下切换至shell
| :exit 从shell回到vim
| ZZ 存储离开
| :r [filename] 读取文档
| :n1,n2 w [filename] 存储n1,n2间的内容为filename文档

折叠

保存折叠 :mkview :loadview

折叠方式

  • manual
  • indent
  • expr
  • syntax
  • diff
  • marker
命令 解释 命令 解释
zA 递归切换折叠状态 zC 递归关闭折叠
zD 递归删除折叠 zO 递归打开折叠
zE 去除所有折叠 zf 创建折叠
nzF 创建涵盖n行的折叠 zM 设置foldlevel 为0
za 切换折叠状态 zc 关闭折叠
zd 删除折叠 zi 切换foldenable选项的值
zj,zk 移动光标到下一个折叠值 zm,zr 递减或递增foldlevel
zo 打开折叠

疑难杂症

vim 下中文乱码解决, 在vimrc 中添加以下配置

set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1
set fileencoding=utf-8
set encoding=utf-8
set gfw=NSimsun:h12

Go IDE

https://github.com/fatih/vim-go

http://blog.myitcv.org.uk/2014/03/03/programming-with-go-in-vim.html

https://coolaj86.com/articles/getting-started-with-golang-and-vim/

https://github.com/fatih/vim-go

其他

获取当前文件全路径

  • :echo expand('%:p') 全路径
  • :echo expand('%:t') 文件名
  • :echo expand('%:p:h') 文件路径,不包含文件名

配置快捷键

"复制当前文件名到剪切板
nmap <leader>cf :let @*=expand("%:t")<CR>
"复制当前文件全路径到剪切板
nmap <leader>cp :let @*=expand("%:p")<CR>
"复制当前文件路径, 不包含文件名到剪切板
nmap <leader>cd :let @*=expand("%:p:h")<CR>

不支持鼠标

"设置不启用鼠标
set mouse=""

查看历史命令

普通模式下按 q
在按 :

参考

  • 《学习vi和vim编辑器 第七版》

vim 编辑器使用

vim 快捷键整理收集

基本操作

移动

Movement by screensi

命令 解释 命令 解释
ctrl + f 下移一页 ctrl + b 上移一页
ctrl + d 下移半页 ctrl + u 上移半页
ctrl + y 下移一行 ctrl + e 上移一行
zt[Enter] 移动到屏幕顶部 zz[.] 移动到屏幕中间
zb[-] 移动到屏幕底部 nzz 第n行移动到屏幕中间
H 移到屏幕顶部的行 M 移到屏幕中间的行
L 移到屏幕底部的行 nH 移到顶部下n行
nL 移到底部上n行 nEnter 下移n行
+ 下移一行 上移一行
^ 第一个非空格处 n\ 移动到当前行的n列
n 右移n 个字符

Movement by text blocksi

命令 解释 命令 解释
w 移到下一个单词开头 b 移到上一个单词开头
e 移到单词结尾 ( 移到当前句子开头
) 下一行句子开头 { 这一段的开头
} 下一段的开头 [[ 这一节的开头
]] 下一节的开头 ge [gE] 移到上一个单词

Movement by searches for patternsi

命令 解释 命令 解释
/ 往前搜索 ? 往回搜索
n [/Enter] 往前重复搜索 N [?Enter] 往回重复搜索
d/c 搜索c字符并删除前面的内容 fx 向后搜索x
Fx 向前搜索x tx 向后搜索x
Tx 向前搜索x ; 重复上一次搜索
, 重复搜索,方向相反

set nowrapscan 控制搜索是否可以绕回开头

Movement by line numberi

命令 解释 命令 解释
G 文件底部 gg 文件首行
nG 移到n行 `` 返回上一个位置
返回上一个位置

复制粘贴

[line]y[scope] 复制

p/P 粘贴

大小写转换

[line]gu[scope] 转小写

[line]gU[scope] 转大写

scope 表示范围可能取值

  • w,e 转换单词
  • nw,ne 转换n个单词
  • nG 转换光标到nG行
  • 0, $ 转换光标到行首,行尾
  • h,l 转换光标前后一个字母

line 表示转换当前光标下多少行

查找替换

  • /word
  • ?word 向上查找

  • n1,n2s/word/replace/g 替换n1 到n2 行之间的word 为replace

  • 1,$s/word/replace/gc 确认并替换整篇文件的word 为replace

全局替换

对目录下所有文件执行替换

标记需要批量编辑的文件

执行替换

将所有文件的abc替换为def字符串

  • %s 替换操作将施于所有行上
  • g 使得每行中的匹配字符串都被替换
  • e 避免某些文件中找不到字符串时报错
  • | 分隔两个命令
  • update 在文件有改变时进行保存

组合命令

组合命令

更改 删除 复制 解释
cH dH yH 屏幕顶部
cL dL yL 屏幕底部
c+ d+ y+ 下一行
c5 d5 y5 本行第5列
2c) 2d) 2y) 往下第2句
c{ d{ y{ 上一段
c/pattern d/pattern y/pattern 模式
cn dn yn 下一个模式
cG dG yG 文件结尾
c13G d13G d13G 第13行

标记

命令 解释 命令 解释
mx 当前位置标记为x ‘x 光标移动到标记x所在行第一个字符
`x 光标移到标记x的字符 `` 回到上一个标记或上下文
回到上一个标记或上下文

多窗口

:[n]split[++opt][+cmd][file]

  • n 新窗口显示的行数
  • opt 选项
  • 执行指令
  • 欲编辑文件

打开多窗口

命令 解释 命令 解释
vim -On file1 file2… 启动时分屏 o 是字母o
n 是数字,表示分成几屏 ctrl+w v [vsp] 左右分隔当前打开的文件
:vsp filename 打开新文件,并左右分隔 vim -on file1 file2… 启动时分屏
ctrl+w s [sp] 上下分隔,当前文件 :sp filename 打开新文件,上下分隔
new 水平窗口 vnew 垂直窗口
sview filename 水平窗口打开文件 sfind filename 在路径中查找文件
ctrl+w c 关闭分屏 ctrl+w q 关闭分屏

切换窗口

命令 解释 命令 解释
ctrl+w l [h][k][j][w] 移到下一个窗口 ctrl+w w 窗口间切换
ctrl+w t 移到左上角窗口 ctrl+w b 移到右下角窗口
ctrl+w p 移到前一个窗口

移动窗口

命令 解释 命令 解释
ctrl+w r 轮换窗口位置 ctrl+w x 交换同行同列窗口位置
ctrl+w T 新建窗口到新标签页 ctrl+W L[H][K][J] 移动窗口到相应方向

调整窗口

命令 解释 命令 解释
ctrl+w = 所有屏都有一样的高度 ctrl+w + [:resize +n] 增加高度
ctrl+w – [:resize +n] 减少高度 :resize n 设置窗口水平尺寸
ctrl+w > 增加窗口宽度 ctrl+w < 减少窗口宽度
ctrl+w _ 最大窗口高度 ctrl+w 最大窗口宽度

缓冲区

命令 解释 命令 解释
windo 在每个窗口执行命令 bufdo 在每个缓冲区执行命令
ls [ls!][files][buffers] 列出所有缓冲区 ball 载入所有缓冲区
badd file 将文件加入列表 bunload 从内存中卸载
buffer[n] 移到缓冲区n bnext[n] 移到接下来的n个缓冲区 bNext[n] 移到前n各缓冲区
bfirst 移到第一个缓冲区 blast 移到最后一个缓冲区

分页

vim -p filename 以多分页形式打开文件

分页操作

| tabnew filename 增加分页
| tabe filename 在新分页中打开文件
| tabc 关闭当前tab
| tabo 关闭其他所有tab
| tabs 查看所有打开的tab
| tabp 或gT 前一个
| tabn 或gt 后一个
| tabsplit 打开当前缓冲区文件
| tabf 搜索当前目录并打开
| tabdo 多分页页命令

移动

| tabp 或gT 前一个
| tabn 或gt 后一个
| tabfirst 或tabr 移动到第一个分页
| tablast 移动到最后一个
| tabm[n] 移动到第n个分页

配置

| vim 默认只能打开10个分页页 set tabpagemax=15
| 分页页在窗口上方是否显示 set showtabline=[1,2,3]
| help tab-page-intro 帮助

其他命令

| :n 跳至下一个文件
| :e# 回到之前编辑文件
| :Ex 目录浏览
| :Sex 水平分隔窗口,并开启目录浏览器
| :ls 显示buffer情况
| :shell 不关闭vim的情况下切换至shell
| :exit 从shell回到vim
| ZZ 存储离开
| :r [filename] 读取文档
| :n1,n2 w [filename] 存储n1,n2间的内容为filename文档

折叠

保存折叠 :mkview :loadview

折叠方式

  • manual
  • indent
  • expr
  • syntax
  • diff
  • marker
命令 解释 命令 解释
zA 递归切换折叠状态 zC 递归关闭折叠
zD 递归删除折叠 zO 递归打开折叠
zE 去除所有折叠 zf 创建折叠
nzF 创建涵盖n行的折叠 zM 设置foldlevel 为0
za 切换折叠状态 zc 关闭折叠
zd 删除折叠 zi 切换foldenable选项的值
zj,zk 移动光标到下一个折叠值 zm,zr 递减或递增foldlevel
zo 打开折叠

疑难杂症

vim 下中文乱码解决, 在vimrc 中添加以下配置

参考

  • 《学习vi和vim编辑器 第七版》

MarkDown 学习笔记

语法

标题

标题是每篇文章都需要也是最常用的格式,在 Markdown 中,如果一段文字被定义为标题,只要在这段文字前加 # 号即可

列表

在文字前加上 – 或 * 即可变为无序列表,有序列表则直接在文字前加 1. 1. 1. 符号要和文字之间加上一个字符的空格

  1. 无序列表
  2. 有序列表

图片和链接

链接

本人github地址

图片

![默认名字](图片地址)

粗体与斜体

粗体 两个**包起来

斜体 一个*包起来

代码

表格

这是示例

Tables Are Cool
col 3 is right-aligned $1600
col 2 is centered $12
zebra stripes are neat $1

分隔线

*** 有如下分隔效果


语法手册

工具

  • 1
  • 2