粘贴
查看剪贴板寄存器
:reg
选择第3个寄存器内容粘贴
"3p
消除高亮
:noh
批量数字递增
#圆括号内 被 summatch引用
:%s/\(\d\{5}\)/\=submatch(1)+10000
批量替换
:%s/from/to/g
e.g. :%s/,/\r/g
:args **/*.java
:argdo %s/old/new/egc | update
e:正则 g:全局 c:替换提醒
查看变量
“$”——访问环境变量; “&”——访问 Vim 选项; “@”——访问寄存器。
:echo &tabstop
:echo $VIMRUNTIME
查看vim tabstop 的最后设置位置
:verbose setlocal ts? et?
显示看不见的字符
set listchars=eol:$,tab:>-,trail:~,extends:>,precedes:<
set list
config for chinese
language messages zh_CN.UTF-8
set fencs=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1
set fenc=utf-8
set encoding=utf-8
set termencoding=utf-8
set gcr=a:block-blinkon0
自定义快捷键
背景: linux 环境下已安装 sdcv 命令行的英文字典
目的: 配置 快捷键 (ctrl + k) 自动翻译 当前光标位置的 单词
nmap <C-k> : !sdcv -0 <C-R>=expand("<cword>")<CR><CR>
nmap <C-k> : !sdcv -0 <C-R><C-W><CR>
# <C-R>: 插入某个寄存器值
# expand("<cword>"): 当前光标位置的 单词
# <CR>: Enter
noremap 表示非递归,因为 map 默认是递归映射的
nmap 表示在普通模式下生效
vmap 表示在可视模式下生效
imap 表示在插入模式下生效
cmap 表示在命令行模式下生效
un 后面跟按键组合,表示删除这个映射
e.g. unvmap <C-c>
clear 表示清除快捷键映射
e.g. mapclear、nmapclear、nnoremapclear
键表
<k0> - <k9> 小键盘 0 到 9
<S-...> Shift+键
<C-...> Control+键
<M-...> Alt+键 或 meta+键
<A-...> 同 <M-...>
<Esc> Escape 键
<Up> 光标上移键
<Space> 插入空格
<Tab> 插入Tab
<CR> 等于<Enter>
多个tags
:set tags+=~/vimfiles/tags/XLib/Inc/XLib.tags
:set tags+=/Users/linxinhao/proj/mmcv/mmcv/tags
Tab 4 变 tab 2
:set ts=4 “ tab 设为 4 空格
:set noexpandtab “ 把4空格转tab
:%retab!
:set ts=2 “ tab 设为 2 空格
:set expandtab “ 把tab转2空格
:%retab!
折叠
关闭折叠
set nofoldenable
普通模式下时
zc 关闭当前打开的折叠
zo 打开当前的折叠
zm 关闭所有折叠
zM 关闭所有折叠及其嵌套的折叠
zr 打开所有折叠
zR 打开所有折叠及其嵌套的折叠
zd 删除当前折叠
zE 删除所有折叠
zj 移动至下一个折叠
zk 移动至上一个折叠
zn 禁用折叠
zN 启用折叠