VIM 小技巧

freeopen · 最后更新时间:  [符文秘录] #vim

粘贴

查看剪贴板寄存器

: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>

后再输入就是当前光标下单词的意思,=expand(“”)应该是等效的

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	启用折叠

评论区🔗

你可以在这里快速开始评论,如果 name 填写为 email 时,当有回复时,会收到邮件提醒( 注:邮件提醒功能还在制作中 ).


回应区🔗

你有对这篇文章写回应吗? 你可以在这里提交你的文章网址或者推特链接(文章或推特内容需要包含这篇文章的地址,点击这里了解 Webmention):

回应内容会被 webmention.io 机器人收集,另一位机器人会在24小时内把回应展示到这里, 也欢迎通过 邮件 Twitter DM 和我讨论。

Back to top