L17 文本编辑工具vim(一)
1.Vim介绍
vi 和vim最大的区别就是编辑一个文本时,vi不会显示颜色,而vim会显示颜色。显示颜色更易于用户进行编辑。其他功能没有什么区别。所以在linux系统下,使用vi还是vim完全取决个人喜好。
安装 yum install -y vim-enhanced
vim的三种模式:一般模式、编辑模式、命令模式。
-
一般模式: 当vim filename 编辑一个文件时,一进入该文件就是一般模式了。在这个模式下,可以做的操作有,上下移动光标;删除某个字符;删除某行;复制、粘贴一行或者多行。
启动后的默认模式。普通模式下,用户的按键被解释为各种Vim内置命令(如移动光标,删除/查找/替换文字等)。
VIM强大的功能大部分即来自普通模式。在普通模式下,按键'a'或'i'等即可切换插入模式。在其他模式下,按键'ESC'即可切换到普通模式。
- 编辑模式:一般模式下,是不可以修改某一个字符的,只能到编辑模式了。从一般模式进入编辑模式,只需您按一个键即可(i, I, a, A, o, O, r, R)。当进入编辑模式时,会在屏幕的最下一行出现"INSERT或REPLACE"的字样。从编辑模式回到一般模式只需要按一下键盘左上方的ESC键即可。在此模式下,用户的大部分按键操作都会被写入到文件缓冲区中,从而影响到正在编辑的文本(在执行写操作前,这些更改只限于对缓冲区中内容,并未写入到磁盘文件中)。
- 命令模式:在一般模式下,输入 ":" 或者 "/" 即可进入命令模式。在该模式下,您可以搜索某个字符或者字符串,也可以保存、替换、退出、显示行号等等。
-
可视模式 -- 类似于普通模式,但光标的移动操作会选中光标所经过的文本内容并高亮显示。执行非移动命令时,命令仅执行于高亮选中部分。
命令模式下,按键'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 将粘贴板中内容复制到光标之前;如果粘贴板中内容包含行,则复制至光标所在行之上