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

Categories: #符文秘录 Tags: #vim


Comments

你有问题需要解决,想要分享反馈,或者讨论更多的想法吗?请随时在这里留下评论! 这个讨论将与 discussion on GitHub 直接连接,所以你也可以直接在那边发表评论