vi/vim文本编辑器的使用

Vi/Vim文本编辑器的使用vim


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

vi/vim三种模式

1.通常模式

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

-快捷键编辑器

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

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

从通常模式按下‘i’便可进入。ui

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

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

从通常模式按下“:”、'?'、'/'便可进入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的恢复机制

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.查找
  • 在通常模式下,也就是在其余模式下按键,而后按 /要的查找的字符 或者 ?要查找的字符,"/","?"的区别在于二者的区别是前者是从上往下搜索,后者是从下往上搜索。code

  • 若是想要查找的模式串中包含/或者?以及其余的特殊字符,如^,$等,则须要使用转义字符’\’,例如: ://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:当前行减小缩进
复制代码
相关文章
相关标签/搜索