p.p1 { margin: 0; font: 16px ".PingFang SC"; color: rgba(53, 53, 53, 1) }
p.p2 { margin: 0; font: 16px ".PingFang SC"; color: rgba(53, 53, 53, 1); min-height: 19px }
p.p3 { margin: 0; font: 12px ".PingFang SC" }
p.p4 { margin: 0; font: 12px "Helvetica Neue" }
p.p5 { margin: 0; font: 12px Helvetica; min-height: 14px }
span.s1 { font: 12px "Helvetica Neue" }
span.s2 { font: 12px ".PingFang SC" }
table.t1 { border-collapse: collapse }
td.td1 { border: 1px solid rgba(154, 154, 154, 1); padding: 1px 5px }
p.p1 { margin: 0; font: 16px ".PingFang SC"; color: rgba(53, 53, 53, 1) }
p.p2 { margin: 0; font: 16px ".PingFang SC"; color: rgba(53, 53, 53, 1); min-height: 19px }
p.p3 { margin: 0; font: 12px "Helvetica Neue" }
p.p4 { margin: 0; font: 12px ".PingFang SC" }
span.s1 { font: 12px ".PingFang SC" }
span.s2 { font: 12px "Helvetica Neue" }
span.s3 { font: 12px "Helvetica Neue"; color: rgba(0, 0, 0, 1) }
span.Apple-tab-span { white-space: pre }

三种模式,一般指令模式、编辑模式(i,I,o,O,a,A,ESC)、指令列命令模式(:/?)

一般指令模式:

移动:

数字n加上下左右键 向上下左右移动n个字符

ctrl+f 向下移动一页

ctrl+b 向上移动一页

ctrl+d 向下移动半页

ctrl+u 向上移动半页

n+空格 向右移动n个字符

0 移动到该行最前边的字符处

$ 移动到该行最后边的字符处

H 光标移动到这个屏幕最上方那一列的第一个字符处

M 光标移动到这个屏幕中央那一列的第一个字符处

L 光标移动到这个屏幕最下方那一列的第一个字符处

G 移动到这个文件的最后一列

n+G 移动到这个文件的第n列

gg 移动到文件的第一列,相当于1G

n+<Enter> 光标向下移动n列

搜索

/word 从光标处向下搜索

?word 从光标处向上搜索

n 重复前一个搜索动作

N 反向进行前一个搜索动作

替换

:n1,n2s/word1/word2/g n1,n2为数字,表示第n1与n2列之间查找字符串word1,并将该字符串替换成word2

:1,$s/word1/word2/g 从第1列到最后一列替换word1为word2

:1,$s/word1/word2/gc 在替换前显示提示字符给用户确定是否需要替换

删除

n+x 向后删除n个字符

n+X 向前删除n个字符

dd 删除光标所在的那一列

ndd 删除光标及向下的n行

d1G 删除光标到第一行的所有数据

dG 删除光标所在到最后一行的所有数据

d$ 删除光标所在处到该列尾的字符

d0 删除光标所在处到该列首的第一个字符

复制粘贴

nyy 复制光标及向下n列的数据

y1G 复制光标所在列到第一列的数据

yG 复制光标所在列到最后一列的数据

y0 复制光标所在字符到该列行首的所有字符

y$ 复制光标所在字符到该列行尾的所有字符

p,P p将已复制的数据在光标下一列粘贴上,P将已复制的数据粘贴在光标在的上一列

J 将光标所在列与下一列数据合为同一列,中间有空格

复原

u 复原前一个动作

ctrl+r  重做前一个动作,与u相反

. 重复前一个动作

:e! 在vim下进行多种编辑行为后,恢复到原始状态

编辑模式

编辑

o:从下一行开始写,a:从当前字符后开始写,i:从当前字符前开始写

i/I i为从当前光标所在处插入,I为从目前所在列的第一个非空格处开始插入

a/A a为从当前光标所在处的下一个字符处开始插入,A为从光标所在列的最后一个字符处开始插入

o/O o在光标所在列的下一列插入新的一列,O为在上一列插入新的一列

r/R进入取代模式,r只会取代光标所在处的字符,R从光标所在处开始取代,直到按下ESC为止

退出与保存

:w  :q  :wq :q! :w保存,:q离开,:q!强制退出

ZZ 若文件没有改动,不存储离开,若文件变动,则存储后离开

另存为

:w filename 将编辑的数据存储成另一个文件

:n1,n2 w filename 将n1到n2的内容存储成另一个文件

编辑模式下操作其他文件/命令

:r filename 在编辑的数据中,读入另一个文件的数据,即将该文件内容加在光标所在列的后边

:! command 暂时离开vim到命令行模式下执行command并显示结果,例如:! ls -l

行号

:set nu 显示行号

:set nonu 取消行号

区域块的选择:

v 字符选择,将光标经过的地方反白选择

V 行选择,将光标经过的行反白选择

ctrl+v 区域块选择,可以用长方形的方式选择字符

y 将反白的地方复制

d 将反白的地方删除掉

p 将复制的区域块,粘贴在光标所在处

多文件编辑

vim + 多个文件名 同时编辑多个文件

:files 查看目前该vim开启的所有文件,显示%a的文件为当前正在编辑的文件

:N 编辑上一个文件

:n 编辑下一个文件

多窗口功能

打开一个文件后,通过:sp [文件名]在新窗口打开另一个文件,文件名缺失时,出现在新窗口中的是同一个文件

:sp [filename] 在新窗口中打开文件

ctrl+w后加方向键 切换当前所在窗口

:q 关闭当前窗口

linux中的vim用法的更多相关文章

  1. (转)linux 中特殊符号用法详解

    linux 中特殊符号用法详解 原文:https://www.cnblogs.com/lidabo/p/4323979.html # 井号 (comments)#管理员  $普通用户 脚本中 #!/b ...

  2. Linux中find常见用法

    Linux中find常见用法示例 ·find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \; find命令的参数 ...

  3. [转]Linux中find常见用法示例

    Linux中find常见用法示例[转]·find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \;find命令的参 ...

  4. linux中make的用法

    一.linux中make的用法 目的:       基本掌握了make 的用法,能在Linux系统上编程.环境:       Linux系统准备:       准备三个文件:file1.c, file ...

  5. Linux中“!"的神奇用法

    前言 实际上,不起眼的“!”在linux中有着很多让你惊叹的妙用.本文就来细数那些“!”的神奇用法. 执行上一条命令 例如,在执行完上面一条命令后,可以使用下面的方式再次执行上一条命令: $ wher ...

  6. Linux中sed的用法实践

    Linux中sed的用法实践 参考资料:https://www.cnblogs.com/emanlee/archive/2013/09/07/3307642.html http://www.fn139 ...

  7. Linux中Sed的用法

    Linux中Sed的用法 sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作,下面先了解一下sed的用法sed命令行格式为: ...

  8. Linux中 find 常见用法示例

    Linux中find常见用法示例 #find path -option [ -print ] [ -exec -ok command ] {} \; #-print 将查找到的文件输出到标准输出 #- ...

  9. linux中comm命令用法

    linux系统中comm命令用法详解 linux系统下的comm命令是一个非常实用的文件对比命令. comm命令功能:   选择或拒绝两个已排序的文件的公共的行. comm命令语法:comm [-12 ...

随机推荐

  1. declaration may not appear after executable statement in block--转载

    这个问题是在编译STM32的程序时遇到的,这个错误的原因是对于变量的声明不能放在可执行语句后面,必须在主函数开头声明变量.在程序中声明一个变量时,需要在可执行语句之前声明,否则会出现以上错误. 例: ...

  2. 『动善时』JMeter基础 — 30、JMeter中JSON断言详解

    目录 1.JSON断言组件界面详解 2.JSON断言组件的使用 (1)测试计划内包含的元件 (2)登陆接口请求界面内容 (3)JSON断言界面内容 (4)查看运行结果 (5)断言结果组件说明 3.JS ...

  3. 使用 JavaScript 将 HTML 转换为 PDF

    使用 JavaScript 将 HTML 转换为 PDF 更多相关学习资料参见http://www.pdfdownload.cn/b/ba_index.php 在本文中,我们将了解如何在浏览器(即完全 ...

  4. 用python调试Appium和雷电模拟器连接时出现Original error: Could not find 'adb.exe' in PATH

    用python调试Appium和雷电模拟器连接时出现Original error: Could not find 'adb.exe' in PATH 确定环境变量没错,用管理员启动Appium就不会出 ...

  5. 201871030138-杨蕊媛 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告

    项目 内容 班级博客链接 https://edu.cnblogs.com/campus/xbsf/2018CST 这个作业要求链接 https://www.cnblogs.com/nwnu-daizh ...

  6. Mobileye 自动驾驶策略(二)

    Mobileye 自动驾驶策略(二) 与多方都成功进行了合作,其中比较大型的合作包括法雷奥.百度和中国 ITS. 法雷奥是最近的的 Tier 1 合作伙伴,法雷奥和 Mobileye 签署协议,表示未 ...

  7. MindSpore模型推理

    MindSpore模型推理 如果想在应用中使用自定义的MindSpore Lite模型,需要告知推理器模型所在的位置.推理器加载模型的方式有以下三种: 加载本地模型. 加载远程模型. 混合加载本地和远 ...

  8. CUDA功能和通用功能

    CUDA功能和通用功能 本文描述了类似于CUDA ufunc的对象. 为了支持CUDA程序的编程模式,CUDA Vectorize和GUVectorize无法产生常规的ufunc.而是返回类似ufun ...

  9. python10-网络编程

    1,七层网络协议 应表会传网数物: 应用层.表示层.会话层 (这三层又可以合并为应用层,这样就是五层网络协议[osi五层协议]) python '你好'.encoding('utf-8') 传输层. ...

  10. 浏览Github必备的5款神器级别的Chrome插件

    我们知道 Github 是程序员特有的宝藏,也可以称它为 GayHub, 大家浏览 Github 的时候,一定遇到过下面这些问题: 不克隆到本地的情况下阅读代码困难. 无法单独下载仓库中的某个文件/文 ...