一篇文章教你玩转vim神器写代码

时间:2021-05-25

首先是vim自带的常用命令:

行号相关:

显示行号: :set number 隐藏行号: :set nonumber

修改撤销相关:

回退(相当于Ctrl+Z): u 撤销回退:ctrl+r

翻页相关:

上一页:Page Up(Win) ctrl+↑(Mac)   下一页:Page Down(Win) ctrl+↓(Mac)

光标移动相关:

行首:Home(Win) ctrl+←(Mac)    (支持前加g) 行尾:Home(Win) ctrl+←(Mac)    (支持前加g) 回到底部:GG 回到顶部:gg 上下左右移动:上下左右(同行之间移动前加g) 移动到光标的下一个x处:fx 往前移动一个单词:w 往后移动一个单词:b 移动光标到屏幕上面:H 移动光标到屏幕中间:M 移动光标到屏幕下面:L nG:移动光标到第n行 :n:移动光标到第n行 跳到上一个空行:shift + ( 跳到下一个空行:shift + )

查找替换相关:

查找string:/string 查找关键字下一个:n 查找关键字上一个:shift + # 空格替换成,::%s/\s\+/,/g 替换每行第一个的str1为str2:%s/str1/str2 替换所有的str1为str2:%s/str1/str2/g

tab相关:

打开新tab: :Te tab切换:gt :tabc 关闭当前的tab :tabo 关闭所有其他的tab :tabs 查看所有打开的tab :tabp 前一个 :tabn 后一个

分屏相关:

垂直分屏: :vsplit 垂直分屏并打开新文件: :vsplit file_dir 水平分屏: :split 水平分屏并打开新文件: :split file_dir 分屏切换下一个:control + ww 分屏切换:control + w + ↑/↓

选中和复制粘贴相关:

Ctrl+v:进入列模式,自由上下选中,按d删除 可视选择模式:v(按字符选择)     V(按行选择)    d:(剪贴)    y:(拷贝)    c:(剪贴并进入插入模式) 非可视选择模式:dd:(剪切当前行)    yy:(拷贝当前行) 粘贴:p 复制6~9行到12行::6,9 co 12 全部删除:按esc后,然后dG 全部复制:按esc后,然后ggyG 全选高亮显示:按esc后,然后ggvG或者ggVG

注释相关:

添加注释:大写V选中需要注释的行, Ctrl+v进入列模式,大写I进入插入模式,输入#或//,连续按2下ESC 取消注释:大写V选中需要注释的行,Ctrl+v进入列模式,选中注释符号,d删除

折叠相关:

:set foldmethod=manual  设置手工折叠 移动到括号开始后zf%折叠到对应括号 zo打开当前折叠 zi打开所有折叠 zd删除当前折叠 zD删除所有折叠 保存折叠:mkview 加载折叠:loadview

写代码相关:

Ctrl+n:代码补全 ]p:和p的功能差不多,但是它会自动调整被粘贴的文本的缩进去适应当前代码的位置 %:匹配花括号,方括号,括号等。在一个括号的上面,然后按%,鼠标就会出现在匹配的另外一半括号处 >>:缩进所有选择的代码 <<:和上面类似,但是反缩进 gd:到达光标所在处函数或者变量的定义处 :set paste 粘贴代码避免格式混乱 :Set nopaste

jobs相关:

jobs:显示当前运行的jobs Ctrl+z:显示jobs控制台 fg %n:打开id为n的job gd %n:关闭id为n的job

插件源码获取:

cd ~/.vim mkdir ~/.vim/bundle cd ~/.vim/bundle git clone https://github.com/VundleVim/Vundle.vim.git mkdir ~/.vim/colors cd ~/.vim/colors git clone https://github.com/tomasr/molokai.git cp ~/.vim/colors/molokai/colors/molokai.vim ~/.vim/colors

vim ~/.vimrc

colorscheme molokai "molokai设置 set t_Co=256 let g:molokai_original = 1 let g:rehash256 = 1 "代码颜色区分 syntax enable syntax on "tab宽度和缩进设置 set tabstop=4 set softtabstop=4 set shiftwidth=4 set nocompatible "自动锁进和对齐 set autoindent set smartindent "开启追踪列表选择 set cscopetag set hlsearch "默认显示行号 set number "自动加载和保存折叠 au BufWinLeave * silent mkview au BufWinEnter * silent loadview "括号和引号自动补全 "inoremap ' ''<ESC>i "inoremap " ""<ESC>i "inoremap ( ()<ESC>i "inoremap [ []<ESC>i "inoremap { {}<ESC>i "右侧文件结构显示 nmap <F4> :TagbarToggle<CR> "设置宽度为30 "let g:tagbar_width = 30 "开启自动预览(随着光标在标签上的移动,顶部会出现一个实时的预览窗口) "let g:tagbar_autopreview = 1 "关闭排序,即按标签本身在文件中的位置排序 let g:tagbar_sort = 0 "开启NerdTree map <F3> :NERDTreeMirror<CR> map <F3> :NERDTreeToggle<CR> autocmd VimEnter * NERDTree set nocompatible filetype off set rtp+=~/.vim/bundle/Vundle.vim call vundle#begin() Plugin 'gmarik/Vundle.vim' Plugin 'scrooloose/nerdtree' Plugin 'majutsushi/tagbar' call vundle#end() filetype plugin indent on

安装 Vim 插件

vim :PluginInstall

代码提示:

代码提示:F2

NERDTree快捷键:

显示目录:F3(:NERDTree) Ctrl+H+W切换到左侧目录 Ctrl+H+L切换到右侧文件 Ctrl+W+W窗口切换(相当于Ctrl+tab) i:新开一个窗口打开一个文件 I显示隐藏文件 m显示系统菜单(添加删除移动等) R刷新

ctags(代码追踪)安装和使用:

1、安装 brew install ctags yum intall ctags apt-get install ctags 2、生成对应文件 $ ctags -R 递归的为当前目录及子目录下的所有代码文件生成tags文件 3、在vim打开源码时,指定tags文件,才可正常使用,通常手动指定,在vim命令行输入: :set tags=/usr/local/nginx/html/queen/tags 4、快捷键 Ctrl+]:追踪 Ctrl+o:返回上一位置