vim基本使用与配置

vim基本操作

vim基本命令

1
vim filename # 打开文件
命令作用
i在当前光标处插入
I在当前行首插入
a在当前光标后插入
A在当前行尾插入
o在当前行下插入新行
O在当前行上插入新行
x删除当前光标处字符
dd删除当前行
yy复制当前行
p粘贴
u撤销
ctrl+r恢复
:w保存
:q退出
:q!强制退出
:wq保存并退出

vim基础配置

1
vim ~/.vimrc # 创建并编辑配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
syntax on " 开启语法高亮

" set nu " 显示行号
set scrolloff=6 " 光标距离顶部和底部6行
set hlsearch " 高亮搜索结果
set incsearch " 搜索时逐字符高亮
set autoindent " 自动缩进
set tabstop=4 " 设置tab为4个空格
set expandtab " 设置tab为4个空格
set shiftwidth=4 " 设置缩进为4个空格
set softtabstop=4 " 设置tab为4个空格
set smartindent " 智能缩进

set encoding=utf-8 " 设置编码为utf-8

" set list " 显示不可见字符
" set ruler " 显示光标位置
" set cursorline " 高亮当前行
" set cursorcolumn " 高亮当前列
" set wrap " 自动换行
set showcmd " 显示当前输入的命令

set mouse=a " 启用鼠标
" set selection=exclusive " 设置选择模式为exclusive
" set selectmode=mouse,key " 设置选择模式为mouse,key
" set selectmode+=cmd " 设置选择模式为cmd

set clipboard=unnamedplus " 设置剪切板为系统剪切板
set clipboard=unnamed " 设置剪切板为系统剪切板

" set listchars=tab:>-,trail:.,extends:>,precedes:< " 设置显示不可见字符

" 键位映射
let mapleader=" " " 设置leader键为<Space>
nnoremap <C-n> :set nu!<CR> " Ctrl+n键切换行号
nnoremap <C-h> :set list!<CR> " Ctrl+h键切换显示不可见字符
nnoremap <leader>l :set cursorline!<CR> " leader+l键切换高亮当前行
nnoremap <leader>L :set cursorcolumn!<CR> " leader+L键切换高亮当前列
nnoremap <leader>h :set hlsearch!<CR> " leader+h键切换高亮搜索结果
nnoremap <leader>s :set incsearch!<CR> " leader+s键切换逐字符高亮搜索结果
nnoremap <leader>i :set ignorecase!<CR> " leader+i键切换搜索大小写敏感

vim更多操作

vim多窗口操作

命令作用
:sp水平分割窗口
:vsp垂直分割窗口
ctrl+w+w切换窗口
ctrl+w+h切换到左边窗口
ctrl+w+j切换到下边窗口
ctrl+w+k切换到上边窗口
ctrl+w+l切换到右边窗口
ctrl+w+q关闭当前窗口
ctrl+w+o关闭其他窗口
ctrl+w+t将当前窗口移动到新标签页
ctrl+w+H将当前窗口移动到左边
ctrl+w+J将当前窗口移动到下边
ctrl+w+K将当前窗口移动到上边
ctrl+w+L将当前窗口移动到右边
:tabnew新建标签页
:tabclose关闭标签页
:tabonly关闭其他标签页
gt切换到下一个标签页
gT切换到上一个标签页
:tabmove将当前标签页移动到指定位置
:tabfirst将当前标签页移动到第一个位置
:tablast将当前标签页移动到最后一个位置
:tabnext切换到下一个标签页
:tabprevious切换到上一个标签页
:tabdo对所有标签页执行命令
:tab ball将所有窗口移动到新标签页

vim多文件操作

命令作用
:e filename打开文件
:e .打开当前目录
:e ..打开上级目录
:e %:h打开当前文件所在目录
:e %:p:h打开当前文件所在目录
:e %:p:h打开当前文件所在目录
:e %:p:h打开当前文件所在目录
:e %:p:h打开当前文件所在目录
:e %:p:h打开当前文件所在目录
:e %:p:h打开当前文件所在目录
:e %:p:h打开当前文件所在目录
:e %:p:h打开当前文件所在目录
:e %:p:h打开当前文件所在目录

vim文件内容操作

命令作用
:%s/old/new/g替换所有old为new
:%s/old/new/gc替换所有old为new并确认
:%s/old/new/gci替换所有old为new并确认,忽略大小写
:%s/old/new/gcI替换所有old为n:argdo %s/old/new/gcIew在参数列表中所有文件中替换,大小写敏感,单词边界ew并确认,大小写敏感
:%s/old/new/gcIe替换所有old为new并确认,大小写敏感,单词边界
:%s/old/new/gcIew替换所有old为new并确认,大小写敏感,单词边界

vim多文件搜索

命令作用
:vimgrep /pattern/ {file}在指定文件中搜索
:vimgrep /pattern/ {file1} {file2}在指定文件中搜索
:vimgrep /pattern/ {dir}/*在指定目录中搜索
:vimgrep /pattern/ */在当前目录及子目录中搜索
:vimgrepadd /pattern/ {file}在指定文件中搜索并添加到搜索结果
:vimgrepadd /pattern/ {file1} {file2}在指定文件中搜索并添加到搜索结果
:vimgrepadd /pattern/ {dir}/*在指定目录中搜索并添加到搜索结果
:vimgrepadd /pattern/ */在当前目录及子目录中搜索并添加到搜索结果
:copen打开搜索结果窗口
:cclose关闭搜索结果窗口
:cnext切换到下一个搜索结果
:cprevious切换到上一个搜索结果
:cfirst切换到第一个搜索结果
:clast切换到最后一个搜索结果
:cdo对所有搜索结果执行命令

vim多文件替换

命令作用
:argadd {file}添加文件到参数列表
:argadd {file1} {file2}添加文件到参数列表
:argadd {dir}/*添加目录下所有文件到参数列表
:argadd */添加当前目录及子目录下所有文件到参数列表
:argdelete {file}从参数列表中删除文件
:argdelete {file1} {file2}从参数列表中删除文件
:argdelete {dir}/*从参数列表中删除目录下所有文件
:argdelete */从参数列表中删除当前目录及子目录下所有文件
:argedit {file}打开文件
:argedit {file1} {file2}打开文件
:argedit {dir}/*打开目录下所有文件
:argedit */打开当前目录及子目录下所有文件
:argdo %s/old/new/gc在参数列表中所有文件中替换
:argdo %s/old/new/gci在参数列表中所有文件中替换,忽略大小写
:argdo %s/old/new/gcI在参数列表中所有文件中替换,大小写敏感
:argdo %s/old/new/gcIe在参数列表中所有文件中替换,大小写敏感,单词边界

vim多文件保存

命令作用
:wa保存所有文件
:wa!强制保存所有文件
:wall保存所有文件
:wall!强制保存所有文件
:wnext保存当前文件并切换到下一个文件
:wprevious保存当前文件并切换到上一个文件
:wfirst保存当前文件并切换到第一个文件
:wlast保存当前文件并切换到最后一个文件
:wnext!强制保存当前文件并切换到下一个文件
:wprevious!强制保存当前文件并切换到上一个文件
:wfirst!强制保存当前文件并切换到第一个文件
:wlast!强制保存当前文件并切换到最后一个文件
:wqa保存所有文件并退出
:wqa!强制保存所有文件并退出
:wqall保存所有文件并退出
:wqall!强制保存所有文件并退出

vim复制粘贴

命令作用
yy复制当前行
yw复制当前单词
y$复制当前光标到行尾
y^复制当前光标到行首
y0复制当前光标到行首
yG复制当前光标到文件尾
ygg复制当前光标到文件首
y%复制当前光标到匹配括号
y/pattern复制当前光标到匹配pattern
y?pattern复制当前光标到匹配pattern
y/pattern/+1复制当前光标到匹配pattern的下一行
y?pattern?-1复制当前光标到匹配pattern的上一行

g相关命令

视频:https://youtu.be/bQfFvExpZDU?si=-kn3XH1Qr5VbV3eD

命令作用
gj向下移动光标到换行处
gk向上移动光标到换行处
g0向左移动光标到换行处
g$向右移动光标到换行处
gq将长行转换为多行
gu将单词/行转换为小写
gU将单词/行转换为大写
~切换字母大小写
gf打开文件中光标下的文件
gv重新选择上次选择的文本
gJ连接行
g&重新运行所有行的替换命令

vim配置文件知识

vim配置文件位置

操作系统vim配置文件位置
Linux~/.vimrc
Windows~/vimfiles/vimrc

vim配置设置

官方文档:https://vimhelp.org/options.txt.html

命令作用
set nu显示行号
set scrolloff=6光标距离顶部和底部6行
set hlsearch高亮搜索结果
set incsearch搜索时逐字符高亮
set autoindent自动缩进
set tabstop=4设置tab为4个空格
set expandtab设置tab为4个空格
set shiftwidth=4设置缩进为4个空格
set softtabstop=4设置tab为4个空格
set smartindent智能缩进
set encoding=utf-8设置编码为utf-8
set list显示不可见字符
set ruler显示光标位置
set cursorline高亮当前行
set cursorcolumn高亮当前列
set wrap自动换行
set showcmd显示当前输入的命令
set mouse=a启用鼠标
set selection=exclusive设置选择模式为exclusive
set selectmode=mouse,key设置选择模式为mouse,key
set selectmode+=cmd设置选择模式为cmd
set clipboard=unnamedplus设置剪切板为系统剪切板
set clipboard=unnamed设置剪切板为系统剪切板
set listchars=tab:>-,trail:.,extends:>,precedes:<设置显示不可见字符