1 简介

vim是文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。下面讲述一些必要的基本命令,而掌握好这些命令,您就能够很容易将vim当作一个通用的万能编辑器来使用了。

vim自带基础教程:在任意一台装有vim的机器上,命令行中输入vimtutor  然后就可以看到文档了。另外网上也有很多例子如:http://blog.csdn.net/niushuai666/article/details/7275406

2 基本命令

包含vim的基本介绍、使用模式、文件的打开关闭保存、插入文本或新建行、移动光标、删除、恢复字符或行、搜索等等。

vim有3个模式:插入模式、命令模式、低行模式。

插入模式:在此模式下可以输入字符,按ESC将回到命令模式。

命令模式:可以移动光标、删除字符等。

低行模式:可以保存文件、退出vi、设置vi、查找等功能(低行模式也可以看作是命令模式里的)。

2.1 打开文件、保存、关闭文件(vim命令模式下使用), // 是注释的意思

vi filename     //打开filename文件

:w           //保存文件

:w cszhi.com    //保存至cszhi.com文件

:q           //退出编辑器,如果文件已修改请使用下面的命令

:q!//退出编辑器,且不保存

:wq          //退出编辑器,且保存文件

:w !sudo tee %  //保存对只读文件的修改,需要管理员密码

2.2 插入文本或行(vim命令模式下使用,执行下面命令后将进入插入模式,按ESC键可退出插入模式)

a       //在当前光标位置的右边添加文本

i       //在当前光标位置的左边添加文本

A       //在当前行的末尾位置添加文本

I       //在当前行的开始处添加文本(非空字符的行首)

O       //在当前行的上面新建一行

o       //在当前行的下面新建一行

R       //替换(覆盖)当前光标位置及后面的若干文本

J       //合并光标所在行及下一行为一行(依然在命令模式)

2.3 移动光标(vim命令模式下使用)

①使用上下左右方向键

②命令模式下:

h   向左、j   向下、k   向上、l  向右。

空格键向右、Backspace向左、Enter移动到下一行首、-移动到上一行首。

2.3 删除、恢复字符或行(vim命令模式下使用)

x         //删除当前字符

nx        //删除从光标开始的n个字符

dd        //删除当前行

ndd        //向下删除当前行在内的n行

u         //撤销上一步操作

U         //撤销对当前行的所有操作

2.4 搜索(vim命令模式下使用)

/cszhi    //向光标下搜索cszhi字符串

?cszhi    //向光标上搜索cszhi字符串

n         //向下搜索前一个搜素动作

N         //向上搜索前一个搜索动作

2.5 跳至指定行(vim命令模式下使用)

n+//向下跳n行

n-//向上跳n行

nG        //跳到行号为n的行

G         //跳至文件的底部

2.6 设置行号(vim命令模式下使用)

:set  nu     //显示行号

:set nonu    //取消显示行号

2.7 复制、粘贴(vim命令模式下使用)

yy    //将当前行复制到缓存区,也可以用 "ayy 复制,"a 为缓冲区,a也可以替换为a到z的任意字母,可以完成多个复制任务

nyy   //将当前行向下n行复制到缓冲区,也可以用 "anyy 复制,"a 为缓冲区,a也可以替换为a到z的任意字母,可以完成多个复制任务

yw    //复制从光标开始到词尾的字符

nyw   //复制从光标开始的n个单词

y^    //复制从光标到行首的内容

y$    //复制从光标到行尾的内容

p     //粘贴剪切板里的内容在光标后,如果使用了前面的自定义缓冲区,建议使用"ap 进行粘贴

P     //粘贴剪切板里的内容在光标前,如果使用了前面的自定义缓冲区,建议使用"aP 进行粘贴

2.8 替换(vim命令模式下使用)

:s/old/new//用new替换行中首次出现的old

:s/old/new/g        //用new替换行中所有的old

:n,m s/old/new/g    //用new替换从n到m行里所有的old

:%s/old/new/g       //用new替换当前文件里所有的old

2.9 编辑其他文件

:e otherfilename    //编辑文件名为otherfilename的文件

2.10 修改文件格式

:set fileformat=unix   //将文件修改为unix格式,如win下面的文本文件在linux下会出现^M

2.11 查看当前行信息(vim命令模式下使用)

ctrl+g

2.10 跳转到制定行(vim命令模式下使用)

number + shift  + g

如果没有输入number则跳转到末尾。1+shit+g行首。

2.11 vim 取消 查找 高亮

:set hlsearch "打开高亮搜索

:set nohlsearch "关闭高亮搜索

:nohl "只取消掉当前的搜索高亮

2.12 滚屏

ctrl+u\d  向上\下滚动半屏

ctrl+e\y  向上\下滚动一行

ctrl+b\f  向上\下滚动一屏

2.13 移动

b、3b、w、3w:向前\后移动几个单词,标点也算一个单词。相应的大写状态为不含标点,即只把空格和换行符作为单词间隔符。

$(shift+4):移动到行尾  3$:移动到3行后的行尾

0 行首有空格

^(shift+6):移动到行首,

+:移到下一行的行首

-: 移到上一行的行首

2.14 折叠

命令小结
zc 关闭当前打开的折叠
zo 打开当前的折叠
zm 关闭所有折叠
zM 关闭所有折叠及其嵌套的折叠
zr 打开所有折叠
zR 打开所有折叠及其嵌套的折叠
zd 删除当前折叠
zE 删除所有折叠
zj 移动至下一个折叠
zk 移动至上一个折叠
zn 禁用折叠
zN 启用折叠

2.15
函数折叠(命令模式)

zf

shift+%

2.16 代码格式化

#格式化全文

gg=G

 

#自动缩进当前行

==

 

#格式化当前光标接下来的10行

10=j 



#格式化当前光标向上的10行

10=k 

 

#格式化选定的行

v(向上下选择)

=

#命令解释

gg    #跳转到文件首行

=     #应用缩进格式

G     #直到文件结束

2.17 在函数中移动光标(命令模式)

[{ 转到上一个位于第一列的"{"

}] 转到下一个位于第一列的"{"

{    转到上一个空行

}    转到下一个空行

gd 转到当前光标所指的局部变量的定义

*    转到当前光标所指的单词下一次出现的地方

#    转到当前光标所指的单词上一次出现的地方

vim 命令全的更多相关文章

  1. Linux之vi/vim命令

    vi命令是linux中必不可少的一个编辑器工具.那么vi与vim又有什么区别呢,可以简单理解为vim是vi的升级版.在编辑一个文本时,vi不会显示颜色,而vim会显示颜色.显示颜色更易于用户进行编辑, ...

  2. 15个不起眼但非常强大的 Vim 命令

    如果我的关于这个话题的最新帖子没有提醒到你的话,那我明确地说,我是一个 vim 的粉丝.所以在你们中的某些人向我扔石头之前,我先向你们展示一系列“鲜为人知的 Vim 命令”.我的意思是,一些你可能以前 ...

  3. Vim 命令图解-Gvim使用笔记-2017-5-9

    Vim 命令图解-Gvim使用笔记... 图片要是看的不太清楚推荐使用:鼠标右键在新标签中打开或是全屏看图 Vim中常用的一些速查命令: Vim发展历史:1976年Bill Joy开发了vi1988 ...

  4. VIM学习一: VIM命令学习及插件介绍

    一.光标移动及编辑命令(含查找替换) [打开关闭窗口] :e file或:open file       打开新文档 :q或者ctrl+w+q         关闭当前视图的窗口 :tab split ...

  5. vim 命令图解

    vim 命令,vim是一个很好的编辑工具,下面为大家介绍一下vim入门基本命令. 方法/步骤   1 [vim 命令-启动vimtutor]:执行命令:vimtutor.vimtutor是vim使用入 ...

  6. Linux下使用vim命令编辑与修改文本内容

    输入 vim --help VIM - Vi IMproved 8.0 (2016 Sep 12, compiled Jul 26 2017 20:13:43) 用法: vim [参数] [文件 .. ...

  7. Vim命令使用

    终端输入vim命令(不区分大小写)进入Vim,起始默认进去是normal模式(即普通模式),使用:q可以退出Vim,使用i(insert)进入编辑模式,开始输入文字,使用Esc键又可以回到normal ...

  8. 【转】一个 Vim 重度用户总结的 vim 超全指南

    [转]一个 Vim 重度用户总结的 vim 超全指南 我本人是 Vim 的重度使用者,就因为喜欢上这种双手不离键盘就可以操控一切的feel,Vim 可以让我对文本的操作更加精准.高效. 对于未使用过 ...

  9. 学习 Vim 命令总结

    学习 Vim 命令总结 可以使用 vscode-vim 扩展,但是要注意一些ctrl+字母的快捷键会无效,必须去掉冲突的快捷键 esc 回到普通模式 i 普通模式进入插入模式 : 进入命令模式 :wa ...

随机推荐

  1. 【POJ】1935 Journey(树形dp)

    题目 传送门:QWQ 分析 凉凉. 答案是所有要经过的点到根所经过的边权和减去最大的边权. 代码 vector好慢啊 #include <cstdio> #include <vect ...

  2. c#中var类型用法同dynamic,object区别

    1.object万能对象:object只是个对象,是个强类型,在编译的时候确定类型了,只能用对象本身的方法属性等等,object想使用动态属性方法只能用反射. 2.var万能强类型. 3.dynami ...

  3. python Flask篇(一)

    MarkdownPad Document *:first-child { margin-top: 0 !important; } body>*:last-child { margin-botto ...

  4. delphi 组件容器TObjectList代替List

    delphi 组件容器TObjectList代替List TObjectList objList->delete(0); 这个会释放第0行元素的对象 class TTabFormInfo { p ...

  5. fastjson数据格式转换 SerializerFeature属性详解

    SerializerFeature属性 名称 含义 备注 QuoteFieldNames 输出key时是否使用双引号,默认为true   UseSingleQuotes 使用单引号而不是双引号,默认为 ...

  6. Maven(六) eclipse 使用Maven deploy命令部署构建到Nexus

    转载于:http://blog.csdn.net/jun55xiu/article/details/43051627 1  应用场景:SYS-UTIL(系统工具)项目部署.构建成JAR包(SYS-UT ...

  7. Spring的属性文件properties使用注意

    Spring的属性文件properties使用注意 Spring 中属性文件的配置 通常我们会使用properties文件来设置一些属性,如数据库连接信息,避免进行硬编码, <bean clas ...

  8. 机器学习算法中GBDT和XGBOOST的区别有哪些

    首先xgboost是Gradient Boosting的一种高效系统实现,并不是一种单一算法.xgboost里面的基学习器除了用tree(gbtree),也可用线性分类器(gblinear).而GBD ...

  9. R_CNN

    https://blog.csdn.net/briblue/article/details/82012575 背景本篇论文的题目是 <Rich feature hierarchies for a ...

  10. Python:如何排序(sort)

    一.前言 对Python的列表(list)有两个用于排序的方法: 一个是内建方法list.sort(),可以直接改变列表的内容: >>> list1 = [9,8,7,6,5] &g ...