admin 管理员组

文章数量: 887019

码字不易,转载请附原链,搬砖繁忙回复不及时见谅,技术交流请加QQ群:909211071

首先是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 + 6

分屏切换下一个: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/VundleVim/Vundle.vim.git

mkdir ~/.vim/colors 
cd ~/.vim/colors
git clone https://github/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 backspace=indent,eol,start

"自动缩紧和对齐
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

"GoLang代码提示
imap <F2> <C-x><C-o>

"开启NerdTree
map <F3> :NERDTreeMirror<CR>
map <F3> :NERDTreeToggle<CR>
"autocmd VimEnter * NERDTree
let NERDTreeWinSize=30
"文件结构显示
nmap <F4> :TagbarToggle<CR>
"let g:tagbar_autopreview = 1 "开启自动预览(随着光标在标签上的移动,顶部会出现一个实时的预览窗口
let g:tagbar_sort = 0 "关闭排序,即按标签本身在文件中的位置排序
let g:tagbar_left = 1 "默认在右边,设置在左边
let g:tagbar_width = 30 "宽度
let g:tagbar_type_go = { 
    \ 'ctagstype' : 'go',
    \ 'kinds'     : [ 
        \ 'p:package',
        \ 'i:imports:1',
        \ 'c:constants',
        \ 'v:variables',
        \ 't:types',
        \ 'n:interfaces',
        \ 'w:fields',
        \ 'e:embedded',
        \ 'm:methods',
        \ 'r:constructor',
        \ 'f:functions'
    \ ],
    \ 'sro' : '.',
    \ 'kind2scope' : {
        \ 't' : 'ctype',
        \ 'n' : 'ntype'
    \ },
    \ 'scope2kind' : {
        \ 'ctype' : 't',
        \ 'ntype' : 'n'
    \ },
    \ 'ctagsbin'  : 'gotags',
    \ 'ctagsargs' : '-sort -silent'
\ }

"go函数追踪 ctrl+]追踪 ctrl+o返回
autocmd FileType go nnoremap <buffer> gd :call GodefUnderCursor()<cr>
autocmd FileType go nnoremap <buffer> <C-]> :call GodefUnderCursor()<cr>

let g:godef_split=1    "追踪打开新tab
let g:godef_same_file_in_same_window=1    "函数在同一个文件中时不需要打开新窗口
"保存自动goimports
let g:go_fmt_command = "goimports"
let g:goimports = 1 
"高亮
let g:go_highlight_types = 1 
let g:go_highlight_fields = 1 
let g:go_highlight_functions = 1 
let g:go_highlight_function_calls = 1 

let g:go_fmt_command="gopls"
let g:go_gopls_gofumpt=1

let g:go_metalinter_autosave = 1 
let g:go_metalinter_enabled = ['vet', 'golangci-lint', 'errcheck']
let g:go_metalinter_autosave_enabled = ['vet', 'golangci-lint', 'errcheck']

filetype off

set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
Plugin 'gmarik/Vundle.vim'
Plugin 'fatih/vim-go'
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:返回上一位置

Vim打造成GoLang开发环境:Vim打造成GoLang开发环境_程序猿的世界-CSDN博客_vim 支持golang

本文标签: 教你 神器 玩转 一篇文章 代码