CodeMirror Vim(私有)

Key buffer:
Vim mode:

https://codemirror.net/demo/vim.html


Some Vim Command

设置

:set shiftwidth = 4 设置缩进的空格数为4
:set fileencoding 查看编码
:set ignorecase  :set ic 查找时无视大小写

替换

单字符替换:在命令模式下使光标位于要替换的字符,按r,再按需要的字符, R替换多个,需要ESC退出
:s/h3/h2/ 替换当前行第一个h3为h2
:s/h3/h2/g 替换当前行全部h3为h2
:74,80s/em/b/g 将74-80行的全部em替换为b
:%s/60.173.10.177/&/gn 查看log中60.173.10.177出现了多少次

正则替换

量词 + 代表【1~n】次,在Vim 里替换要用 \+
量词 {n, m} 匹配至少n 次,最多m 次,在Vim 里要用 \{n, m}
同样捕获的(,在Vim 里替换要用 \(
例子: :%s/[a-z]\+[^a-z,]{2,}\([a-z]\)/\1/g

删除

:g/请选择/d 删除包含“请选择”的所有行
:g!/请选择/d 删除不包含“请选择”的所有行
:g/^\s*$/d 删除空行
要查找相同的两行,先将内容排序,然后查找前一行等于后一行者
:sort 排序
/^\(.\+\)$\n\1
:g/^\(.\+\)$\n\1/d

合并行

J 合并行,带空格 
gJ 合并行,无空格 

剪切板

:reg 查看剪切板
"9y 粘贴到剪切板第9个位子
"9p 粘贴第9个位子
Macbook 拷贝全文到系统剪切板: :%w !pbcopy
Macbook 拷贝选中的部分去系统剪切板: v 选中要拷贝内容 输入:w !pbcopy (会自动变成:'<,'>w !pbcopy)

折叠行

v 选中要折叠的行
zf (create fold)
zo (open fold)
zc (close fold)
zd (delete fold)
要按快点,如果zc两个键点得慢,会失灵

光标

ctrl-f ctrl-b 上下翻屏
Ctrl-o Ctrl-i 光标的回退前进 `` 光标的前进回退切换
zt zz zb set current line at top,center,bottom of window
H M L 光标移动屏幕的上中下方

查找

% 匹配光标所在处的大中小括号{[(移动到反括号
* # 匹配光标当前所在的单词,移动到Next/Last匹配的单词

分屏

:Ve = :vsp + :Te
:Se = :sp + :Te

列模式

Ctrl+V(linux) Ctrl+Q(win) 进入列模式(每一列接受相同的指令)
然后用 J 移动选中多行, $ 到行尾 A 插入<br/>(或 0 到行首 I 插入-)
Esc 退出(不是Ctrl+C, Mac是option+Esc),选中的这几行同时增加 <br/>  - 
screenshot

另存为

:sav filename 另存为

保存会话

:mksession ~/.session.vim 如果文件重复会报错
:mksession! ~/.session.vim 强行写入
vim -S ~/.session.vim 恢复上次会话(gvim -S c:/users/mark/.session.vim)

vim find与tab 历史buf

vim $(f . 'mark/li')
:ls 显示所有 buf 清单, vim $() 或 :Vex :Te :Te : 和 tabnew 打开的 bufs
:bn 查看 Next buf
:bp 查看 Prev buf
:b34 打开 buf 34
:bd 3 Delete buf 3
:tabs  显示所有tabs 及tab number,方便${number}gt

特殊应用

:! 偷瞄一眼
:!ls 便瞄一眼执行ls命令的结果
:w !sudo tee % 当前用户非root
:%!xxd 转化为二进制模式
:%!xxd -r 修改了部分编码后,可以通过此命令恢复成文本模式
:%TOhtml 将文字生产一个html文件

命令行

Ctrl + R 搜索命令历史记录
Ctrl + K 删除光标右侧所有字符
Ctrl + U 删除光标左侧所有字符