Linux下vi && vim

本文详细介绍了VI编辑器的基本模式(一般模式、命令行模式、编辑模式),并阐述了各模式下的核心操作技巧,包括光标移动、查找替换、删除复制粘贴等功能。此外,文章还探讨了VI编辑器如何通过快捷键实现高效编辑,并提供了多文件编辑、多窗口功能及使用历史记录等高级特性。最后,文章通过实例展示了VI编辑器的恢复功能与环境设置,旨在帮助用户全面掌握VI编辑器的强大功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

vi 下基本分为三种模式一般模式、命令行模式、编辑模式

vi一个文件后进入一般模式在该模式下可以移动光标、复制、粘贴、删除文件数据

一般模式下输入i,I,a,A,o,O,r,R进入编辑模式,可以编辑文本,按下[esc]退出编辑模式进入一般模式

一般模式输入:、/、?进入命令行模式,在命令行模式可以查找、保存、替换、退出等操作


三种模式

一般模式下

光标移动

键盘的上下左右移动光标,num+上下左右移动num行

[page up]:向上翻一页

[page down] :向下翻一页

0 或 home :光标移动到当前行第一个字符

$ 或 end: 光标移动到当前行最后一个字符

H:光标移动到当前页面的第一行

M:光标移动到当前页面的中间行

L:光标移动到当前页面的最后一行

G:光表移动到文本的最后一行

nG:光标移动到文本的第n行

gg:光标移动到文本的第一行

n[Enter]:光标向下移动n行

查找替换

/word:向下查找一个word的字符串

?word:向上查找一个word的字符串

n:重复之前的查找工作

N:与n相反,反向查找上一个需要查找的字符

:n1,n2s/word1/word2/g  :在n1行到年n2行之间使用将word1单词用word2单词替换

:1,$s/word1/word2/g :在第一行和最后一行使用word2替换word1

:1$s/word1/word2/gc:从第一行到最后一行使用word2替换word1,在每个单词替换前让用户确认

删除、复制、粘贴

x,X:x删除当前光标所指的字符,并且是向后移动光标删除的。X删除光标前一个字符,是向前删除的。

nx:向后删除n个字符

dd:删除当前行

ndd:删除光标向下n行

yy:复制光标所在的那一行 

nyy:复制光标向下的n行

p,P:p在当前行的下一行粘贴,P在当前行的上一行粘贴

u:复原前一个操作

[Ctrl]+r:重做上一个操作


一般模式切换到编辑模式

进入插入模式

i,I:i从目前光标所在处插入,I为当前行第一个非空格字符处插入

a,A:从目前光标所在的下一字符插入,A从当前行最后一个字符出插入

o,O:o光标所在的下一行插入,O光标所在的上一行插入

进入替换模式

r,R:r只会替换光标所在的字符,R会一致替换直到按下[ESC]


一般模式切换到命令行模式

:w  将编辑的数据写入到硬盘中(保存)

:w! 强制将编辑的数据写入到硬盘中去(若为只读模式)

:q 离开vi

:q! 曾经修改过,但不想存储,强制离开

:wq 保存并退出

:wq!  强制保存并退出

:w[filename] 将编辑的数据保存成另一个文件

:r[filename] 编辑数据时,将另一个文件中数据添加到光标所在行后面

:n1,n2 w [filename] 将n1到n2行中数据保存到filename文件中

:! command 暂时离开命令行模式执行command命令,之后回来

:set nu 显示行号

:set nonu 不显示行号


vim功能


vim文件恢复功能

当你编辑文件不正常切断的时候会在当前目录下创建一个.filename.swp的暂存文件,当你要在此打开这个文件的时候会提示你是否要恢复之前的操作。O为只读该文件,E是直接编辑,R是恢复之前的修改操作,D是认为这个文件没用删除这个暂存文件,Q是直接退出。操作完之后除了D,需要手动删除这个文件,否则每次会提示你。


vim是vi的高级版,一般vim已经把vi替换掉了。因为vim有颜色提示功能、还支持多种程序语法等。


vim的块选择

v:字符选择,光标移动过得地方会反白

V:行选择,光标移动过得行会反白

[Ctrl]+v:块选择,光标移动过得块会反白

y:将反白的地方复制下来

p:粘贴之前复制的

d:删除反白的地方


vim多文件编辑

vim file1 file2

首先进入file1中进行编辑,输入:n会进入下一文件进行编辑;:N会进入上一个文件编辑;:files会列出vim打开的文件


vim多窗口功能

当打开一个文件的时候,如果让该文件显示多个窗口

:sp 即可

如果多窗口打开不同的文件

:sp [filename]

上下窗口切换[ctrl] +w


vim使用历史记录

如果使用过vim,会在你的主目录下创建一个.viminfo文件,这个文件记录你之前做过的操作。


vim环境设置

在命令行模式下输入set all 可以查看所有vim的设置。可以通过set xx设置,比如 set nu设置显示行号。

这种方式只在当前有效,如果要长期有效需要修改 /etc/vimrc(ubuntu下是/etc/vim/vimrc)来设置我们习惯的vim操作环境,整体的vim设置在这里,但是一般不建议修改这个文件,可以修改 ~./.vimrc这个文件默认是不存在的,可以手动创建

比如:

vim ~/.vimrc

set nu                  "设置行号
set hlsearch            "高亮度反白
set autoindent          "自动缩排
set backspace=2         "可以随时用退格键删除
set ruler               "显示最下面提示
set bg=dark             "显示不同的底色色调
syntax on               "进行语法检查,颜色显示


乱码解决

终端显示乱码原因有很多,Linux支持语系、终端接口语系(用LANG设置)、原文见编码、打开终端的软件如GNOME等,这里有一个方法可以实时,如果文件是big5编码的

LANG=zh_CN.big5

然后终端->设置字符编码->中文(BIG5)


语系编码转换

可以使用iconv(需要下载iconv,然后到该目录下执行命令)然后使用iconv进行语系转换

iconv --list

iconv -f 原本编码 -t 新编码 filename[-o newfile]


tar -xf vim.tar -C ~ vim /etc/vimrc vim /root/.vimrc set ts=4 设置tab有多少空格 set ai 自动对齐 set nu set mouse=a set shiftwidth=4 shift + . 向左向右缩进 shift + , jklh ,cs 性感的注释 ,cu 取消注释 ,cc 注释一行 ,ca 切换单行注释符 选中代码块 按=  自动对齐 ctags -Rn . ctrl + ] ctrl + t 二、VIM编辑器的使用 vi vim (增强版vi,现在各版本的linux都带有vim) 三种模式: 普通模式:控制光标移动,删除字符,段落复制(按ESC) 编辑模式:包含插入模式和替换模式,新增文字和修改文字 命令行模式/末行模式:保存文字,离开vim,以及其它设置 vim newfile 新建一vim空白文件进行编辑 普通模式 编辑模式下按ESC切换为普通模式 命令 说明 移动: h 将光标向左移动一格 l 将光标向右移动一格 j 将光标向下移动一格 k 将光标向上移动一格 ^ 光标移动到行首,即第一有效字符位置 0 将光标移动到该行的行首,行的第一格位置 $ 将光标移动到行尾 H 将光标移动到该屏幕的顶端 M 将光标移动到该屏幕的中间 L 将光标移动到该屏幕的底端 gg 将光标移动到文章的首行 G 将光标移动到文章的尾行 w 将光标移动到下一单词 b 将光标移动到上一单词 e 将光标移动到下一单词,光标到下一单词词尾 W 和w功能一样,只不过以.或-或)字符为分界 B 和b功能一样,只不过以.或-或)字符为分界 E 和e功能一样,只不过以.或-或)字符为分界 f f后跟一字符可直接跳到本行光标之后有此字符位置 F F后跟一字符可直接跳到本行光标之前有此字符位置 t 和f一样功能,只不过光标停在要搜索字符前一字符位置 T 和T一样功能,只不过光标停在要搜索字符后一字符位置 zt 将当前位置置于屏幕顶端 zb 将当前位置置于屏幕底端 zz 将当前位置置于屏幕中间 zf 创建折行 zc 折叠 zo 打开折叠 % 跳到匹配的括号 Ctrl+u 将窗口向上移动半屏 Ctrl+d 将窗口向下移动半屏 Ctrl+f 向前滚动一整屏 ctrl+b 向后滚动一整屏 ctrl+g 在窗口下方显示信息,告诉当前文件中的位置和文件名等 Ctrl+o 跳到上次光标位置 ‘’ 跳到上次光标位置,和ctrl+o不同,它只能和上一次光标位置和当前位置来回跳转 ctrl+i 和ctrl+o功能相反 m 有名标记,在想要做标记位置按ma, 再到移动其它地方,当想回到做标记位置时,按'a就跳回做标记位置 简单搜索:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值