vi/vim文本编辑器的使用

Vi/Vim文本编辑器的使用


vi/vim编辑器是所有Unix及Linux系统下标准的编辑器。vim是vi的一种升级。

vi/vim三种模式

1.一般模式

启动vim后默认处于正常模式。不论位于什么模式,按下键(有时需要按两下)都会进入命令模式。

-快捷键

u  撤销上一次操作(常用)
h   向左
J   向下
K   向上
l   向右

复制代码
2.編輯模式 (insert mode)

从一般模式按下‘i’即可进入。

 i : 光标处开始插入
 I : 光标所在行首开始插入
 A : 光标所在行尾开始插入(append)
 o : 光标下插入新行

复制代码
3.命令行模式 (command-line mode)

从一般模式按下“:”、'?'、'/'即可进入

命令模式 切换 编辑模式,直接输入 :即可, enter 键返回命令模式 -options

:w  保存
:q  退出vim
:wq 保存并退出
:wq!    (在可以转换权限的情况下)强制保存并退出
:q! 直接退出不保存
:w filename 另存为filename
:n,m w filename 将第n行到第m行另存为filename
:set nu 显示行号
:set nonu   不显示行号
:! command  暂时离开vim,并执行command,执行完后再进入vim
:r filename 将filename文件的数据读入当前文件
:set all    显示当前vim的环境配置
复制代码

vim的恢复机制

vim正在编辑某个文件时都会同时存在.file.swp,此文件用来暂存,帮助恢复文件内容,当vim正常关闭此文件时,.filename.swp文件会消失。 vim2 我们看到图中说明了出现此界面的两个原因:

(1)多人同时编辑此文件:因为Linux是多用户的操作系统,因此可能两个人同时登陆并编辑此文件,如果A进入系统开始编辑1.txt文件,则会出现.1.txt.swp,当A还没编辑完但B也想进去编辑时,因为此文件的目录中存在.1.txt.swp,则就会出现上图的界面; (2)非正常关闭文件; 图中最后一行说明了我们此时可以采取的几个动作:

(1)o:以只读方式打开;
(2)R:恢复,即从swp文件中恢复,但是swp文件不会随着vim关闭而删除,需要手动删除;
(3)d:删除swp文件;
(4)q:退出vim;

复制代码

vim查找功能和替换

1.查找
  • 在一般模式下,也就是在其他模式下按键,然后按 /要的查找的字符 或者 ?要查找的字符,"/","?"的区别在于两者的区别是前者是从上往下搜索,后者是从下往上搜索。

  • 如果想要查找的模式串中包含/或者?以及其他的特殊字符,如^,$等,则需要使用转义字符’\’,例如: ://home,则表示需要查找’/home’字符串。

-快捷键

n:查找下一个
N:查找上一个。
复制代码
2.替换

:s(substitute)命令用来查找和替换字符串。语法如下:

:{作用范围}s/{目标}/{替换}/{替换标志} 例如:%s/class/interface/g会在全局范围(%)查找class并替换为interface,所有出现都会被替换(g)

  • 作用范围 作用范围分为当前行、全文、选区等等。

当前行:

:s/class/interface/g
复制代码

全部:

:%s/class/interface/g
复制代码

选区,在Visual模式下选择区域后输入:,Vim即可自动补全为 :'<,'>。

:'<,'>s/class/interface/g n-n1行:

:n,n1s/class/interface/g
复制代码

当前行.与接下来两行+2:

:.,+2s/class/interface/g
复制代码
  • 替换标志 上文中命令结尾的g即是替换标志之一,表示全局global替换(即替换目标的所有出现)。 还有很多其他有用的替换标志:

空替换标志表示只替换从光标位置开始,目标的第一次出现:

:%s/class/interface
i表示大小写不敏感查找,I表示大小写敏感:

:%s/class/interface/i
# 等效于模式中的\c(不敏感)或\C(敏感)
:%s/class\c/interface
c表示需要确认,例如全局查找"class"替换为"interface"并且需要确认:

:%s/class/interface/gc
回车后Vim会将光标移动到每一次"foo"出现的位置,并提示

replace with bar (y/n/a/q/l/^E/^Y)?
按下y表示替换,n表示不替换,a表示替换所有,q表示退出查找模式, l表示替换当前位置并退出。^E与^Y是光标移动快捷键,
复制代码

*大小写敏感查找

在查找模式中加入\c表示大小写不敏感查找,\C表示大小写敏感查找。例如:

/class\c
将会查找所有的"class","CLASS","Class"等字符串。
复制代码

vim记录及默认配置文件

/etc/vimrc文件为全局vim配置文件。

1.如果我们用longer账户使用vim后,在/home/longer就会出现.viminfo文件,此文件用来作为vim的日志,记录用户使用vim打开了什么文件,做了什么操作; 2.如果longer账户想要配置vim的默认环境,则可以在/home/longer创建.vimrc,并且配置一些特征,比如显示行号,语法检查等; 一般使用如下配置:

set hlsearch
set backspace=2
set autoindent
set nu
set ruler
set showmode
set bg=dark
syntax on

复制代码

Visual Block功能

Visual Block功能可以用于块复制。

(1)CTRL+v:开始复制块; (3)y:复制块; (4)p:黏贴块; (5)d:删除块

同时编辑多个文件

多文件编辑的好处是能够将一个文件的某些内容yy后,p到另一个文件中。 vim file1 file2 即可同时编辑两个文件,但是屏幕中同时只会出现一个文件内容,需要进行切换。 --options

:n:向下切换;
:N:向上切换;
:files:列出当前编辑的所有文件

复制代码

多窗口编辑

:sp:打开当前文件;
:sp filename:打开filename文件;
CTRL+w+↓:光标切换到下一个窗口;
CTRL+w+↑:光标切换到上一个窗口;
:q:关闭光标所在的窗口;

复制代码

####vi/vim操作常见问题

1.如何选择代码块

块选择(Visual Block)

Vim的大部分命令都是以行为单位的,有时候想要删除、粘贴或复制特定区域,那么如何搞定一块范围呢?

一般模式下,块选择的按键意义

v 字符选择,将光标经过的字符选择
V 行选择,将光标经过的行选择
[Ctrl]+v 矩形选择,可以用矩形的方式选择数据
y 将选中地方复制起来
d 将选中地方删除
复制代码

2.如何缩进

normal 模式下:
== 行用== (连按=两次), 或对多行用n==(n是自然数)
>>  当前行增加缩进
<<  当前行减少缩进

insert模式下:
CTRL+SHIFT+T:当前行增加缩进
CTRL+SHIFT+D:当前行减少缩进
复制代码

你可能感兴趣的:(vi/vim文本编辑器的使用)