vim的模式及常用命令

vim的模式

  • 正常模式 (Normal-mode) : 左下角显示文件名或为空。

    启动vim后默认处于正常模式。不论位于什么模式,按下<Esc>(有时需要按两下)都会进入正常模式。

  • 插入模式 (Insert-mode):左下角显示–INSERT–

    在正常模式中按下i, I, a, A等键,会进入插入模式。现在只用记住按i键会进行插入模式。在插入模式中,击键时会写入相应的字符。

    若要粘贴整块代码,而不出现代码缩进,跟粘贴源格式一致,现在正常模式下输入‘:set paste’,在进入插入模式,即可原格式粘贴,完成后保存即可。

  • 命令模式 (Command-mode):左下角显示:

    在正常模式中,按下:(英文冒号)键,会进入命令模式。在命令模式中可以执行一些输入并执行一些vim或插件提供的指令,就像在shell里一样。这些指令包括设置环境、文件操作、调用某个功能等等。

    常用的命令有:q(退出)、q!(强制退出)、w(保存)、wq(保存并退出)

  • 可视模式 (Visual-mode):左下角显示–VISUAL–

    在正常模式中按下v, V, <Ctrl>+v,可以进入可视模式。可视模式中的操作有点像拿鼠标进行操作,选择文本的时候有一种鼠标选择的即视感,有时候会很方便。

vim常用命令

  • 启动vim,在命令行窗口中输入以下命令即可

    1
    2
    3
    vim     // 直接启动vim

    vim filename // 打开vim并创建名为filename的文件
  • 退出vim命令

    1
    2
    3
    4
    5
    6
    7
    8
    :w      保存文件但不退出vi
    :w file 将修改另外保存到file中,不退出vi
    :w! 强制保存,不推出vi
    :wq 保存文件并退出vi
    :wq! 强制保存文件,并退出vi
    :q 不保存文件,退出vi
    :q! 不保存文件,强制退出vi
    :e! 放弃所有修改,从上次保存文件开始再编辑命令历史

    以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令

  • 撤销和重做

    1
    2
    3
    u       撤销(Undo)
    U 撤销对整行的操作
    Ctrl + r 重做(Redo),即撤销的撤销。
  • 删除命令

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    x   删除当前字符
    3x 删除当前光标开始向后三个字符
    X 删除当前字符的前一个字符。X=dh
    dl 删除当前字符, dl=x
    dh 删除前一个字符
    dd 删除当前行
    dj 删除上一行
    dk 删除下一行
    10d 删除当前行开始的10行。
    D 删除当前字符至行尾。D=d$
    d$ 删除当前字符之后的所有字符(本行)
    kdgg 删除当前行之前所有行(不包括当前行)
    jdG(jd shift + g) 删除当前行之后所有行(不包括当前行)
    :1,10d 删除1-10行
    :11,$d 删除11行及以后所有的行
    :1,$d 删除所有行
    J(shift + j)  删除两行之间的空行,实际上是合并两行。

移动光标位置

在正常模式下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
hjkl 左下上右    
shift+4($):末尾 g+_:末尾
shift+6(^):开头 0:开头

w:下一个单词(仅包含字母) W:下一个单词(包含特殊符号)
b:上一个单词 B:上一个单词
e:下一个单词末尾 E:下一个单词末尾

ctrl+f:上一页
ctrl+b:下一页
ctrl+d:上半页
ctrl+u:下半页
ctrl+e:下一行(光标不动,显示页面下移一行)
ctrl+y:上一行(光标不动,显示页面上移一行)

G:文末
gg:文头
nG:跳到第n行
H:跳到当前页的第1行
M:跳到当前页的中间那行

复制粘贴

1
2
3
4
dd:删除一行  
p:粘贴
yy:拷贝一行
ndd/nyy:删除/复制第n行

查找,替换

1
2
3
4
5
6
7
/pattern    前向查找    
?pattern 后向查找
n: next
shift+n: 反向的next
s/pattern1/pattern2: 替换
s/pattern1/pattern2/g: 替换当前行所有
1,$s/pattern1/pattern2/g: 替换从第一行开始所有

块操作

1
2
3
ctrl+v:开始选择要操作的块
I 然后 #插入多行注释
d:删除 s:删除后替换

分屏操作

1
2
3
4
//分屏后可直接采用:q命令退出当前窗口
split:上下分屏 vsplit:左右分屏
ctrl+w+hjkl:切换分屏到不同方向
e:打开文件

文件命令

  • 打开单个文件

    1
    vim file
  • 同时打开多个文件

    1
    vim file1 file2 file3 ...
  • 删除文件或删除目录

    1
    2
    rm file     删除文件
    rm -rf dir 删除目录
  • 在vim窗口中打开一个新文件

    1
    :open file
  • 在新窗口中打开文件

    1
    :split file
  • 切换到下一个文件

    1
    :bn
  • 切换到上一个文件

    1
    :bp
  • 查看当前打开的文件列表,当前正在编辑的文件会用[]括起来。

    1
    :args
  • 打开远程文件,比如ftp或者share folder

    1
    2
    3
    :e ftp://192.168.10.76/abc.txt

    :e \qadrive\test\1.txt

参考:

  1. VIM中的保存和退出、VIM退出命令、如何退出vim编辑、VIM命令大全
  2. 高效率编辑器 Vim——操作篇,非常适合 Vim 新手
  3. terminal快捷键以及vim快捷键

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/242235.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言进阶-动态内存分配

C语言进阶-动态内存分配 #include <stdio.h> #include<stdlib.h>int main() {int number;int *a;int i;printf("请输入数组的数量");scanf("%d",&number);//int a[number];a(int*)malloc(number*sizeof(int));//开辟数组的大小for(i 0;i&…

测测

编辑 1.多喝水 2.清黑头&#xff0c;一周做一次角质&#xff0c;一个月做一次小气泡 3.防晒 无论春夏秋冬 4.少吃辣&#xff0c;多喝柠檬水 5.早上护肤步骤&#xff1a;洁面-爽肤水-眼霜-精华-面霜-防晒 6.晚上护肤步骤&#xff1a;卸妆-洁面-水-眼霜-精华-面霜 7.一周三…

QT输出出现乱码的解决

QT输出出现乱码的解决

测试图片外链MD

11111 11111111111111111111111111111 555555555

测试阿里云HTML

一直在说事件&#xff0c;那么事件到底是指什么&#xff1f;这里所说的事件是指手指按下(down)、移动(move)、抬起(up)此为一个事件集合或者说是事件序列&#xff0c;从手指接触屏幕开始到手指离开屏幕结束。所以本篇所说的事件序列或者事件集合是指从手指刚接触屏幕到离开屏幕…

测试阿里云MD

准备工作已经完成&#xff0c;闲言少叙书归正传吧。 和拦截处理机制详解一样&#xff0c;为了系统的研究android对事件的处理&#xff0c;我也写了一个小demo对不同的情况进行测试并结合源码分析&#xff08;多说一句&#xff0c;其实看源码确实很枯燥&#xff0c;有时候因为水…

C语言进阶-结构体

C语言进阶-结构体

线上验证测试阿里云

上面的代码通过super.dispatchTouchEvent(ev)调用了DecorView的父类FrameLayout&#xff0c;该类倒是没有重写dispatchTouchEvent而是由它的父类ViewGroup实现&#xff1a;在分析ViewGroup分发事件之前还得说两结论&#xff1a; 1&#xff09;ViewGroup永远不会对拦截&#xf…

测送图片居中

带尺寸的图片: 居中的图片: 居中并且带尺寸的图片:

ADC0832程序完整版 源码+Proteus仿真

前段时间一直在为ADC0832的程序感到疑惑&#xff0c;从网上找了很多的代码&#xff0c;用Proteus仿真&#xff0c;最后都出现了一些奇怪的问题&#xff0c;有的根本没法读取数据&#xff0c;有的数据有错误。 当参考电压为5V时&#xff0c;如果把输入电压从0一直调到5V&#x…

测试文章测试

线性表 线性表是一种典型的线性结构。头结点无前驱有一个后继&#xff0c;尾节点无后继有一个前驱。链表只能顺序查找&#xff0c;定位一个元素的时间为O(N)&#xff0c;删除一个元素的时间为O(1) 线性表的顺序存储结构&#xff1a;把线性表的结点按逻辑顺序依次存放在一组地址…

我国是世界最大石油进口国,但是大家知道从哪些国家进口吗?

大家都知道我国是世界上最主要的石油进口国&#xff0c;目前我国原油对进口的依赖程度超过70%。下图是2018年上半年我国原油消费以及国内原油产量相关统计数据。从这个图当中&#xff0c;我们可以看出2018年上半年&#xff0c;我国每月消费的原油都在5000万吨以上&#xff0c;而…

数码管和573锁存器的细节问题

今天在QQ群上一个初学单片机的人提了一个关于数码管的问题&#xff0c;主要是程序的问题&#xff0c;由于对基础知识掌握不够&#xff0c;花了比较长的时间才解决&#xff0c;现总结一下其中的细节。 电路中8位数码管是由两个74HC573锁存器分别控制位选和段选的。 原程序大致如…

为什么银行大额存单没有4年期?想存4年期怎么办?

大额可以存四年吗&#xff1f;相信这个问题很多人都有类似的疑问&#xff0c;因为市场上目前没有4年期的存款期限。根据《大额存单管理暂行办法》大额存单期限包括1个月、3个月、6个月、9个月、1年、18个月、2年、3年和5年共9个品种&#xff0c;就是没有4年期的&#xff0c;普通…

STC单片机程序下载失败总结

STC单片机下载失败总结 ——PurpleSword STC为宏晶公司推出的国产51单片机&#xff0c;其优点在于价格低廉&#xff0c;功能强大&#xff0c;使用方便&#xff0c;尤其是其串口ISP下载程序的方式方便了大量用户&#xff0c;免去了购买昂贵的编程器&#xff0c;非常适合单片机…

我国经济最强的城市是哪个?北京、上海、还是深圳?

单论经济规模的话&#xff0c;最强的城市当属上海&#xff0c;若论经济质量的话&#xff0c;最强的是深圳市。目前上海是我国经济综合实力最强的。经济综合实力&#xff0c;可以从几个方面来评价&#xff0c;一个GDP规模&#xff0c;二个是财政收入&#xff0c;三个是进出口量&…