vim介绍、颜色显示、一般模式下移动光标、复制剪切粘贴

1、vim 介绍

 

在之前的章节当中,我们多次用到 vi 命令,vim 和 vi 实际上是一样的命令,用法相同。

下面介绍一下 vim,

3cba888525de7257801f7b4b4c248a901cb.jpg

举例子,使用命令 vi /etc/passwd ,回车,看到的内容都是黑白的,没有颜色。

4e3429e7fb8e0d8d61978dad99aeab2e1a8.jpg

直接输入“:q”,回车,就可以退出上图界面。

使用 vim 命令查看会显示颜色,不过,在这之前需要先安装一下 vim ,输入命令 yum install -y vim-enhanced ,回车,即可安装。

5ffdf449fccbe42443bf3696a8c56e4e3e1.jpg

安装完成之后,输入命令 vim /etc/passwd,回车,进入下图,

1d1a50de4fe2201c15e4ddca6b0b8ea90fc.jpg

可以看到,颜色非常明显。这边要注意一下,千万不要编辑这个文件,不要改动内容。改动之后,系统启动都会受到影响,因为这个文件是一个用户文件,很关键的。

vim 分三种模式:

一般模式,就是还没有进入编辑模式之前,可以做一些操作;

编辑模式,按字母“i”即可进入编辑;

命令模式,可以搜索,可以进行查找替换,包括保存退出。

 

2、vim 颜色显示和移动光标

 

上面使用命令 vim /etc/passwd ,可以看到带颜色的内容。现在将文件 passwd 从目录 /etc 下移动到目录 /tmp 下,再使用命令查看,见下图,

6b0bdde8bbecab25ff90d66f14e506d7cf7.jpg

ccb87425431809925749e70b420bad3a506.jpg

可以看出颜色没有了,这说明相同的文件在不同的目录下,有可能导致颜色不存在。在 Cent OS  里,/etc 下面的文件往往是配置文件,在 /etc 下面就会显示颜色,放在其他目录下面就不会显示颜色了。接着输入命令 vim /etc/fstab ,回车,选择只读方式打开,也可以看到颜色,见下图,

079dc12626de1d14f0fef66d6df10e06a4b.jpg

同样的,给文件 fstab 挪一个地方,输入命令 cp /etc/fstab /tmp/ ,回车,然后输入命令 vim /tmp/fstab ,回车,显示的界面跟上图一样,是带有颜色的。这是因为文件 fstab 前面有以“#”开头的行。

接下来做一个实验,把 /tmp 下的 passwd 文件做一个变更,将光标定位到第一行,然后 Shift + o ,光标就会再往上一行,并且进入编辑模式,见下图,

31baed58794fd555129dfdb4b042d9ba7b5.jpg

此时,在上面输入#,后面随便加点内容进去,书写两行,见下图,

caeec37d09468ec79c18880dcffcab01456.jpg

保存后退出,再使用命令 vim /tmp/passwd 进入,见下图,

71328d4f4bd627715459a0e63f855de52d5.jpg

可以看到,也有颜色,但是只在一二行出现,在中间也使用#开头编辑内容,也会看到颜色,见下图,

3da50561086a53f1c1cb92d0a6e15ce650c.jpg

以上表示,这个文件本身并不是没有颜色,只不过文件内容本身不具备显示颜色的条件。接着做实验,输入命令 mv /tmp/passwd /tmp/passwd.sh ,给文件改一下名称,然后输入命令 vim /tmp/passwd.sh ,见下图,

79c18564e1f22e8d8a394ec3d65af00bdad.jpg

可以看到,现在也有颜色了,说明颜色显示不仅和第一行的内容有关系,还和文件的名称有关系。

总之,vim 显示颜色的条件有很多,而且最终的结果也不太一样。这个不用太纠结。vim 在编辑文件的时候,是会显示颜色的,而且颜色往往和文件本身的内容和文件名有关系。

vim 有自己的配置文件,在 /etc/vimrc 下,输入命令 vim /etc/vimrc ,回车,见下图,

dbac33060752f1c6c2e9fee63b1a476632c.jpg

里面就是一些控制 vim 用法的内容,比较复杂,作个了解就可以了。

在自己用户的家目录下,可以编辑 vimrc 这个文件,输入命令 vim /root/.vimrc. ,回车,见下图,

09ce5280b6dc9d407e963413a87f5f099d6.jpg

默认这个文件是不存在的,当我们遇到 vim 一些比较高级的用法时,可以尝试去搜一些文档资料,在这个文件中配置就可以了。

 

先拷贝一下文件,输入命令 cp /etc/dnsmasq.conf /tmp/1.txt ,然后输入命令 vim /tmp/1.txt ,进入编辑,

66b171e07327a72f33e63cd4e0a278401d0.jpg

可以看到这个文件没有颜色显示,因为文件名称为 1.txt ,只要是文件名为 .txt 后缀的文件,就不会显示颜色。想让这个文件显示颜色也可以,更改文件名即可,输入命令 mv /tmp/1.txt /tmp/xxx.conf ,再输入命令 vim !$ ,回车,见下图,

dfaf7126edaf25cef9d55a0c133c9b57d8f.jpg

可以看到内容颜色显示为蓝色。编辑一下内容,还能看到不同的颜色变化,这边就不多讲解了,作个了解即可。

 

3、vim一般模式下移动光标

 

移动光标的时候,可以通过上下左右的方向键来操作,但是这样有点慢,下图说明了一些 vim 下比较常用的快捷键使用方法,

14278d721f993e299c21c382776cc4a3c21.jpg

空格键也是向右移动的快捷键,还可以通过数字来控制它的位置。例如先按下数字5,再按空格键的话,光标就会直接向右移动5个字符。h、j、k、l 这些快捷键也都支持使用数字来控制光标移动的数量。

 

vim一般模式下移动光标的快捷方式

 

字符移动

h,j,k,l 左下上右

行内移动

w 正向移动到相邻单词的首字符

b 逆向移动到相邻单词的首字符

B 向前一个单词,以空格和TAB为分隔符

e 正向移动到相邻单词的尾字符

ge 逆向移动到相邻单词的尾字符

0 数字0,左移光标到本行的开始;

Shift + 6 ,左移光标到本行的开始;

Shift + 4 ,右移光标到本行的末尾;

$ 右移光标,到本行的末尾;

^ 移动光标,到本行的第一个非空字符

页移动

H 跳转到当前屏幕的第一行

M 跳转到本屏显示的中间一行

L 跳转到最后一行

2H 表示将光标移到屏幕的第2行

3L 表示将光标移到屏幕的倒数第3行

z + enter 是当前行成为屏幕的第一行

z + - 是当前一行成为最后一行

ctrl + f 在文件中前移一页(或 page down);

ctrl + b 在文件中后移一页(或 page up);

ctrl + d 往下滚动半屏

ctrl + u 往上滚动半屏

文件移动

gg 跳到首行

G 即 Shift +g ,跳到尾行

nG 跳转到n行,n 是任意数字,其中右下角也可以看到光标的位置,见下图,

25a3e5b7f6eacf63ea7a43ec392246e31b7.jpg

% 跳到另一边括号

配合查找字符的方式移动

fa 正向移动到第一个字符 a 处

Fa 逆向移动到第一个字符 a 处

非相邻的单词或字符间移动

8w 正向移动到相隔八个单词的首字符

4Fa 逆向移动到第四个 a 字符

更大范围的移动

* 当光标停留在一个单词上,* 键会在文件内搜索该单词,并跳转到下一处;

# 当光标停留在一个单词上,# 在文件内搜索该单词,并跳转到上一处;

(/) 移动到 前/后 句 的开始;

{/} 跳转到 当前/下一个 段落 的开始。

g_ 到本行最后一个不是 blank 字符的位置。

fa 到下一个为 a 的字符处,你也可以fs到下一个为s的字符。

t, 到逗号前的第一个字符。逗号可以变成其它字符。

3fa 在当前行查找第三个出现的 a。

F/T 和 f 和 t 一样,只不过是相反方向;

gg 将光标定位到文件第一行起始位置;

G 将光标定位到文件最后一行起始位置;

NG或Ngg 将光标定位到第 N 行的起始位置

 

4、vim一般模式下复制、剪切和粘贴

5d39454d0ec733485b0c19bff2ab07c92bb.jpg

替换和删除

Vim常规的删除命令是 d、 x (前者删除 行 ,后者删除 字符 ),结合Vim的其他特性可以实现基础的删除功能。将光标定位于文件内指定位置后,可以用其他字符来替换光标所指向的字符,或从当前光标位置删除一个或多个字符或一行、多行

gg dG 删除全部内容

d0 删除至行首

dl 删除当前字符, dl=x

dh 删除前一个字符

dd 删除当前行

dj 删除上一行

dk 删除下一行

dw 删除到下一个单词开头

de 删除到本单词末尾

dE 删除到本单词末尾包括标点在内

db 删除到前一个单词

dB 删除到前一个单词包括标点在内

10d 删除当前行开始的10行

d$ 删除当前字符之后的所有字符(本行)

D 删除当前字符至行尾。D=d$

kd gg 删除当前行之前所有行(不包括当前行)

jdG 删除当前行之后所有行(不包括当前行)

:1,10d 删除1-10行

:11,$d 删除11行及以后所有的行

:1,$d 删除所有行

J 删除两行之间的空行,实际上是合并两行

rc 用 c 替换光标所指向的当前字符;

nrc 用 c 替换光标所指向的前 n 个字符;

5rA 用 A 替换光标所指向的前 5 个字符;

x 删除光标所指向的当前字符;

nx 删除光标所指向的前 n 个字符;

3x 删除光标所指向的前 3 个字符;

dw 删除光标右侧的字;

ndw 删除光标右侧的 n 个字;

3dw 删除光标右侧的 3 个字;

db 删除光标左侧的字;

ndb 删除光标左侧的 n 个字;

5db 删除光标左侧的 5 个字;

dd 删除光标所在行,并去除空隙;一次只能剪切一行

ndd 删除(剪切) n 行内容,并去除空隙;

3dd 删除(剪切) 3 行内容,并去除空隙;

Vim常规的替换命令有 c 和 s ,结合Vim的其他特性可以实现基础的替换功能,不过替换命令执行以后,通常会由 编辑模式 进入 插入模式

s 用输入的正文替换光标所指向的字符;

S 删除当前行,并进入编辑模式;

ns 用输入的正文替换光标右侧 n 个字符;

nS 删除当前行在内的 n 行,并进入编辑模式;

cw 用输入的正文替换光标右侧的字;

cW 用输入的正文替换从光标到行尾的所有字符(同 c$ );

ncw 用输入的正文替换光标右侧的 n 个字;

cb 用输入的正文替换光标左侧的字;

ncb 用输入的正文替换光标左侧的 n 个字;

cd 用输入的正文替换光标的所在行;

ncd 用输入的正文替换光标下面的 n 行;

c$ 用输入的正文替换从光标开始到本行末尾的所有字符;

c0 用输入的正文替换从本行开头到光标的所有字符。

复制粘贴

yy 拷贝当前行

nyy 拷贝当前后开始的n行,比如2yy拷贝当前行及其下一行 

*“+y 复制 1 行到操作系统的粘贴板 

*“+nyy 复制 n 行到操作系统的粘贴板

:1,10 co 20 将1-10行插入到第20行之后

:1,co 将整个文件复制一份并添加到文件尾部

正常模式下按v(逐字)或V(逐行)进入可视模式,然后用jklh命令移动即可选择某些行或字符,再按y即可复制

ddp 交换当前行和其下一行

xp 交换当前字符和其后一个字符

正常模式下按v(逐字)或V(逐行)进入可视模式,然后用jklh命令移动即可选择某些行或字符,再按d即可剪切

ndd 剪切当前行之后的n行。利用p命令可以对剪切的内容进行粘贴

:1,10d 将1-10行剪切。利用p命令可将剪切后的内容进行粘贴。

:1, 10 m 20 将第1-10行移动到第20行之后。

x   剪切当前字符,即向后删除一个字符

3x 剪切当前光标开始向后三个字符,

X   剪切当前字符的前一个字符,即向前删除一个字符。X=dh

p (小写p)粘贴到下一行或右侧,修改和删除的数据自动到粘贴板中

P (大写P)粘贴到上一行或左侧

不规则剪切粘贴,可以先按 v 进入 visual mode 可视界面,通过上下左右方向键选中要替换的单词,再按小写 x 剪切,按小写 p 粘贴即可。

70270d979d96568488e5a0a57dad5292c5c.jpg

yiw (yank inner word)在一个单词的任意字母使用,就复制该单词

yw 则只是复制从光标所在字母到词尾的部分

撤销和重复

u 撤销最近一次修改 undo;一次恢复一个操作,最多恢复50次。恢复到最原始的操作之后,左下角会出现文字“已位于最旧的改变”。

. 重复最后一条修改正文的命令

U 撤销所有修改

Ctrl + r 取消最后一次的撤销 redo

块编辑

v 可进入visual模式,使用标准快捷键移动光标可选择文本块,之后可输入标准编辑命令

ctrl + v 列编辑

行尾块…

 

插入模式

进入

i 在当前位置生前插入

I 在当前行首插入

a 在当前位置后插入

A 在当前行尾插入

o 在当前行之后插入一行

O 在当前行之前插入一行

s 删掉当前字符,并进行输入

x 删掉当前字符,停留在Normal模式

退出

Esc

ctrl + O 暂时性的

ctrl + C 取消当前的任何操作

ctrl + [  官方推荐替换Esc

移动光标 尽量不要进入插入模式移动光标

ctrl + H 光标移当前行行首 imap

ctrl + J 光标移下一行行首 imap

ctrl + K 光标移上一行行尾 imap

ctrl + L 光标移当前行行尾 imap

Alt + H 光标左移一格 imap

Alt + J 光标下移一格 imap

Alt + K 光标上移一格 imap

Alt + L 光标右移一格 imap

转载于:https://my.oschina.net/u/3867265/blog/1833093

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值