Linux Vim编辑器
文本编辑之VIM
1、 vi/vim介绍
经过这几天的学习,大家应该知道,linux是一个跟文本文件打交道的系统,那么如何去跟这样一个系统打交道呢?我们前面学会了如何去新建文件、删除文件等操作;那么如何修改文件内容呢?该操作就需要一个文本编辑工具。而在linux中最经典最流行的文本编辑工具就是vi/vim,当然也有一些其他的文本编辑工具,例如:
- emacs
- pico
- nano
- joe
- jed
诸如此类,但我们只需要掌握vi/vim即可
vi编辑器是linux和unix上最基本的文本编辑器,工作在字符模式下。由于不需要图形界面,vi是效率很高的文本编辑器。尽管在linux上也有很多图形界面的编辑器可用,但vi在系统和服务器管理中的功能是那些图形编辑器所无法比拟的。
vi编辑器可以执行输出、删除、查找、替换、块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制,这是其他编辑程序所没有的。
vim是vi的增强版,比vi更容易使用。vi的命令几乎都可以在vim上使用。
2、vi/vim使用详解
2.1 vi/vim的特点
vi/vim是一种纯文本编辑器,它不像word可以排版,可以调整字体大小,可以改变字体等等,vi/vim只是一个文本编辑工具,它只能对文本的内容进行操作,比如新增内容、修改内容、删除内容等等。vi/vim是一个全屏幕的文本编辑器,在编辑文本时它将占据整个屏幕。
2.2 vi/vim三种编辑模式
vi/vim编辑器有三种编辑模式,分别是:
命令模式
输入模式
末行模式
编辑模式 | 作用 |
---|---|
命令模式 | 用户执行命令,比如复制行、粘贴行等 |
输入模式 | 用于输入文本、修改文本等 |
末行模式 | 用于查找文本、保存修改等 |
vi/vim三种编辑模式之间转换的方式:
命令模式–>输入模式
i:insert,在当前光标所在字符的前面,转为输入模式
I:大写的i,在当前光标所在行的行首转换为输入模式
a:append,在当前光标所在字符的后面转换为输入模式
A:在当前光标所在行的行尾转换为输入模式
o:open,在当前光标所在行的下方新建一行并转为输入模式
O:大写的o,不是数字0,在当前光标所在行的上方新建一行并转换为输入模式
输入模式–>命令模式
ESC
命令模式–>末行模式
:
末行模式–>命令模式
ESC
2.3 文本编辑方式
打开文件方式: 文件打开后默认处于命令模式下
vim filename #打开文件
vim +n filename #打开文件并定位到第n行
vim +/pattern filename #打开文件并定位到第一次被/pattern匹配到的内容行首
关闭文件方式:末行模式关闭文件
命令 | 意义 |
---|---|
q | 退出 |
wq | 保存并退出 |
q! | 不保存退出 |
w | 保存但不退出 |
w! | 强行保存 |
wq! | 强行保存并退出 |
x | 强行保存并退出 |
命令模式关闭文件:
ZZ //保存退出
命令模式下移动光标的方式:
逐字符移动,被 ↑ ↓ ← → 替代
h:向左移动一个字符
l:向右移动一个字符
j:向下移动一个字符
k:向上移动一个字符
#h:向左移动#个字符
#l:向右移动#个字符
#j:向下移动#个字符
#k:向上移动#个字符
以单词为单位移动
w:移动到下一个单词的词首
e:跳至当前或下一个单词的词尾
b:跳至当前或上一个单词的词首
#w:以当前光标为起点跳至第#个单词的词首
#e:以当前光标为起点跳至第#个单词的词尾
#b:以当前光标为起点跳至第#个单词的词首
行内跳转
0:数字0,跳转到绝对行首
^:跳转到行首的第一个非空白字符
$:跳转到绝对行尾
行间跳转
gg:跳转到第一行
G:跳转到最后一行
#gg:跳转到第#行
#G:跳转到第#行
句子间跳转
(:左小括号,跳转到上一个句子
):右小括号,跳转到下一个句子
段落间跳转
{:左大括号,跳转到上一个段落
}:右大括号,跳转到下一个段落
翻屏
ctrl+f:向下翻一屏
ctrl+b:向上翻一屏
ctrl+d:向下翻半屏
ctrl+u:向上翻半屏
命令模式下字符编辑:
编辑命令 | 意义 |
---|---|
x | 删除光标所在处的单个字符 |
#x | 删除光标所在处及其向后共#个字符 |
xp | 交换光标所在处的字符及其后面字符的位置 |
命令模式下删除字符: d
命令模式下d命令常与跳转命令组合使用,例如:
d$:表示删除当前光标所在位置到行尾的内容
d^:表示删除当前光标所在位置到第一个行首非空白字符位置的内容
d0:表示删除当前光标所在位置到绝对行首的内容
1d:数字1跳转符表示删除1个指定范围内容,例如
1dw:删除后面的一个单词
1de:删除后面的一个单词
1db:删除前面的一个单词
dd:删除当前光标所在行整行
3dd:删除3行,包括当前光标所在行以及后面2行
D:删除当前光标所在行的内容,保留空行
末行模式下d命令的使用:
语法:“:StartADD,EndADDd”
这里的StartADD与EndADD是指一个范围,例如:
:1,5d //表示删除第1到第5行
末行模式下范围表示方法:
表示方法 | 意义 |
---|---|
. | 光标所在当前行 |
$ | 最后一行 |
+# | 光标所在行往后#行 |
$-# | 倒数第#行 |
% | 全文 |
命令模式下复制命令:yy
命令模式下粘贴命令:p
p:小写p
若删除或复制的为整行内容,则粘贴至光标所在行的下方
若删除或复制的为非整行,则粘贴至光标所在字符的后面
P:大写p
若删除或复制的为整行内容,则粘贴至光标所在行的上方
若删除或复制的为非整行,则粘贴至光标所在字符的前面
命令模式下替换:r
R:替换模式,替换多个字符
r#:将当前光标的字符替换为#,这里的#可以是任何字符
命令模式下撤销编辑:u
u:撤销前一次的编辑操作,连接u命令可以撤销此前的n次编辑操作
#u:直接撤销此前的#次编辑操作
ctrl+r:还原最近一次的撤销操作
.(点):重复前一次编辑操作
可视化模式:
可视化模式下可以对选取的内容进行前面讲的所有编辑操作
v:按字符选取内容
V:按矩形块(行)选取内容
末行模式下文本查找:
/pattern:从上往下查找匹配的内容
?pattern:从下往上查找匹配的内容
n:从上往下查找匹配到的内容的下一条
N:从下往上查找匹配到的内容的下一条
末行模式下查找并替换:s
s命令只能在末行模式下使用
语法:ADDR1,ADDR2 s/pattern/string/gi
1,5 s/abc/def/g //表示把第一行到第五行的所有abc替换为def
末行模式下显示或取消显示行号:
set nu:显示行号
set nonu:取消显示行号
3、快捷操作记录
命令模式下操作:
yi + 符号 #复制指定符号中的内容
例如:
yi' #复制单引号之间的内容
yi( #复制括号之间的内容
ctrl + p #将全文中出现过的内容列出,然后选择输入
g+d #搜索全文中当前光标所在单词,并跳转到第一个搜索到的内容
末行模式下操作:
末行模式下指令可以写入配置文件永久生效。配置文件位置如下:
- /etc/.vimrc
- ~/.vimrc
set all #查看所有末行模式下,可配置参数
#以下三项,用于设置编码格式
set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936
set termencoding=utf-8
set encoding=utf-8
set fileformat=unix #将Windows doc格式转换为unix格式
#以下五项一起使用,在编写脚本时使用起来很方便
set tabstop=4 #设置TAB宽度为4个空格
set softtabstop=4 #按一次退格键可以删除4个空格
set shiftwidth=4 #每一级缩进的长度,一般设置成跟 softtabstop一样
set expandtab #设置缩进用空格来表示
set autoindent #自动缩进
! + shell命令 #不退出vim执行shell命令
#vim在编辑的时候就可以打开多个文件:
:vs 或者 :vsplit #将当前窗口竖直分割,并在上面新窗口中显示当前文件
:vs filename #将当前窗口竖直分割,新文件在新窗口中显示
:sp 或者:sv或者:split #将当前窗口水平分割,并在左边新窗口中显示当前文件
:sp filename #将当前窗口竖直分割,新文件在左边新窗口中显示
:new #新建文件并竖直分割
:vnew #新建文件并水平分割
#在窗口之间切换可以用鼠标,如果不想用鼠标,切换按键如下:
Ctrl-w-j 切换到下方的分割窗口
Ctrl-w-k 切换到上方的分割窗口
Ctrl-w-l 切换到右侧的分割窗口
Ctrl-w-h 切换到左侧的分割窗口