录制宏

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

标签: none

评论已关闭