VIM操作手札
查看帮助手册
常用命令及说明
在命令模式下编辑
| 命令 | 说明 |
|---|---|
| Ctrl+u | 向文件首翻半屏 |
| Ctrl+d | 向文件尾翻半屏 |
| Ctrl+f | 向文件尾翻一屏 |
| Ctrl+b | 向文件首翻一屏 |
| Esc | 从编辑模式切换到命令模式 |
| ZZ | 命令模式下保存当前文件所做的修改后退出vi |
| :行号 | 光标跳转到指定行的行首 |
| :$ | 光标跳转到最后一行的行首 |
| x或X | 删除一个字符,x删除光标后的,而X删除光标前的 |
| D | 删除从当前光标到光标所在行尾的全部字符 |
| dd | 删除光标行正行内容 |
| ndd | 删除当前行及其后n-1行 |
| ?nyy | 将当前行及其下n行的内容保存到寄存器 ? 中,其中 ? 为一个字母,n为一个数字 |
| p | 粘贴文本操作,用于将缓存区的内容粘贴到当前光标所在位置的下方 |
| P | 粘贴文本操作,用于将缓存区的内容粘贴到当前光标所在位置的上方 |
| /字符串 | 文本查找操作,用于从当前光标所在位置开始向文件尾部查找指定字符串的内容,查找的字符串会被加亮显示 |
| ?name | 文本查找操作,用于从当前光标所在位置开始向文件头部查找指定字符串的内容,查找的字符串会被加亮显示 |
| a,bs/F/T | 替换文本操作,用于在第a行到第b行之间,将F字符串换成T字符串。其中,“s/”表示进行替换操作 |
| a | 在当前字符后添加文本 |
| A | 在行末添加文本 |
| i | 在当前字符前插入文本 |
| I | 在行首插入文本 |
| o | 在当前行后面插入一空行 |
| O | 在当前行前面插入一空行 |
| :wq | 在命令模式下,执行存盘退出操作 |
| :w | 在命令模式下,执行存盘操作 |
| :w! | 在命令模式下,执行强制存盘操作 |
| :q | 在命令模式下,执行退出vi操作 |
| :q! | 在命令模式下,执行强制退出vi操作 |
| :e文件名 | 在命令模式下,打开并编辑指定名称的文件 |
| :n | 在命令模式下,如果同时打开多个文件,则继续编辑下一个文件 |
| :f | 在命令模式下,用于显示当前的文件名、光标所在行的行号以及显示比例 |
| :set number | 在命令模式下,用于在最左端显示行号 |
| :set nonumber | 在命令模式下,用于在最左端不显示行号 |
| w | 移动到下一个单词开头,这样就比单纯的使用l要好很多,快很多 |
| e | 移动到当前单词的末尾 |
| b | 光标向后移动一个单词,同理,比h要好 |
| 0 | 光标移动到行首(并不会忽略空格和缩进) |
| ^ | 光标移动到当前行第一个单词的开头,这个用得比0要多 |
| $ | 光标移动到行尾,不知道为什么,我一直觉得这个操作很麻烦,能有个其他相对简便的就好了 |
| ( | 光标移动到下个句子,也就是说移动到下一个空白行 |
| ) | 光标移动到上个句子 Ctrl + f:向下移动一屏。 |
| Ctrl + b | 向上移动一屏。 |
| G | 到文件尾 |
| numG | 移动光标到指定的行(num)。(比如 10G 就是到第 10 行) |
| gg | 到文件首 |
| H | 移动光标到屏幕上面 |
| M | 移动光标到屏幕中间 |
| L | 移动光标到屏幕下面 |
| * | 读取光标处的字符串,并且移动光标到它再次出现的地方。 |
| \# | 和上面的类似,但是是往反方向寻找。 |
| /text | 从当前光标处开始搜索字符串 text,并且到达 text 出现的地方。必须使用回车来开始这个搜索命令。如果想重复上次的搜索的话,按 n。 |
| ?text | 和上面类似,但是是反方向。 |
| ma | 在当前光标的位置标记一个书签,名字为 a。书签名只能是小写字母。你看不见书签的存在,但它确实已经在那里了。 |
| `a | 到书签 a 处。注意这个不是单引号,它一般位于大部分键盘的 1 的左边。 |
| `. | 到你上次编辑文件的地方。这个命令很有用,而且你不用自己去标记它。 |
| Ctrl+p | 自动补全 |
| Ctrl+n | 自动补全 |
| s/vim/vi/ | 表示替换当前行的第一个vim为vi |
| s/vim/vi/g | 表示替换当前行所有的vim为vi |
| dw | 可以删除到下一个单词的开头 |
| de | 可以删除到本单词的末尾 |
| dd | 删除整行 |
| 3dd | 删除3行 |
| D | 从光标处删除到该行末尾 |
| d0 | 从光标处删除到该行开头 |
| dd/yy/cc | 剪切/拷贝/剪切(并进入插入模式)当前行 |
在VISUAL模式下编辑
| 命令 | 说明 |
|---|---|
| v | 按字符进行选择 |
| V | 按行进行选择 |
| Ctrl + v | 按块进行选择 |
| d | 剪切 |
| y | 拷贝 |
| c | 剪切并且粘贴时会进入插入模式 |
插入模式的编辑
直接编辑即可,简单
语法
vi(选项)(参数)
选项
+<行号>:从指定行号的行开始先是文本内容;
-b:以二进制模式打开文件,用于编辑二进制文件和可执行文件;
-c<指令>:在完成对第一个文件编辑任务后,执行给出的指令;
-d:以diff模式打开文件,当多个文件编辑时,显示文件差异部分;
-l:使用lisp模式,打开“lisp”和“showmatch”;
-m:取消写文件功能,重设“write”选项;
-M:关闭修改功能;
-n:不实用缓存功能;
-o<文件数目>:指定同时打开指定数目的文件;
-R:以只读方式打开文件;
-s:安静模式,不现实指令的任何错误信息。
参数
文件列表:指定要编辑的文件列表。多个文件之间使用空格分隔开。
VIM操作手札的更多相关文章
- vim操作备忘录
vim操作备忘录 vim 备忘录 vim的书籍虽然看不不少,可是老是容易忘记,主要是自己操作总结过少,这个博客就主要用来记录一些比较常见的术语和操作,以防止自己再次忘记. <leader> ...
- linux下vi或vim操作Found a swap file by the name的原因及解决方法
在linux下用vi或vim打开Test.java文件时 [root@localhost tmp]# vi Test.java出现了如下信息: E325: ATTENTION Found a s ...
- [No0000191]7种提高工作效率的Vim操作-Vim使用技巧(6)
Vim一直被认为是一种非常高效的文本编辑器,但是对于普通用户来说,很难在入门的时候就体会到Vim的所谓高效性. 本文介绍7种提高你工作效率和生产力的Vim使用技巧,主要集中在对某个文件范围内的特定目标 ...
- VIM操作基础命令
VIM操作基础命令 1 文件操作 1.1 打开文件 VIM 使用 –o 或 –O 选项打开多个文件,其中 –o 表示垂直并排,例如 vim -o lesson4 lesson5 lesson6.大O表 ...
- vim学习笔记(1)——vim操作
仅记录一些自己最经常使用的vim操作.随时更新 文本操作 d 剪切.双击剪切一行 y 复制,双击复制一行 p 粘贴 x 删除当前光标下字符 r 替换当前光标字符.后面接替换的字符 :s/old/new ...
- VIM操作常用指令(转)
vim是上Linux非常常用的编辑器,很多Linux发行版都默认安装了vi(vim).vi(vim)命令繁多但是如果使用灵活之后将会大大提高效率.vi是"visual interface&q ...
- Ubuntu/Linux 下pdf阅读器Zathura(类vim操作)
Ubuntu下源安装: sudo apt-get install zathura 操作总结: 基本操作与vim一致,对于熟悉vim快捷键的十分方便: 向下移动一页是J(Ctrl+f),向上移动一页是K ...
- vim操作集合
Vim命令合集 命令历史 以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令. 启动vim 在命令行窗口中输入以下命令即可 vim 直接启动vim vim filena ...
- vim操作笔记
1.切换到下一个文件 假设要切换的文件名为 test.py :ex test.py 2.文档内复制命令 yy "复制光标所在行.或大写一个Y. 2yy "复制两行. y^ &quo ...
随机推荐
- head first 设计模式 策略模式
HEAD FIRST:策略模式定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户. 设计模式:定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换.本 ...
- input的on(‘input’,function(0{})事件
$('div[name="swlw"]').on('input',function(e){ function(){}; });
- easyui 展开缩起
1.引用jquery-easyui-1.4.4/datagrid-detailview 2.增加属性 view: detailview, detailFormatter: function (rowI ...
- Ground Truth
ground truth就是参考标准,一般用来做误差量化.比方说要根据历史数据预测某一时间的温度,ground truth就是那个时间的真实温度.error就是(predicted temperatu ...
- Js判断参数(String,Array,Object)是否为undefined或者值为空
在一些前端控件要提交数据到服务器端的数据验证过程中,需要判断提交的数据是否为空.如果是普通表单的字符串数据,只需要在 trim 后判断 length 即可,而这里需要的数据可以是各种不同的类型,通过 ...
- 【51nod1847】奇怪的数学题(Min_25筛+杜教筛)
题面 传送门 题解 这题有毒--不知为啥的错误调了半天-- 令\(f(i)={sgcd(i)}\),那么容易看出\(f(i)\)就是\(i\)的次大质因子,用\(i\)除以它的最小质因子即可计算 于是 ...
- 10.18 NOIP2018提高组模拟题(二)
大水题 1.咒语 (curse.pas/c/cpp) [题目描述] 亮亮梦到自己来到了魔法城堡,但一扇巨大的石门阻拦了他通向城堡内的路.正当他沮丧之际,突然发现门上有一处机关,机关上有一张很长的纸条. ...
- springboot整合mybatis,redis,代码(五)
redis注解开发过程中包含许多注解 1.@Cacheable 可以标记在方法上,也可以标记在类上.当标记在方法上时表示该方法是支持缓存的,当标记在类上时则表示该类所有的方法都是支持缓存的.应用到读取 ...
- HashMap 1.8的源码分析二
hashmap的构造方法: public HashMap(int initialCapacity, float loadFactor) { ) throw new IllegalArgumentExc ...
- Set去掉重复的元素
String[] uids= request.getParameterValues("dxus");获取页面传过来的id //--------------------------- ...