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:当前行减少缩进
复制代码