1.  模式切换

vim的模式 $ vi filename 进入normal 模式,这是命令模式,用于执行大多数常用的编辑命令,不能输入

敲i 进入 insert 模式,这是正常的编辑模式,按Esc 可以回到 normal 模式

在normal 模式下输入 : (冒号) 进入底行模式,也是执行命令的模式,用的最多的是查找

不管在 insert 模式还是底行模式,按 Esc 就能回到 normal 模式 insert 模式和底行模式是不能直接相互切换的,只能通过 normal 模式切换

2. 保存退出

保存,退出,环境变量
:w :  将编辑的数据写入硬盘档案中(常用)
:w!:   若文件属性为『只读』时,强制写入该档案。不过,到底能不能写入, 还是跟你对该档案的档案权限有关啊!

:q:   离开 vi (常用)
:q! :  若曾修改过档案,又不想储存,使用 ! 为强制离开不储存档案。

:wq:   储存后离开

:x :  储存后离开

:wq! :  强制储存后离开

ZZ:   这是大写的 Z 喔!若档案没有更动,则不储存离开,若档案已经被更动过,则储存后离开!

:w [filename]:   另存为
:r [filename]:   在编辑的数据中,读入另一个档案的数据。亦即将 『filename』 这个档案内容加到光标所在行后面
:! :  command 暂时离开 vi 到指令列模式下执行 command 的显示结果!例如 『:! cat ./test』即可在 vi 当中察看当前文件夹中的test文件中的内容

3. 环境变量

:set nu :  设置行号(常用)

:set nonu :  取消行号(常用)

:set hlsearch :  设置高亮度查找

:set nohlsearch :  取消高亮度查找

:set backup :  自动备份文件

:set ruler :  开启右下角状态栏说明

:set showmode :  显示左下角的INSERT之类的状态栏

:set backspace={0,1,2} :  设置退格键功能。为2时可以删任意字符。为0或1时仅可以删除刚才输入的字符。

:set all :  显示目前所有的环境参数值

:set :  显示与系统默认值不同的参数值

:syntax on/off : 是否开启依据相关程序语法显示不同的颜色

:set bg=dark/light : 是否显示不同的颜色色调

4. 光标操作

h 或 向左箭头键(←):   光标向左移动一个字符

20h或者20(←):  光标向左移动20个字符,

j 或 向下箭头键(↓):  光标向下移动一行
20j或者20(↓):  光标向下移动20行,

k 或 向上箭头键(↑):  光标向上移动一行
20k或者20(↑):  光标向上移动20行

l 或 向右箭头键(→):   光标向右移动一个字符
20l或者20(→):  光标向右移动20字符,

^ : 移动这一行的开头,与$相对应

Ctrl + f :   屏幕『向下』移动一页,相当于 [Page Down]按键 (常用)
Ctrl + b:   屏幕『向上』移动一页,相当于 [Page Up] 按键 (常用)
Ctrl + d :  屏幕『向下』移动半页
Ctrl + u:   屏幕『向上』移动半页
Ctrl + e:   屏幕『向下』移动一行
Ctrl + y :  屏幕『向上』移动一行
+ :  光标移动到非空格符的下一列
- :  光标移动到非空格符的上一列
n<space>:   那个 n 表示『数字』,按下数字后再按空格键,光标会向右移动这一行的 n 个字符。例如 20<space> 则光标会向后面移动 20 个字符距离。
n<Enter> :  n 为数字。光标向下移动 n 行(常用)
0:   或功能键[Home] 移动光标到下一行最前面,并进入到insert状态
$:   或功能键[End] 移动到这一行的最后面字符处(常用),这里的$在正则里面表示是结尾的意思,这样理解一下就能记住
H:   光标移动到这个屏幕的最上方那一行的第一个字符,H你就把它记成是header的缩写,这样就好记了
M:   光标移动到这个屏幕的中夬那一行的第一个字符,M你就把它记成middle的缩写
L:   光标移动到这个屏幕的最下方那一行的第一个字符,L你就把它记成last的缩写
G :  移动到这个档案的最后一行(常用)
nG n:   为数字。移动到这个档案的第 n 行。例如 20G 则会移动到这个档案的第 20 行
gg :  移动到这个档案的第一行,相当于 1G  (常用)

5. 删除,复制,粘贴,撤销

x, X:   在一行字当中,x 为向后删除一个字符 (相当于 [del] 按键), X 为向前删除一个字符(相当于 [backspace] 亦即是退格键) (常用)
nx n:   为数字,连续向后删除 n 个字符。举例来说,我要连续删除光标后 10 个字符, 『10x』。
nX n:   为数字,连续删除光标前面的 n 个字符。举例来说,我要连续删除光标前的 10 个字符, 『10X』。

dd:  删除光标所在的那一整行(常用)
yy:  复制光标所在的那一行(常用)

ndd:  n 为数字。删除光标所在行向下 n 行,例如 20dd 则是删除 20 行(常用)
nyy:  n 为数字。复制光标所在行向下 n 行,例如 20yy 则是复制 20 行(常用)

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

y1G:  复制光标所在行到第一行的所有数据

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

d$:  删除光标所在处,到该行的最后一个字符
y$:  复制光标所在的那个字符到该行行尾的所有数据

d0:  那个是数字的 0 ,删除光标所在处,到该行的最前面一个字符
y0:  复制光标所在的那个字符到该行行首的所有数据

p, P :  p将复制的数据,粘贴在光标的下一行,P将复制的数据,粘贴到光标的上一行
J:   将光标所在行不下一行的数据结合成同一行
c :  重复删除多个数据,可以通过上下键来决定删除光标上面的,还是下面的
u :  撤销。(常用)
Ctrl + r:   撤销的撤销。(常用)

6  选择,查找 ,替换

v :   字符选择,会将光标经过的地方反白选择!
V :   行选择,会将光标经过的行反白选择!
Ctrl + v “:  区块选择,可以用长方形的方式选择资料
y :  将反白的地方复制起来
d :  将反白的地方删除掉

/string:   向光标之下寻找一个名称为string字符串
?string:   向光标之上寻找一个名称为string字符串

n:  正向查找,搜索出的string,可以理解成next

N:  反向查找,搜索出的string,可以理解成Not next

:n1,n2s/string1/string2/g :   这里的n1是查找的开始行数,n2是查找结束的行数。【:2,7s/ddd/fff/g】在第2行,第7行之间,将ddd替换成fff
:1,$s/string1/string2/g :  从第一行到最后一行寻找 string1 字符串,并将该字符串替换为 string2 !(常用)
:1,$s/string1/string2/gc :  从第一行到最后一行寻找 string1 字符串,并将该字符串替换为 string2 !且在替换前显示提示字符给用户确认 (confirm) 是否需要替换!(常用)

7. 文件恢复

目前主要的编辑器都有恢复功能,vim也不例外。vim是通过“保存”文件来挽回数据的。
每当我们在用vim编辑时,vim都会自动在被编辑的文件的目录下面再新建一个名为filename.swap的文件。这就是一个暂存文件,我们对文件filename所做的操作都会被记录到这个文件当中。如果系统意外崩溃,导致文件没有正常保存,那么这个暂存文件就会发挥作用。下面用一个例子来说明(Note:我用的是Ubuntu)。
打开终端,输入命令,将etc目录下面的manpath.config复制到tmp目录下面,并且更改当前工作目录为tmp:
cp /etc/manpath.config /tmp
cd /tmp
用vim编辑manpath.config文件:vim manpath.config。

我们在vim的一般模式下按下Ctrl+z组合键,vim就会被丢到后台执行。回到命令提示符环境后,我们模拟将vim的工作不正常中断。

kill -9 %1;强制杀死制定的进程。

这样导致暂存盘无法通过正常的流程结束,所以暂存文件不会消失,而是继续保留下来。当再次编辑那个文件时(输入命令vim manpath.config),出现(ubuntu 11.10):

这时,有六个按钮可以使用:

O(pen for Read-Only):打开成只读文件。

E(dit):用正常方式打开要编辑的文件,并不会载入暂存文件的内容。这很容易出现两个用户相互改变对方的文件的问题。

R(ecover):加载暂存文件的内容。

D(elete):如果你确定这个暂存文件是没有用的,则可以删除。

Q(uit):不进行任何操作,回到命令行。

A(bort):忽略这个编辑行为,和Q类似。

需要注意的是:这个暂存文件不会应为你结束vim后自动删除,必须要手动删除。否则每次打开对应的文件时都会出现这样的提示。

 8.  宏

这是一个ini类型的配置文件,可以看到每一行的最前面有一个逗号,现在如果需要将每行前面的逗号去掉,怎么办?在第一行行首按x,然后按j,然后按x...这样重复下去?确实,我最开始也是这样的,但如果这个文件有100行要这样修改呢?或者1000行?

;=====================================================================================
;This is a sample configuration file when upgrading XXX using InstallShield.
;Author: ini_always
;Date: 8/24/2011
;Last modified: 9/20/2011
;Note: Install script does NOT verify whether the configuration file is in a "WELL"
;format, a WRONG format may lead to installation failure.
;If more information is needed, please check the document for details.
;=====================================================================================

  

好吧,少废话,进入正题。所谓宏,在vim里面是指某种特定顺序的一系列操作,我们可以录制自己的操作序列,然后重复这个序列多次,以简化某种重复的操作。vim宏有录制和播放的过程,录制就是你教给vim该怎么操作,播放就是vim照着你教的进行自动操作。因此,对于上面的文件处理,首先要进行宏录制:

1.把光标定位在第一行;

2.在normal模式下输入qa(当然也可以输入qb, qc, etc,这里的a, b, c是指寄存器名称,vim会把录制好的宏放在这个寄存器中)(PS:如果不知道什么是vim的寄存器,请自行放狗搜之);

3.正常情况下,vim的命令行会显示“开始录制”的字样,这时候,把光标定位到第一个字符(按0或者|),再按x删除,按j跳到下一行;

4.normal模式下输入q,结束宏录制。

好了,经过以上步骤,我们定义了一个存储在寄存器a中的宏,它的操作序列是:0->x->j,也就是跳到行首,删除,跳到下一行。

现在,第一行已经删除了行首的逗号,而且光标也已经在第二行,现在,在normal模式下输入@a,以播放我们刚录制好的存在寄存器a中的宏。于是,第二行行首的逗号也被删除,光标停在了第三行。

这也不简单啊?你肯定会这样想,要删除100行,我还得输入100个@a,我还不如手动删除呢。呵呵,vim早就想到了,输入7@a,好了,剩下的7行全部搞定了。(PS:在命令前面加数字,就是代表要执行这个命令多少次)

当然,这个例子很简单,但也很典型。利用好vim的宏,可以使一些原本很无聊的工作要简单很多。

9    ( . ) 命令

重复上次操作

0050 Linux VIM 命令的更多相关文章

  1. Linux vim命令

    介绍 vim命令和vi的操作基本一致,vim命令的参数很多,我在这里列出了一些平时需要用的一些参数,vim主要有两个界面一个是esc的操作界面还有一个是输入i的编辑界面. 移动光标 0 (零):将光标 ...

  2. linux vim 命令使用

    基本上vim可以分为三种状态,分别是命令模式(command mode).插入模式(Insert mode)和底行模式(last line mode) 模式切换方法 在命令模式输入“i”,进入插入模式 ...

  3. Linux vim命令记录

    Ndd  :删除N行 多行删除 :1,10d ctrl+v ,移动光标,ctrl+i,输入#,esc :移动处均会输入# gg:文档头 G:文档尾 o:下一行,并进入insert模式 O:上一行并输入 ...

  4. 从零开始学安全(十六)● Linux vim命令

    游标控制 h 游标向左移 j 游标向下移 k 游标向上移 l (or spacebar) 游标向右移 w 向前移动一个单词 b 向后移动一个单词 e 向前移动一个单词,且游标指向单词的末尾 ( 移到当 ...

  5. Linux vim命令详解

    vi: o  处于下一行编辑模式 A  处于编辑的后面  ==>END gg 文件的开头 98gg 跳转到第98行 Shift + G 文件结尾 $ 文件行结尾 ^ 文件行开头   ==> ...

  6. linux VIM基本命令

    linux VIM命令: vim 在命令行中输入vim,进入vim编辑器 Esc 退出i(插入)命令进行其他命令使用 :sh 进入shell命令行,运行完命令后ctrl+d退出又一次进入vim编辑继续 ...

  7. 今天在Mac机器上使用了Flex Builder编辑了一个源代码文件,保存后使用vim命令去打开时发现系统自动在每一行的结尾添加了^M符号,其实^M在Linux/Unix中是非常常见的,也就是我们在Win中见过的/r回车符号。由于编辑软件的编码问题,某些IDE的编辑器在编辑完文件之后会自动加上这个^M符号。看起来对我们的源代码没有任何影响,其实并不然,当我们把源代码文件Check In到svn之类

    今天在Mac机器上使用了Flex Builder编辑了一个源代码文件,保存后使用vim命令去打开时发现系统自动在每一行的结尾添加了^M符号,其实^M在Linux/Unix中是非常常见的,也就是我们在W ...

  8. [工作需求]linux常用命令以及vim常用命令

    一.             Linux 常用命令 mkdir dirname新建文件夹 cd ~ 进入自己的家目录 cd dirname 进入名字为dirname的目录: l 显示当前文件夹下的文件 ...

  9. Linux常用命令——文本编辑器Vim

    Linux常用命令--文本编辑器Vim Linux  Vim常用操作 插入命令 a 在光标所在字符后插入 A 在光标所在行尾插入 i 在光标所在字符前插入 I 在光标所在行首插入 o 在光标下插入新行 ...

随机推荐

  1. ++i 与 i++ 区别

    i++返回原来的值 ++i 返回i+1的值   但是i++  i的值也会增加1 但是返回还是原来的值 int i = 1; i = i++; System.out.println(i); 输出 1 i ...

  2. Did not find handler method for springMVC资源文件扫描不到---关于spring的那些坑

    今天将项目的spring版本升级到4.2.5版本后,登录首页发现资源文件全部访问不到,页面彻底挂掉: 查找原因,后来又查找spring的更新文档后,才确认下来原来是mvc-dispatcher-ser ...

  3. 查看IIS哪个应用程序池占用CPU过高

    1. 进入cmd 2. %systemroot%\system32\inetsrv\AppCmd.exe list wp       这样就能找到活动的应用程序池的PID了 3. 对照资源管理器的PI ...

  4. 实现easyui datagrid在没有数据时显示相关提示内容

    本示例实现easyui datagrid加载/查询数据时,如果没有相关记录,则在datagrid中显示没有相关记录的提示信息,效果如下图所示 本实例要实现如下图所示的效果: 本示例easyui版本为1 ...

  5. 将数据文件从asm移到普通文件系统

    数据库可以关闭的场景: 1.关闭并重新mount数据库 $ sqlplus '/as sysdba' SQL> shutdown immediate; SQL> startup mount ...

  6. Oracle 存储过程异常处理

    Oracle 存储过程异常处理 1.异常的优点    如果没有异常,在程序中,应当检查每个命令的成功还是失败,如  BEGIN  SELECT ...  -- check for ’no data f ...

  7. Java基础之在窗口中绘图——渐变填充(GradientApplet 1)

    Applet程序. import javax.swing.*; import java.awt.*; import java.awt.geom.*; @SuppressWarnings("s ...

  8. 0511 backlog

    SCRUM 这次的作业就是确定SCRUM的计划,确定sprint backlog的一个冲刺周期,而这个周期是两个星期.争取在两周内发布1.0版本. 本次作业以网站构建为主: ID       NAME ...

  9. C#.NET 字符串转数组,数组转字符串

    string str = "1,2,3,4,5,6,7";            string[] strArray = str.Split(','); //字符串转数组      ...

  10. spring基础整理

    spring基础教程:https://www.tutorialspoint.com/spring/spring_overview.htm 注入实例 <bean id="" c ...