vim 快捷键记录
VIM的6种模式:
- 常用:
普通模式(Normal mode)
插入模式(Insert mode)
命令行模式(Command line mode)
可视模式(Visual mode)
- 不常用:
选择模式(Select mode)
Ex模式(Ex mode)
1. 普通模式
- h 左移动
- j 下移动
- k 上移动
- l 右移动
- w 移动到下一个单词
- b 移动到上一个单词
- f/F+你要搜索的字母 快速将光标定位到该字母上面,";"往后查找","往前查找(只对当前行有效)
- 宏录制:按q键加任意字母开始录制,再按q键结束录制(这意味着vim中的宏不可嵌套),使用的时候@加宏名称
例如:qa开始录制宏名称为a,q结束宏录制,@a或者10@a(10次)直接调用。注意:在块视图下用"normal @a"调用宏
- 0 行首
- $ 行尾
- gg 文件开头
- G 文件尾部
- ctrl+u 上翻页
- ctrl+f 下翻页
- zz 将光标置至屏幕的中间
- ZZ 保存并退出文件
- 10d 指定删除第10行
- y 复制
- yiw 复制一个单词 p粘贴
- yy 复制一行 p粘贴
- p 粘贴
- d 删除
- dd 删除一行
- daw 删除光标后的单词
- d$ 删除光标到最后
使用 d和p 组合可以达到剪切的效果
- caw 修改光标后的一个单词并进入插入模式 C 删除光标后所有字符并进入插入模式
- ct+字符 删除光标后到指定字符中间所有的
- r 替换字符 R 连续替换字符
2.插入模式
ctrl+p 代码补全(当前文件中出现过的)
ctrl+w 删光标前一个字符
ctrl+h 删光标前一个单词字母
ctrl+u 当前行从光标所在位置,往前全部删除(删除当前行)
ctrl+c、ctrl+[ 从插入模式切换到普通模式(gi从普通模式定位到上一次插入模式的光标位置)
3. 命令模式
替换(可以使用正则)
:% s/self/this/g 全局替换 %表示所有行(0,10 0到10行),s表示替换,g表示全局
:% s/self/this/c 替换时会需要确认
:% s/self/this/n n参数不会替换,只是查找功能,会高亮显示
:vs 竖分屏
:sp 横分屏
Ctrl+w 切换分屏
:e +filename 打开其他文件
:buffers 查看缓存区的所有文件
:b id/filename id为buffers查看出来的编号,返回到对应的文件编辑
:! +命令 可以执行linux命令
:abbr quick the quick brown fox 如果输入quick并按Tab键,它将被the quick brown fox字符串替换
:%s/\s\+$//g 删除行尾多个空格
:%s/^\s*//g 删除行首多个空格
:%s/^(.*)n1/1$/ 删除重复行
:%s/\v[^\x00-\xff]+//g 删除所有中文
:%s/\d//g 删除所有数字
VIM插件安装
1. 安装vim plug 用来安装别的插件
curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
2. startify 修改启动界面
https://github.com/mhinz/vim-startify
3. python-mode
https://github.com/python-mode/python-mode
安装完成后,可能出现如下报错:
Pymode requires vim compiled with +python. Most of features will be disabled.
解决办法:
4.vim-airline 修改状态栏
https://github.com/vim-airline/vim-airline
5. indentline 缩进线
https://github.com/Yggdroot/indentLine
6. 配色
https://github.com/w0ng/vim-hybrid
7. 文件树列表显示
https://github.com/preservim/nerdtree
vimrc需要加入自动启动: autocmd vimenter * NERDTree
8. 模糊搜索器
https://github.com/kien/ctrlp.vim
9. 快速定位到文本的某个字符
https://github.com/easymotion/vim-easymotion
nmap ss <Plug>(easymotion-s2)
10. 成对内容快速修改(主要针对成对的符号""/()/[])
https://github.com/tpope/vim-surround
cs 修改 cs + old + new
ys 增加 ys + iw + new
ds 删除 ds + old
11. 快速搜索文件和字符
https://github.com/junegunn/fzf.vim
:Files [PATH] 搜索文件
:Ag [PATTERN] 搜索字符
12. 快速修改文本内相同的字符
https://github.com/brooth/far.vim
13. 高亮单词
https://github.com/lfv89/vim-interestingwords
14. tagbar优化浏览代码
15. deoplete.nvim
vimrc设置内容
set nu
syntax on
let mapleader=','
inoremap <leader>ww <Esc>:wq<cr>
inoremap <leader>qq <Esc>:q!<cr>
inoremap jj <Esc>
" NERDTree
nnoremap <leader>v :NERDTreeFind<cr>
nnoremap <leader>g :NERDTreeToggle<cr>
" autocmd vimenter * NERDTree
let NERDTreeShowHidden=1
" ctrlp
let g:ctrlp_map='<c-p>'
" easymotion
nmap ss <Plug>(easymotion-s2)
"plug
call plug#begin('~/.vim/plugged')
Plug 'mhinz/vim-startify'
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
Plug 'python-mode/python-mode'
Plug 'Yggdroot/indentLine'
Plug 'preservim/nerdtree'
Plug 'kien/ctrlp.vim'
Plug 'easymotion/vim-easymotion'
Plug 'tpope/vim-surround'
Plug 'junegunn/fzf', { 'do': './install --bin' }
Plug 'junegunn/fzf.vim'
Plug 'lfv89/vim-interestingwords'
call plug#end()
" python-mode
let g:pymode_python = 'python3'
let g:pymode_trim_whitespaces = 1
let g:pymode_doc = 1
let g:pymode_doc_bind = 'K'
let g:pymode_rope_goto_definition_bind = "<C-]>"
let g:pymode_lint = 1
let g:pymode_lint_checkers = ['pyflakes','pep8','mccabe','pylint']
let g:pymode_options_max_line_length = 20