Skip to main content

VI编辑器

命令模式

# 查看VIM版本信息
:version

# 输出变量
:echo $VIM

# 上下分屏
:split

# 左右分屏
:vsplit

# 设置分屏后光标位置
:setsplitright

# 切换光标在分屏中的位置
ctrl + w + 方向hjkl

# 切换另一分屏
ctrl+ww

# 切换左右分屏大小
:vertical resize-5

# 切换上下分屏大小
:res +5
:res -5

# 查看命令历史
:history

# 查看历史执行命令
q:

# 打开新的标签
:tabe
:tabe 文件名

# 切换标签页
:-tabnext 前一个tab
:+tabnext 后一个tab
:+2tabnext 后面第二个tab
:tabn 后一个tab
:tabp 前一个tab
:tabfirst 第一个tab
:tablast 最后一个tab


# 设置主题颜色
:color default

# 显示换行符
:set list

# 查看最近的错误和警告
:messages

# 执行终端命令
:! dir


# 全选整个文件
ggVG


# 批量转换缩进
:retab

# 进入视图模式
v
V 行模式

# 进入视图模式再输入冒号,代表选中部分内容
:'<,'>

# 复制选中内容
:'<,'>y

# 在视图模式执行正常模式下的命令normal
:'<,'>normal I 1234

# 在选中行后面添加.png
:'<,'>normal A.png

# 视图模式-块选中模式
ctrl + v (linux)
ctrl + q (windows)

# 多行编辑
gg
ctrl + q
G
I
....输入内容
Esc


# 增加减少缩进
>
<

# 查看字符设置选项
:digraphs

# 在vim中打开其他文件Edit
:e 文件名

# 将外部文件剪切到vim中
:r !cat [filename]

# 进入写入模式
i 光标当前位置
I 行首
o 下一行
a 光标下一位置

# 移动光标
h 左
j 下
k 上
l 右

3j 向下移动3行,其他方向以此类推

# 设置显示行号
:set nu

u 撤销操作
i 进入输入模式

dd 删除/剪切
d3j 向下删除/剪切3行

p 粘贴

# 改变这个单词
ciw : change in word

# 改变在双引号中
ci"

# 复制在这个双引号中
yi"

# 删除到冒号
df: --- delete find :

# 在行尾插入
<shift>a

# 取消搜索高亮
:noh

# 将光标所在行设置为中心点
zz

# 安装插件管理器
https://github.com/junegunn/vim-plug

iwr -useb https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim |`
ni "$(@($env:XDG_DATA_HOME, $env:LOCALAPPDATA)[$null -eq $env:XDG_DATA_HOME])/nvim-data/site/autoload/plug.vim" -Force


call plug#begin(stdpath('data') . '/plugged')

Plug 'vim-airline/vim-airline'

call plug#end()

# 执行命令安装插件
:PlugInstall

# 安装vim-go插件
:GoInstallBinaries

配置文件示例

syntax on

" 设置选项
set number
set relativenumber
set cursorline
set wrap
set showcmd
set wildmenu
set hlsearch
set incsearch
set ignorecase
set smartcase
set listchars=tab:→\ ,eol:\ ,trail:·,extends:»,precedes:«
set list
set expandtab
set shiftwidth=2
set tabstop=2

" normal模式键盘映射
noremap J 5jzz
noremap K 5kzz

" 初始化取消代码高亮
exec "nohlsearch"

" 键盘映射
map R :source $MYVIMRC<CR>

" 快捷分屏
map sh :set nosplitright<CR>:vsplit<CR>
map sl :set splitright<CR>:vsplit<CR>
map sj :set splitbelow<CR>:split<CR>
map sk :set nosplitbelow<CR>:split<CR>

" 调整分屏大小
map <C-up> :res+5<CR>
map <C-down> :res-5<CR>
map <C-left> :vertical resize-5<CR>
map <C-right> :vertical resize+5<CR>

" 插件管理
call plug#begin('~/.vim/plugged')

Plug 'vim-airline/vim-airline'
Plug 'connorholyday/vim-snazzy'
Plug 'fatih/vim-go', { 'do': ':GoUpdateBinaries' }

Plug 'preservim/nerdtree'

call plug#end()

" 设置默认主题
color snazzy

" 插件管理
set nocompatible " be iMproved, required
filetype off " required

" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
" alternatively, pass a path where Vundle should install plugins
"call vundle#begin('~/some/path/here')

" let Vundle manage Vundle, required
Plugin 'VundleVim/Vundle.vim'

" YCM
Plugin 'git@github.com:ycm-core/YouCompleteMe.git'

" All of your Plugins must be added before the following line
call vundle#end() " required
filetype plugin indent on " required
" To ignore plugin indent changes, instead use:
"filetype plugin on
"
" Brief help
" :PluginList - lists configured plugins
" :PluginInstall - installs plugins; append `!` to update or just :PluginUpdate
" :PluginSearch foo - searches for foo; append `!` to refresh local cache
" :PluginClean - confirms removal of unused plugins; append `!` to auto-approve removal