一些vim基本命令 (更新于08312024)

        这里是在vim帮助文件以及网络上搜集的一些vim基本命令.也许你需要的不是vim的整个帮助文件,而只是需它的一个小子集就够了.需要的同学复制粘贴. 

vim/gvim 基本命令         
1 多文件操作  2 模式切换与保存退出  3 gvim默认启动配置  4 翻页与光标定位  5 插入行操作  6 复制  7 撤回  8 剪切/删除  9 查找与替换

三大模式 普通模式(默认)/命令模式/插入模式

                    按 :                                                                返回
普通模式 ======> 命令模式 按下Esc或Ctrl+c或Ctrl+[ ======> 普通模式

                  按i或a                                                              返回
普通模式 ======> 插入模式 按下Esc或Ctrl+c或Ctrl+[ ======> 普通模式

1.多文件操作

vim 文件1 文件2 文件3 ...     打开多个文件(终端vim命令)
gvim+文件名  新建一个文件
tabnew    在新标签页新建一个文件(gvim)
gvim:       使用菜单可在新标签页打开多个文件
                (多标签页,是一个文件占一个标签页和终端vim打开多文件不一样)
n              下一个文件  
bn            下一个文件 
bp           上一个文件  
ctrl+6       在两个文件之间切换
gf             命令跳转进入某个文件      
ctrl+PageUp      切换上一个标签页(gvim命令)
ctrl+PageDown 切换下一个标签页(gvim命令)
ctrl+P       列模式 
大写I        进入列模式的编辑模式,esc退出后自动添加到每一行

2.模式切换与保存退出

i 或 a    从普通模式进入插入模式
Esc       退出插入模式回到普通模式(Esc太远基本不用)
ctrl+C   退出插入模式回到普通模式
ctrl+[    退出插入模式回到普通模式
:             普通模式到命令模式
Ctrl + o  插入—普通模式(只执行一条命令后返回插入模式)            
w         保存       
q          退出
wq       保存后退出
q!         强制退出
wa       保存全部文件
wqa     保存全部文件然后退出
qa       全部文件退出
qa!      全部文件退出但不保存操作

3.gvim默认启动配置

"在vim安装文件夹下(如C:\Program Files\Vim)打开"_vimrc"
"文件(若没有就新建一个),将以下设置命令添加到末尾即可

syntax enable            "语法开启
syntax on                   "语法高亮
colorscheme darkblue      "设置主题为darkblue
set guifont=Consolas:h18 "设置字体为Consolas,大小为18
set number                "显示行号
set autoindent           "自动缩进
set expandtab           "用制表符缩进
set noexpandtab       "用空格缩进
set tabstop=4            "一个tab键4个空格
set shiftwidth=4         "缩进宽度
set showmatch          "显示括号配对
set confirm                "启用提示
set vb t_vb=              "关闭响铃提示
au GuiEnter * set t_vb=  "关闭闪屏提示
au GUIEnter * simalt ~x  "窗口全屏
set autoread              "自动刷新文件内容
set cursorline            "高亮当前行
"标题栏设置:文件名、标记、程序名、操作系统
set titlestring=%f%h%m%r%w-%{v:progname}-%{$OS}
set nobackup             "不生成备份文件 注:建议不打开
set noundofile            "不生成.filename.un~ 文件
set noswapfile            "不生成.filename.swp文件

"自动保存功能 
"silent!表示无消息提示(放write/update前面),update只在有修改时才保存
"当离开插入模式时自动保存(会很频繁,建议不配置)
"autocmd insertLeave * write   
"当文件被修改并失去焦点时自动保存
autocmd FocusLost * if &mod | write | endif
"在空闲60000毫秒后自动保存文件
set updatetime=60000 
autocmd CursorHold * silent! update

"设置在插入模式下移动光标快捷键
"注:<C-a> <Left>表示用快捷键ctrl+a往左移动
"注:使用ctrl+r减少缩进(替换系统原有的ctrl+d)
"注:这里我将光标移动的上下左右映射成Ctrl+asdf
"这样就可以在插入模式下使用Ctrl+ a s d f
"来控制光标而不用频繁切回普通模式来移动光标

inoremap <C-r> <C-d>  
inoremap <C-a> <Left>
inoremap <C-s> <Down>
inoremap <C-d> <Up>
inoremap <C-f> <Right>
inoremap <C-V> <PageDown>   
inoremap <C-B> <PageUp>

"Hide/Show Menu and Toolbar using F2
set guioptions-=m
set guioptions-=T
map <silent> <F2> :if &guioptions =~# 'T' <Bar>
        \set guioptions-=T <Bar>
        \set guioptions-=m <bar>
    \else <Bar>
        \set guioptions+=T <Bar>
        \set guioptions+=m <Bar>
    \endif<CR>
    
"使用NetrwTreeListing显示目录列表/NERDtree like setup
let g:netrw_banner = 0     "Removing the banner
let g:netrw_liststyle = 3    "view types, there are four different view types: thin, long, wide and tree.
let g:netrw_browse_split = 4  "1 - open files in a new horizontal split /2-vertical/3-tab/4-previous window
let g:netrw_altv = 1
let g:netrw_winsize = 20   "Set the width of the directory explorer  20%
augroup ProjectDrawer
  autocmd!
  autocmd VimEnter * :Vexplore   "Explore/Sexplore(水平目录)/Vexplore(垂直目录)
augroup END

4.翻页与光标定位

###插入模式###
注:以下Shift、Ctrl 缩写为S和C
Left Down Up Right 就是键盘最常用的那个上下左右
CTRL-J         开始新行
CTRL-M       开始新行
<Up>            光标上移一行                                 
<Down>       光标下移一行                                        
CTRL-G k               光标上移一行,到插入开始时所在的列                                
CTRL-G j                光标下移一行,到插入开始时所在的列                   
<Left>                光标左移一个字符                              
<Right>             光标右移一个字符                              
<S-Left>            光标反向一个单词 (类同 "b" 命令)              
<C-Left>            光标反向一个单词 (类同 "b" 命令)              
<S-Right>          光标正向一个单词 (类同 "w" 命令)              
<C-Right>          光标正向一个单词 (类同 "w" 命令)              
<Home>             光标移到该行首个字符                          
<End>                光标移到该行末个字符之后                      
<C-Home>         光标移到该文件首个字符                        
<C-End>            光标移到该文件末个字符之后                    
<LeftMouse>     光标移动鼠标点击处                            
<S-Up>             上翻窗口一页                                  
<PageUp>        上翻窗口一页                                  
<S-Down>        下翻窗口一页                                  
<PageDown>   下翻窗口一页
CTRL-T             在当前行开始处插入一个 shiftwidth 的缩进。缩进总是取整到
                          'shiftwidth' 的倍数 (这是 vi 兼容的)。                                                 
CTRL-D             在当前行开始处删除一个 shiftwidth 的缩进。缩进总是取整到
                          'shiftwidth' 的倍数 (这是 vi 兼容的)。

###普通模式###
PageDown  下一页
PageUp       上一页
ctrl+f            下一页
ctrl+b           上一页 
ctrl+d           下半页
ctrl+u          上半页
ctrl+e          下一行
ctrl+y          上一行
H J K L       左 下 上 右
w:            跳转到下一个单词      
b:             跳转到上一个单词
0                跳转到行首
$                跳转到行尾
gg:          跳转到文件首
G               跳转到文件末
n+gg          跳转到指定行n
n+G           跳转到指定行n
Ctrl+ww     依次向后切换到下一个窗格中

###使用标记定位光标###
注:在代码文件的两个位置间切换用这个
功能非常方便,节省大量时间去寻找位置

``       两个反引号跳回原来的地方
''        两个单引号,功能同上一样
Ctrl+o  跳到上一次(旧)的位置
Ctrl+i   跳到下一次(新)的位置
ma a    用 a 标记当前的光标位置(ma是mark简写)
`a         跳到a标记位置(反引号)
'a         单引号同上
mark    查看所有标记
例如:
在main函数中某位置执行ma a标记a位置;
在函数或类的实现位置执行ma b标记b位置;
这样执行`a就跳到main中a标记位置,执行
`b就跳到函数/类中b标记的位置.也可以执
行``或''直接在两者间切换.
标记名可用英文字母26个.

5.插入行操作

o         然后按esc或ctrl+c或ctrl+[,
           在当前行的下方插入一个新的空行     
n+o     (第一种n+o)然后按esc或ctrl+c或ctrl+[,
           在下方插入n行空行
n+o     (第二种n+o)进入插入(粘贴)模式,输入需要插入的重复内容块
           (内容块可单行可多行),
           然后:
           a.若按esc或ctrl+[,将插入n个重复内容块
           b.若按ctrl+c,则只插入1个重复内容块
O        同小o一样,只是在上方    
n+O    (第一种n+O)同小o一样,只是在上方
n+O    (第二种n+O)同小o一样,只是在上方

6.复制

                 按v                                       
普通模式 ====> 可视模式 (用于选中要剪切/复制的内容) ====>移动光标选中内容
                                                       
            
                  按V
普通模式 =====> 可视模式(行) (用于选中行) ====>移动光标选中行
            
                 按Ctrl+q
普通模式 =======> 可视模式(块) (用于选中块) ====>移动光标选中块   
            

###可视模式###
注:可视模式可以使高亮显示你选中的文本
以便进一步操作剪切/复制等

v        进入可视模式(然后移动光标选取文本)
V        进入可视模式(选中多行)        
ctrl+q :进入块可视模式

y:        复制 
p:        粘贴在光标后
P:          粘贴在光标前
yaw       复制当前单词  
yiw        复制当前单词   
yy:      复制一行    
yj:       复制当前行和下一行    
yw:     复制一个单词
y0:     复制从光标到行首的文字     
y$:     复制从光标到行尾的文字     

7.撤回 

u      撤回,复原上一个操作
U      恢复行(放弃当前行上所有修改)
ctrl+r 重做
.      重复上一个操作

8.剪切/删除

注:删除就是剪切
###插入模式###
Ctrl + h  删除光标前一个词(与退格键相同)
Ctrl + w  删除光标前一个单词
Ctrl + u  删除至行首
###普通模式###
dd:      删除/剪切一行    
n+dd     删除/切剪n行
dj:       删除/剪切当前行和下一行
x            删除/剪切光标所在字符
X           删除/剪切光标所在前字符
diw        删除/剪切当前单词(不含下个单词前的空格)
daw       删除/剪切当前单词(包括下个单词前的空格)
dw         删除/剪切到下一个单词开头
de         删除/剪切到本单词末尾
dE         删除/剪切到本单词末尾包括标点在内
db         删除/剪切到前一个单词
dB         删除/剪切到前一个单词包括标点在内
d0         删除/剪切到行首d$   删除/剪切到行尾
c           这里所有d的删除命令c命令好像都有一样功能
             只不过,c还多一样就是删除后进入插入模式
             c是change修改的意思

cc         例如, cc表示修改一行,同dd一样删除一行,
             然后还要进入插入模式
n+cc      n表示行数,如10cc表示修改10行

9. 查找与替换

注:用.命令实现更简单的替换操作
先使用/查找要替换的某个如函数名printf/printf然后回车找到
后,执行cw(c是change修改的意思,w是word)修改为如scanf,修改
完然后退出插入模式.再执行n找到下一个printf这时直接执行.命
令,将修改命令重执行一遍即可.然后依次执行n完成替换.
当然如果量多了还是用正常的替换命令.

查找:
/关键字       查找关键字
n                下一个关键字
N               上一个关键字
*                 取关键字查找(用*命令不用手动输入)
?关键字      同/一样,只是反向
Esc+u         查找后取消高亮
noh             查找后取消高亮
/PageUp           切换上一个关键字查找
/PageDown       切换下一个关键字查找
/方向键上和下   同上

统计:
n,ms/pattern//gn  统计n行到m行出现pattern的次数
%s/pattern//gn     统计pattern在当前编辑文本出现的次数

替换:

注:r/R按下后即可开始输入新内容
r      替换光标下方单个字符 
R     替换到按下Esc或Ctrl+c/[为止

{作用范围}s/{目标}/{替换}/{替换标志}

%s/要被替换的字符串/新字符串/g
s表示替换操作,%表示全局,g表示所有出现都会被替换

:s/要被替换的字符串/新字符串/g
当前行替换

:%s/要被替换的字符串/新字符串/g
全文替换

%s/要被替换的字符串/新字符串
局部替换

%s/要被替换的字符串/新字符串/gc
gc逐个询问确认替换

10,20s/要被替换的字符串/新字符串/g
只在第10~20行替换

%s/要被替换的字符串/新字符串
空替换标志,只替换从光标位置开始,目标的第一次出现

%s/要被替换的字符串/新字符串/i
i表示大小写不敏感替换

%s/要被替换的字符串/新字符串/I
i表示大小写敏感替换

        总结: vim/gvim功能强大,是代码编辑的好帮手,而正因为功能强大所以对一般人来说用不完它所有的功能.所以本文列出的命令及配置设置只是个人要用的,当然也不全面.其它还有很多你可能用到这里没有的需要自己在网络上搜集或者查看官方帮助文件,愿这里的命令和配置对你有帮助.喜欢就点赞收藏,复制粘贴.持续更新中...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值