码迷,mamicode.com
首页 > 系统相关 > 详细

0050 Linux VIM 命令

时间:2016-06-10 00:57:44      阅读:265      评论:0      收藏:0      [点我收藏+]

标签:

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 命令

标签:

原文地址:http://www.cnblogs.com/guangfengli/p/5572974.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!