admin 管理员组

文章数量: 887021

1.Vim介绍

vi 和vim最大的区别就是编辑一个文本时,vi不会显示颜色,而vim会显示颜色。显示颜色更易于用户进行编辑。其他功能没有什么区别。所以在linux系统下,使用vi还是vim完全取决个人喜好。

安装 yum install -y vim-enhanced

vim的三种模式:一般模式、编辑模式、命令模式。

  1. 一般模式: 当vim filename 编辑一个文件时,一进入该文件就是一般模式了。在这个模式下,可以做的操作有,上下移动光标;删除某个字符;删除某行;复制、粘贴一行或者多行。

    启动后的默认模式。普通模式下,用户的按键被解释为各种Vim内置命令(如移动光标,删除/查找/替换文字等)。

    VIM强大的功能大部分即来自普通模式。在普通模式下,按键'a'或'i'等即可切换插入模式。在其他模式下,按键'ESC'即可切换到普通模式。

  2. 编辑模式:一般模式下,是不可以修改某一个字符的,只能到编辑模式了。从一般模式进入编辑模式,只需您按一个键即可(i, I, a, A, o, O, r, R)。当进入编辑模式时,会在屏幕的最下一行出现"INSERT或REPLACE"的字样。从编辑模式回到一般模式只需要按一下键盘左上方的ESC键即可。在此模式下,用户的大部分按键操作都会被写入到文件缓冲区中,从而影响到正在编辑的文本(在执行写操作前,这些更改只限于对缓冲区中内容,并未写入到磁盘文件中)。
  3. 命令模式:在一般模式下,输入 ":" 或者 "/" 即可进入命令模式。在该模式下,您可以搜索某个字符或者字符串,也可以保存、替换、退出、显示行号等等。
  4. 可视模式 -- 类似于普通模式,但光标的移动操作会选中光标所经过的文本内容并高亮显示。执行非移动命令时,命令仅执行于高亮选中部分。

    命令模式下,按键'v'接口切换至可视模式。

2 vim颜色显示和移动光标

不同的语法成分会有不同的颜色呈现

但是当把/etc/passwd移动到/tmp/后就不显示颜色了,白色字体。

变成passwd.sh后又显示颜色了。

加上#! /bin/bash有显示颜色了。

控制vim用法:

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

在普通模式下,除键盘上的方向键外,Vim还通过众多快捷提供了种类繁多的光标命令。

基本跳转

快捷键 功能

h,j,k,l left,down,up,right

space,backspace (空格键,回退键)向后一位/向前一位

0 (数字0)或者shift+6跳转至行首

^ 本行第一个非空白字节

$ 行尾

行跳转

快捷键 功能

<Enter> 下一行行首

+,- 下移/上移一行

n+,n- (n为数字)下移/上移n行

G 最后一行第一个非空字符

nG (n为数字)第n行第一个非空字符

gg 第一行第一个非空字符

·. 跳转至上一次修改处

句/段/块跳转

快捷键 功能

% 如当前光标处为括号,跳转到匹配处

),( 下一句/上一句句首

},{ 下一段/上一段段首

单词跳转

快捷键 功能

w 下一单词/标点处

W 下一单词处

e 单词词尾/标点

E 单词词尾

b 上一单词词首

B 上一单词词首处

* 读取光标所在处单词并跳转至此单词的下一位置

# 读取光标所在处单词并跳转至此单词的上一位置

书签跳转

快捷键 功能

ma (a为任意字母)标记当前位置为书签a

`a (a为任意字母)跳转至书签a处

滚屏操作

快捷键 功能

ctrl-f,ctrl-b 下一页/屏(PageDown),向上一页/屏(PageUp)

ctrl-d,ctrl-u 向下半页/屏,向上半页/屏

H,M,L 屏幕最上方一行/中间行/最后一行行首第一个非空字符

ctrl-e/ctrl-E 向下滚屏一行,光标保持在当前行(或屏幕首行)的行首(e)/行尾(E)

ctrl-y/ctrl-Y 向上滚屏一行,光标保持在当前行(或屏幕末行)的行首(y)/行尾(y)

nz<enter> (n为数字,<enter>为回车键)将第n行显示在屏幕首行位置;如未指定n,则默认为当前行

nz. (n为数字)将第n行显示在显示屏幕中间位置;如未指定n,则默认为当前行

nz- (n为数字)将第n行显示在屏幕最后一行位置;如未指定n,则默认为当前行

说明:

w(ord):单词,大小写的英文字母,连字符。单词的边界通常是空白符(空格/制表),标点符号,换行符等。

W(ord):广义上的单词,包括英文字母及其其他可显示字节,词的边界通常是空白符,换行符等不可见字符。

一般模式下的一般编辑

普通模式下,也可以通过快捷命令完成很多编辑操作

快捷键              功能

r                   替换当前光标处的一个字符,替换完成后返回普通模式

R                   替换当前光标处开始的字符串,ESC键结束替换返回普通模式

J                   何必当前行和下一行(删除当前行结尾处换行符号)

cc,S                清空当前行后进入编辑模式

cw                  删除当前单词后进入编辑模式

c$,C                删除光标至行尾处内容后进入编辑模式

s                   删除光标所在处字符后进入编辑模式

S                   删除当前行内容后进入编辑模式

xp                  交换光标所在处及其后位置处字符

u                   撤销上一次操作

ctrl-r              重复上一次操作

.                   重复上一次命令

~                   变换光标所在处字符大小

g~iw                变换光标所在处单词大小写

gUiw                将光标所在处单词变换为大写

guiw                将光标所在处单词变换为小写

>>                  将当前行向右缩进一列(Tab宽度)

<<                  减少当前行缩进(Tab宽度)

==                  自动缩进当前行 

一般模式下的复制/粘贴/删除
vim普通模式下支持以行/词/块/字符等作为单元进行复制粘贴操作。vim中的删除,并不会直接丢弃删除掉的内容,而是会将这部分内容缓存在粘贴板中,可以用在随后使用,类似于其他编辑器的剪切功能。
dd                  删除当前行
dw                  删除单词欧诺个光标当前位置起右侧部分
x                   删除当前字符
X                   删除光标前一位字符

D                   删除光标位置起本行右侧部分
yy                  复制当前行
nYY                 (n为数字)从当前行开始复制n行

yw                  复制单词光标当前位置起右侧部分
y$                  复制光标位置起至行尾部分内容
p                   将黏贴板中内容复制到光标之后;如果粘贴板中内容包含行,则复制至光标所在行执行
P                   将粘贴板中内容复制到光标之前;如果粘贴板中内容包含行,则复制至光标所在行之上


本文标签: 编辑工具 文本 vim