最近在服务端编辑文件总不可避免要使用vim编辑器,下面就对学习到的常用命令进行总结,以便自己以后查看。
 

基本编辑命令

 
删除字符:x
删除一行:dd
删除换行符:J,同时将两行合并成一行
撤销上一次的操作:u
重做,反转撤销:Ctrl+R
 
一些基本编辑命令可以使用命令计数,比如向下移动3行,可以直接使用3j,代替jjj;另比如dd操作等。
 

其他编辑命令

 
i: 当前光标之前插入文本
a: 当前光标之后插入文本
o: 另起一行,在当前行的下一行开始编辑
O: 另起一行,在当前行的上一行开始编辑
 

光标移动命令

 
h, j, k, l就不说了,左,上,下,右
w(word): 移动光标到下一个word的开头;
b(backward):移动光标到上一个word的开头;
e(end of word): 移动光标到下一个word的末尾;
ge: 移动光标到上一个word的末尾;
上述所有都是小写,如果将w, b, e 设置成大写,那么就将按照空格分隔移动;
:set iskeyword
 
$ 将光标移动到当前行行尾;
0 将光标移动到当前行行首;
 
fx可以在当前行查找第一个x并移动到该位置,停留在被搜索字符的下一个位置,这种用法称为单字符查找;
而使用Fx就会反向查找x字符;
tx命令比较类似,但是会停留在被搜索字符上;
Tx反向查找;
这四个命令都不会跳到下一行上去,都可以使用”;"来重复,“,”也是重复,但是方向相反
 

匹配括号

 
编写程序的时候,容易被括号弄糊涂,但是使用”%”可以非常方便地与当前光标下的括号匹配,比如()[]{};
如果当前光标并不在括号上,”%”同样可以向前匹配到第一个遇到的括号;
可以通过命令:set matchpairs查看匹配的括号类型
 

移动到指定行

 
G命令可以移动到文件的最后一行;
使用“行数”+G可以将当前光标移动到该指定行数的位置;
gg命令是定位到第一行的快捷方法,等同于1G;
另外一种方式就是移动到指定的百分比,使用“百分比”+%即可;
如果只想让光标定位到当前显示屏幕中的上,中,下,那么可以使用H(Home), M(Middle), L(Last)
 
有三种方法可以得到当前光标的位置:
  1. 使用Ctrl+G命令,可以得到类似下面的提示:"map任务分析趋势图.numbers" 1116 lines --2%--
  2. 使用:set number(nonumber)命令,可以查看/取消查看当前文件所在行;
  3. 设置ruler选项,可以在Vim的右下角窗口显示当前光标的位置;
 
当执行G跳转到指定的行后,vim会记住起跳的位置,这个位置是一个标记,使用命令”``"可以帮助跳转到刚才的出发点。
 
 

滚屏

Ctrl+U(Up) 会使窗口向上滚动半屏;
Ctrl+D(Down) 会使窗口向下滚动半屏;
Ctrl+E 可以使窗口向上滚动一行;
Ctrl+Y 可以使窗口向下滚动一行;
Ctrl+F(Forward) 可以使窗口向上滚动一整屏;
Ctrl+B(Backward) 可以使窗口向下滚动一整屏;
zz命令可以将光标当前所在行置于屏幕中央;
zt(top)命令可以将光标当前所在行置于屏幕顶端;
zb(bottom)命令可以将光标当前所在行置于屏幕底端;
 

搜索与查找

 
"/搜索字符串” 可以从当前光标位置处开始向下搜索该字符串,使用n,N可以匹配下一个找到的字符串;
“?搜索字符串” 与/的使用方式正好相反,向前搜索,而此时使用n,N也会相反;
注意搜索时的一些特殊字符: “.*[]^%/?~$”,如果要查找的内容包括这些字符,请使用\进行转义;
 
incsearch:使得键入目标字符串时vim就开始字符串搜索工作,可以在未完全键入字符串时就能找到目标,可选择回车跳转到当前匹配的位置或继续输入以进行搜索;
nowrapscan/wrapscan:打开wrapscan会在搜索到达文件头或者末尾时会从新开始搜索,关闭此开关(nowrapscan)可以在文件结束时停止;
 
 
 

退出vim

 
ZZ: 可以保存当前的数据,然后退出
:q!: 放弃编辑,退出vim,命令之后加回车
:q:退出,但是如果已经对文件进行了编辑,vim会拒绝不负责任的退出
:e!:如果想放弃当前所有的修改,并重新打开编辑器,用该文件的初始内容作为开始继续编辑,使用此命令
:help 显示vim的帮助文件,也可以使用F1显示
 

一些其他的常用命令

 
在编辑文件的时候按照行对文件内容进行删除时,可以使用G转到文件末尾,然后使用:1,.d命令;
如果想要删除某行到当前行的内容,直接替换1即可;
如果想要显示当前文件的行号,可以使用set nu!
如果想要删除整个文件(变成空白文件),先gg跳转到首行,再执行dG清空整个文件。
 

Vim的搜索模式

^字符匹配一行的开头;
$字符匹配一行的末尾;
如果同时加上^和$,那么将只会匹配到单行文本就是^和$之间的字符串;
.可以匹配到任何字符,比如”c.m"可以匹配任何前一个字符是c后一个字符是m的情况,不管中间字符是什么;
对于特殊字符,可以加上反斜杠进行处理。
 

搜索后的跳转命令

使用``可以在两点之间反复跳转。
Ctrl+O, 跳转到更早些时间停留光标的位置; 
Ctrl+I, 跳转到后来停置光标的位置;
什么是跳转?只要你执行一个命令使得光标定位于当前行之外的某行上,都叫做一个跳转,包括/和n这些搜索命令。但是字符搜索命令f,F不算是跳转,h,i,j,k这些也都算是字符操作,不算是跳转。
 

Vim编辑器基本操作学习(一)的更多相关文章

  1. Vim编辑器基本操作学习(二)

    操作符+位移 x命令可以删除一个字符,4x可以删除4个字符. dw可以删除一个word,w事实上是向后移动一个word的命令:dw可以接上一个任意一个位移命令,它将删除从当前光标开始到位移终点处的文本 ...

  2. vim编辑器基本操作介绍

    vim编辑器基本操作介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 可能很多小伙伴都听说过vi编辑器或是vim编辑器.它们是Unix和Linux世界最流行的编辑器之一,他们的特 ...

  3. git vim 编辑器基本操作

      用 git 命令行提交文件时,默认使用 vim 编辑器,基本操作: 按 a, i 或 o 进入编辑模式 按 ESC 进入操作模式 在操作模式下,:wq 为写入退出,:q! 不保存退出

  4. vi/vim编辑器基本操作

    一.vi/vim的三种模式 vi编辑器有三种模式:命令模式(command mode).插入模式(Insert mode).底行模式(last line mode). 就是你直接用命令(vi  文件名 ...

  5. Vim编辑器的学习

    在老师的带领下,最近也算是涨了见识.自己安装并尝试着体验了Vim的一些基本功能,可能是作为初学者,总感觉其指令太过复杂,就文本编辑而言,给我的最大感受就是神而乎之,一头雾水.目前我对这款编译器的掌握水 ...

  6. vim编辑器基本操作

    命令模式: 按(i)键进入编辑模式,将在光标前面插入: 按(I)键进入编辑模式,将在光标行首插入: 按(a)进入编辑模式,在光标后面插入: 按(A)键进入编辑模式,将在光标行末插入: 按(o)进入编辑 ...

  7. vim编辑器基本操作及文件权限,sudo命令等介绍

    一:vim 操作命令,在命令模式下操作 pageup 往上翻页 pagedown 往下翻页 H 移动到屏幕首行 gg 移动光标到文档的首行 前面加数字n表示移动到n行内容 G 移动到文档最后一行/查找 ...

  8. 【第五课】VIM编辑器(学习笔记)

    4月10日学习笔记打卡

  9. VI和VIM编辑器深入学习笔记--基本vi命令

    双十一过后有点闲,找本书给这段时间碰到的一些问题充充电,先从linux vi命令开始: 移动光标: “h” 向左一个字符,“j”向下一行,“k” 向上一行,“l” 向右一个字符(虽然我们可以用方向键, ...

随机推荐

  1. New Concept English three(10)

    The great ship, Titanic, sailed for New York from Southampton on April 10th, 1912. She was carrying ...

  2. (转)Mahout Kmeans Clustering 学习

    一.Mahout命令使用 合成控制的数据集 synthetic_control.data 可以从 此处下载,总共由600行X60列double型的数据组成, 意思是有600个元组,每个元组是一个时间序 ...

  3. Java基础拾遗(一)

    (尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/76358391冷血之心的博客) 马上就要秋招了,新的一轮笔试面试马上 ...

  4. 我也说说Emacs吧(5) - 基本编辑操作

    基本编辑操作 进入编辑模式 标准的emacs用户是遇不到这一节的,因为默认就可以编辑.但是spacemacs用户需要先学习一下强大的vi的模式切换功能了. vi的一个重要特点就是命令特别多,所以一旦学 ...

  5. iOS RUN LOOP 是个什么东西?

    RUN Loop是什么? 1.runloop是事件接收和分发机制的一个实现. 2.什么时候使用runloop 当需要和该线程进行交互的时候.主线程默认有runloop.当自己启动一个线程,如果只是 ...

  6. 根据显示器的分辨率,加载不同CSS样式表

    <link rel="stylesheet" type="text/css" id="css"><script langu ...

  7. js之数码时钟加随机变色

      HTML <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...

  8. 类的静态方法@staticmethod

    静态方法 @staticmethod 静态方法是定义在类内部的函数,此函数的作用域是类的内部 说明: 静态方法需要使用 @staticmethod装饰器定义 静态方法与普通函数定义相同,不需要传入se ...

  9. 【javascript】如何延迟加载JavaScript(Google推荐的代码)

    下面是Google推荐的代码.这些代码应被放置在</body>标签前(接近HTML文件底部)<script type="text/javascript">f ...

  10. erl_0021 erlang和java的内存模型比较(引用)

    原文  http://deepinmind.iteye.com/blog/2030390 我读到一篇相当相当有趣的关于Erlang VM内存管理策略的文章.它是Jesper Wilhelmsson写的 ...