Vi/Vim文本编辑器的使用vim
vi/vim编辑器是全部Unix及Linux系统下标准的编辑器。vim是vi的一种升级。bash
启动vim后默认处于正常模式。不论位于什么模式,按下键(有时须要按两下)都会进入命令模式。app
-快捷键编辑器
u 撤销上一次操做(经常使用)
h 向左
J 向下
K 向上
l 向右
复制代码
从通常模式按下‘i’便可进入。ui
i : 光标处开始插入
I : 光标所在行首开始插入
A : 光标所在行尾开始插入(append)
o : 光标下插入新行
复制代码
从通常模式按下“:”、'?'、'/'便可进入spa
命令模式 切换 编辑模式,直接输入 :便可, 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正在编辑某个文件时都会同时存在.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;
复制代码
在通常模式下,也就是在其余模式下按键,而后按 /要的查找的字符 或者 ?要查找的字符,"/","?"的区别在于二者的区别是前者是从上往下搜索,后者是从下往上搜索。code
若是想要查找的模式串中包含/或者?以及其余的特殊字符,如^,$等,则须要使用转义字符’\’,例如: ://home,则表示须要查找’/home’字符串。
-快捷键
n:查找下一个
N:查找上一个。
复制代码
: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
复制代码
空替换标志表示只替换从光标位置开始,目标的第一次出现:
:%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"等字符串。
复制代码
/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功能能够用于块复制。
(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:当前行减小缩进
复制代码