vim常用命令

本文详细介绍Vim编辑器的高效使用方法,包括快速光标移动、文本编辑、文件管理和分屏操作等高级技巧,帮助提升代码编辑效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

提供了linux中的安装方法:
https://github.com/kexu13/vim-box

基本操作

dw ------ 光标删除至单词末尾
d$ ------ 光标删除至末尾
dd ------ 删除行
u ------ 撤销
ctrl + r ------ 取消撤销
p ------ 降最后一次删除的内容置入光标之后
r ------ 一个字符代替光标位置的字符
cw ------ 改变一个单词
% ------ 查找对应的括号
数字+shift+g ------ 光标至行数
o ------ 光标下方打开新的一行进入插入模式
O ------ 光标前一行插入一个新行
a ------ 光标后进入插入模式
A ------ 行末进入插入模式
i ------ 光标处插入
I ------ 光标行首处插入
ctrl + n ------ 显示目录
ctrl + n ------ Insert模式下为补全单词
:bn ------ 切换下一个窗口
:bd ------ 关闭窗口
ctrl + w + n ------ 新建窗口
ctrl + w + o ------ 关闭窗口
ctrl + w + x ------ 两个窗口互换
ctrl + q ------ vim卡住恢复
:w !sudo tee % ------ 直接以root方式保存
shift + r ------ 手动刷新vim目录
:bn ------ 切换到下一个窗口
:bd ------ 关闭窗口
yy ------ 复制一行
Nyy ------ 复制N行

简单的光标移动

0 ------ 数字零,到行头
^ ------ 到非空格行头
$ ------ 到本行末
g ------ 到最后一个不是空格的末尾位
ctrl + n ------ 显示目录
ctrl + w + 方向 ------ 切换位置/目录和文件间
ctrl + w + w ------ 依次切换窗口
NG ------ 光标第N行
gg ------ 光标到第一行
G ------ 光标到最后一行
w ------ 到先一个单词开头
e ------ 到下一个单词结尾
% ------ 匹配括号移动
*------ 匹配当前单词移动下一个
#------ 匹配当前单词移动 上一个
v ------ 可视化选择
ctrl 6 ------ 返回上一次操作窗口

ctrl + w + n ------ 新建窗口
ctrl + o ------ 跳回上一次修改位置
ctrl + w + c ------ 关闭当前窗口
ctrl + w + q ------ 关闭当前窗口,如果剩下最后一个,则推书vim

分屏

ctrl + w + s ------ 上下分割打开的文件
:sp filename ------ 上下分割,并打开新的文件
ctrl + w + v ------ 左右分割打开新的文件
:vsp filename ------ 左右分割,并打开新的文件

文件间切换

ctrl + 6 ------ 两文件间切换
:bn ------ 下一个文件
:bp ------ 上一个文件
:ls ------ 列出打开的文件,带编号
:b1^n ------ 切换至第n个文件
ctrl + ww ------ 依次向后切换到下一个窗格中

ctrl + v I ‘//’ ------ ctrl + v 选中需注释部分 大写i插入 输入“//” 点击Esc两次 注释成功
ctrl + v d ------ ctrl + v 选中取消注释“//”部分 点击d删除“//”

gg + shift v + G + ‘=’ ------ 格式化代码

目录下 m ------ 新增或删除文件

其他

:NERDTree : 打开新的目录树。可以提供一个路径参数,那么命令将打开以该路径作为根目录的目录树。如果没有路径参数提供,那么当前目录将作为新的目录树的根目录。
:NERDTreeToggle : 如果当前标签已经存在目录树,该命令会重新刷新目录树显示;如果当前标签不存在目录树,该命令作用效果与:NERDTree命令一致。
:NERDTreeClose : 关闭当前标签的目录树。

VIM修改
r:替换模式,替换当前光标所在位置的一个字符。虽然你同样可以i进入插入模式,然后删掉那个字符,再输入需要的字符,但这种操作是鼠标流思维方式。替换是一个可重复操作,多用没坏处。
cw:change word可以删除从当前位置到一个单词的结尾,并进入插入模式。这种操作常用于修改一个变量。比如对于:int count=0;希望把count改成cnt,那么当光标位于c字符处的时候,按cw可直接删除count,并进入插入模式。然后直接继续输入cnt即可。
caw:change a word可以删除当前光标所在位置的单词。对于int count=0;的例子,如果此时光标在count中间某处,比如u处,直接键入caw可以达到同样的效果。所以caw更强大一些。
c 、 c : 举 一 反 三 , 可 以 猜 到 c 、c^:举一反三,可以猜到c cc是从当前位置删除到行尾,并进入插入模式。
ci":change inside “可以用于修改当前位置附近,在相同配对的"中的内容。比如对于const char *str=“hello world”;。当在双引号中间的任意位置键入ci"可以直接清空字符串,并继续输入新的希望的字符串。
ci(、ci[:举一反三change inside ( change inside [。
cit:这个比较特殊,可以直接编辑匹配的 xml 标签中的内容!经常编写 html 的童鞋可以熟悉一下。
yi”:yank inside " 猜猜是啥意思?类似ci"只是把编辑操作编程复制操作,因为y是复制!是不是很强大。
ya":yank around " 复制整个字符串,包括双引号。
yw、yaw、daw、d$…:好了,这些可以” 发明” 出来了。
o、O:向下向上增加空行
u、Ctrl+r:undo 和 redo

ctags -R
首先要安装了ctags,在程序的根目录下运行ctags -R,生成tags文件,然后在编辑程序时按Ctrl+]就会跳转到当前光标所在东西的定义处。若有多个tag,执行:ts,进行选择。按Ctrl+o即可跳回。不过,当修改过代码后,需要重新生成tags。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值