soarli

vi文本编辑器基本命令
近期学习的Vi/Vim知识笔记,内容原创,转载请注明来源!必须知道的三种模式一般模式(命令行模式)光标移动 删除...
扫描右侧二维码阅读全文
26
2020/01

vi文本编辑器基本命令

近期学习的Vi/Vim知识笔记,内容原创,转载请注明来源!

必须知道的三种模式

一般模式(命令行模式)

光标移动

删除单个/整个字

复制/粘贴

编辑模式(插入模式)

可以插入字符

指令模式(底行模式)

读取文件,储存文件,搜索/取代等功能

一般-->编辑

i/I:插入

i:在光标当前位置开始插入;I:在当前行首开始插入

a/A:增加

a:在光标当前位置的下一个位置开始插入;

A:在当前行末尾开始插入

o/O:插入新行

o光标所在行的下一行开始输入文字;

O光标所在行的上一行开始输入文字

r/R:取代

r:取代光标所在的一个字符(多输无效)

R:一直取代光标所在的文字(一个接一个,按Esc停止)

方向键:

h:左

j:下

k:上

l:右

数字0:本行首字符

$:本行最后的字符

G:移到文档最后

nG(n位数字):移到第n行

gg:移到第一行(相当于1G)

w:向后跳一个单词的长度(跳到下一个单词开头)

b:向前跳一个单词的长度(跳到下一个单词开头)

{:跳到上一段代码

}:跳到下一段代码

n+enter:向下移动n行

n+space:向后移动n个字符

显示与隐藏行号

1. 显示行号

:set number

或者

:set nu

2. 取消行号显示

:set nu!

3. 每次打开都显示行号

修改vi ~/.vimrc 文件,添加:

set number

复制、粘贴

yy复制光标所在的哪一行

nyy复制光标所在的下n行,例如20yy即为复制20行

p,P:p复制的数据在光标下一行粘上,P为粘在上一行

撤销

u:复原前一个动作

Ctrl+R: 重做刚在的那个动作(撤销后悔了)

:e! :
复原档案到最原始的状态

缩进

先按下v(按字符选择)/V(按行选择),随后通过方向键移动选择区域。
按下<<向左缩进,>>向右缩进。

查找

/word :从光标所在位置向下搜索字符串word

?word :/word :从光标所在位置向上搜索字符串word

n :继续同方向查找下一个

N :反方向查找下一个

针对查找结束接着高亮:
:nohl即可搞定

按n会接着查找:
接着查找一个不存在的字符串就行了。

删除/剪切

x,X : x为向后删除一个字符

X为向前删除一个字符

nx为向后删除n个字符

nX为向前删除n个字符(包含光标所在字符)
 
dd删除光标所在的那一整行(实质为剪切)

D剪切当前光标到本行末的字符

d0剪切当前光标到本行首的字符

ndd删除光标所在的向下n行,例如20dd即为删除20行(实质为剪切)

d1G删除光标所在行到第一行的所有数据

dG删除光标所在行到最后一行所有数据

替换

全局替换

%s/hello/world/g   #将hello替换为world
%s///g             #记法

局部替换

n1,n2s/word1/word2/g

在n1行和n2行之间查找字符串word1,并将该字符串替换为word2,其中g代表global的意思。

1,$s/word1/word2/g

第一行到最后一行查找字符串word1,并将该字符串替换为word2,其中g代表global的意思。

1,$s/word1/word2/gc

第一行到最后一行查找字符串word1,并将该字符串替换为word2,其中g代表global的意思,c代表取代前让用户逐个确认是否需要取代

不加确认命令的全文替换与以下形式等价:

%s/word1/word2/g

保存

:w将编辑的数据写入硬盘档案中

:w!若档案属性为只读时,强制写入该档案

另存为

:w filename将编辑的数据储存成另一个档案

:n1,n2 w filename将n1到n2行的内容储存成filename这个档案

退出

:q离开vi

:q!若曾修改过档案,又不想储存,使用!为强制离开不储存档案。

:wq储存后离开,若为:wq!则为强制储存后离开

:x保存并退出

以下内容引用自https://www.cnblogs.com/andreking/p/5793782.html

":x" 和 ":wq" 的区别如下:

(1) :wq 强制性写入文件并退出(存盘并退出 write and quite)。即使文件没有被修改也强制写入,并更新文件的修改时间。

(2) :x 写入文件并退出。仅当文件被修改时才写入,并更新文件修改时间;否则不会更新文件修改时间。

翻页

Ctrl+b、pageup 屏幕向上移动一页

Ctrl+f、pagedown 屏幕向下移动一页

Ctrl+u 屏幕向上移动半页

Ctrl+d 屏幕向下移动半页

其中Putty和secureCRT 中,不支持使用pageup和pagedown

其他常用命令

:r[filename]在编辑的数据中,读入另一个档案的数据。亦即将[filename]这个档案内容加到游标所在行后面

:setnu显示行号,设定之后,会在每一行的前缀显示该行的行号

:set nonu与setnu相反,为取消行号!

:!command暂时离开vi到指令列模式下执行command的显示结果

vim的附加功能

块选择(visual block)

v:字符选择,将光标经过的地方反白选择

V:行选择,将光标经过的行反白选择

Ctrl+v:块选择,可以用长方形的方式选择数据

y:复制反白的地方

d:将反白的地方删除掉

多文件编辑(vim filename01 filename02 ..)

:n  编辑下一个文件

:N  编辑上一个文件

:files 列出当前vim打开的所有文件

多窗口功能

:sp filename 打开一个新窗口,如果加file,表示在新窗口打开一个新文件,否则表示两个窗口同时打开一个文件

Ctrl+wj  先按ctrl不放,再按w后放开两键,再按j则游标移动到下方的窗口

Ctrl+wk 按键方式同上,光标移动到上方窗口

Ctrl+wq 保存退去

补充

一般模式下:
    shift+zz = wq
    .相当于重复执行上一条命令
底行模式下:
    x = wq

参考资料:

《鸟哥的Linux私房菜》 --人民邮电出版社出版

https://www.bilibili.com/video/av65740545?p=12

Vim命令汇总:

https://blog.soarli.top/fun/vim/

笔记内容原创,转载请注明来源!

最后修改:2022 年 01 月 09 日 03 : 58 AM

发表评论