Vim常用命令
录制宏
qq
x
x
<Esc>
q
执行宏
@q
分屏
:sp filename
:vsp filename
<Ctrl + w>
v
<Ctrl + w>
s
<Ctrl + w>
h
<Ctrl + w>
l
<Ctrl + w>
j
<Ctrl + w>
k
跳转到历史编辑位置
<Ctrl + o>
<Ctrl + i>
在当前目录下的文件的内容中递归地搜索abc,跳转到下一个搜索到的内容
:vimgrep abc **/*.*
:cnext
删除到第20行
d20G
跳转到上一段,下一段
{
}
防止粘贴引起缩进混乱
:set paste
不退出vim编译运行代码
:!gcc test.c
:! a
编辑多行
<Ctrl-v>
"move to the last line
<Shift-I>
"edit
<Esc>
加密文件
:X
"输入密码
自动补全<Ctrl-n>
合并多个行
按V并移动,选中要合并的行
:j
合并两行:<Shift-j>
在新tab中打开文件
:tabnew filename
跳转tab
gt
gT
把制表符换成空格
:retab
比较文件
vimdiff file1 file2
:vert diffsplit file2
<Ctrl-u> 向上跳转
<Ctrl-d> 向下跳转
<Ctrl-f> 向前跳转
<Ctrl-b> 向后跳转
手动安装插件
:set runtimepath? "如果怕麻烦直接粘贴到这里的任一路径中
"set runtimepath^=~/.vim/bundle/ctrlp.vim "或添加到.vimrc里
查找替换
:{作用范围}s/{目标}/{替换}/{替换标志}
:%s/foo/bar/g
"替换当前行及之后共3行中的内容
:.,.+3s/foo/bar/g
重构代码
"跳转到变量定义处
gd
"跳转到上一个大括号
[{
"跳转到互补的括号
%
"生成当前搜索正在使用的正则表达式
<Ctrl-r>/
"使用ctags生成代码索引
!ctags -R
"跨文件查找定义位置
<Ctrl-]>
"返回旧的文件
<Ctrl-t>
"sudo apt install global #使用gtags生成索引
"gtags -v
:set csprg=gtags-cscope
:cs add GTAGS
在用Ctrl-V选中的Visual Block中查找替换
"替换掉Visual Block中所有空格
"在选中后按:
:'<,'>s/\%V\s\%V//g
查看二进制文件
:set binary
:%!xxd -p
:%!xxd -p -r
:w
切换编码格式
:set enc " 查看当前编码格式
:e ++enc=cp1252 " 重载为masm32 editor默认编码
:e ++enc=gb2312 " 重载为windows汉字编码
:w ++enc=utf-8 " 保存为utf-8格式
自动补全与拼写检查
:set spell spelllang=en " 打开拼写检查
:set nospell " 关闭拼写检查
]s " 找到下一个错误拼写单词
z= " 拼写建议
zg " 把未识别单词加入字典
<Ctrl-n> "<Ctrl-p> 自动补全
undo tree
:earlier 10 " 恢复到10分钟之前的状态
:later 10 " 恢复到10分钟之后的状态
g- " 按时间向前恢复
g+ " 按时间向后恢复
输入希腊字母
<Ctrl-k>
t*
配置文件
syntax enable
set expandtab
set smarttab
set shiftwidth=4
set tabstop=4
set ai
set si
set wrap
set fileencodings=ucs-bom,utf-8,utf-16,gb2312,gbk,big5,gb18030,latin1
set encoding=utf8
filetype plugin on
filetype indent on
set history=5000
set autoread
set so=7
let $LANG='en'
set langmenu=en
set ruler
set nu
set hid
set ignorecase
set smartcase
set hlsearch
set incsearch
set lazyredraw
set magic
set showmatch
set mouse=a
set undofile
set undodir=~/.vim/undodir
set backupdir=~/.vim/backupdir
set directory=~/.vim/swapdir
set noerrorbells
set novisualbell
"set spell spelllang=en
set autochdir
colorscheme industry
"以下为rust-analyzer和ALE插件
filetype plugin indent on
let g:ale_linters = {'rust': ['analyzer']}
set completeopt=menu,menuone,preview,noselect,noinsert
let g:ale_completion_enabled = 1
"以下为cscope需要的设置
set csprg=gtags-cscope
set cscopequickfix=s-,c-,d-,i-,t-,e-
set csto=0
set cscopetag
set cst
if filereadable("GTAGS")
cs add GTAGS
elseif $CSCOPE_DB != ""
cs add $CSCOPE_DB
endif
set tags=./tags,tags;
" 记住上次打开的位置
if has("autocmd")
au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
endif
评论已关闭