文档章节

vi和vim 操作笔记

Junn
 Junn
发布于 2012/09/26 22:16
字数 2100
阅读 296
收藏 3
点赞 0
评论 0

Linux中vi(vim)编辑器的使用

Ubuntu下vim的设置


Vi有三种基本的工作模式:指令行模式、文本输入模式、行末模式。

指令模式(Command Mode) 下输入  a、i、o进入文本输入模式(Input Mode)
文本输入模式(Input Mode) 下按ESC进入指令模式(Command Mode)
指令模式(Command Mode)下输入:进入末行模式(Last line Mode)
末行模式(Last line Mode)下指令错误则返回指令模式(Command Mode)

下面分别介绍这三种模式:

1、指令模式(Command Mode)
指令模式主要使用方向键移动光标位置进行文字的编辑,下面列出了常用的操作命令及含义。
0  -----光标移动至行首
h  -----光标左移一格
l  -----光标右移一格
j  -----光标下移一行
k  -----光标上移一行
$+A-----将光标移动到该行最后
PageDn ----- 向下移动一页
PageUp ----- 向上移动一页
d+方向键 -----删除文字
dd -----删除整行
pp -----整行复制
r  -----修改光标所在的字符
S  -----删除光标所在的列,并进入输入模式

2、文本输入模式(Input Mode)
在指令模式下(Command Mode)按a/A键、i/I键、o/O键进入文本模式,文本输入模式的命令及其含义如下所示。
a -----在光标后开始插入
A -----在行尾开始插入
i -----从光标所在位置前面开始插入
I -----从光标所在列的第一个非空白字元前面开始插入
o -----在光标所在列下新增一列并进入输入模式
O -----在光标所在列上方新增一列并进入输入模式
ESC -----返回命令行模式

3、末行模式(Last line Mode)
末行模式主要进行一些文字编辑辅助功能,比如字串搜索、替代、保存文件等操作。主要命令如下
:q -----结束Vi程序,如果文件有过修改,先保存文件
:q! -----强制退出Vi程序
:wq  -----保存修改并退出程序
:set nu -----设置行号

需要注意的是,以上指令都是在英文输入模式下才有效,在linux 终端下有时我们用的是中文输入模式,输入中文的“:”就不能转换模式了。

0.关于保存

首先需要用vi编辑器打开文件:如 vi index.php,然后要有修改文件的权限进入插入模式;
保存:Esc到命令模式 敲冒号: 再wq!(3个字符),就保存退出了, [w是保存,q是退出,可单用,!是强制]

也可以是Shift+ZZ,保存退出的意思

==============================================

1.关于退出

:wq!  ----强制保存退出
:wq  ---- 保存退出
:x   ----- 作用和:wq 一样
ZZ  ---- 作用和:wq一样,(注意Z是大写的,并且不是在命令模式)
:q  ---- 退出
:q!  ---  强制退出

==============================================

2.关于移动

h : 在当前行向左移动一个字符
j:  移动到下一行
k:  移动到上一行
l:  在当前行向右移动一个字符
Ctrl +f:  向前滚动一页
Ctrl +b:  向后滚动一页
:n   将光标定位到第n行
:$   将光标定位到最后一行
0   将光标定位到本行的行首
$   将光标定位到本行的行尾
G   将光标定位到本文章的最后一行,与:   $功能相同。
H   将光标定位到屏幕的顶端
M   将光标定位到屏幕的中间
L   将光标定位到屏幕的底端

============================================

3.关于搜索

/:   后面跟要查找的东西,在文件中向前搜索  如:/hell  、  /hell* 等
?:  后面跟要查找的东西,在文件中向后搜索
n:  向前重复搜索
N:  向后重复搜索

用\c忽略大小写
/word_to_search\c

忽略大小写
:set ignorecase  或者:set ic

考虑大小写
:set noignorecase 或者:set noic

=============================================

4.关于复制

yy:  复制光标当前行
nyy:  复制光标当前行到当前行以下的n-1行
:1,100 co 200   将1~100的内容复制到第200行。
:100,102 co $   将100~102行的内容复制到最后一行。

==============================================

5.关于粘贴

p :   粘贴到当前行的下一行
P(大) :   粘贴到当前行的 上一行

==============================================

6.关于删除.剪切

dd   删除当前行
ndd   与nyy相似
dw   删除一个单词
ndw   与ndd相似
x    删除一个字符
nx   删除n个字符
dG  删除当前光标到文件末尾的所有内容
d0  删除当前光标到本行行首的所有内容
d$  删除当前光标到本行行尾的所有内容
:1,100d  删除1~100
:100d    删除第100行
:1,100 mo $   将1~100行的内容移动到最后一行。

=============================================

7.关于插入

i:  在当前位置的字符前面进入插入模式
I:  在当前行的开头进行插入
a:  在当前位置的字符后面进入插入模式
A:  在当前行的结尾进行插入
o:  在当前行下面打开一个新行进行插入
O:  在当前行上面打开一个新行进行插入

=============================================

8.关于撤销

u:  撤销上一次的更改
ctrl+r: 还原上次撤销

=============================================

9.关于替换

regexp:  是要匹配的式样
replacement:  是要替换的字符串

:s/regexp/replacement   -------------------------替换当前行出现的第一个式样
:s/regexp/replacement/g  -------------------------替换当前行所有的匹配
:%s/regexp/replacement/g  -----------------------替换文件中所有匹配式样

=============================================

PS:  还有一个重要的命令就是"." 命令,这个命令是用来重复上一命令的

vi里如何:撤销上次操作?,多次重复一组编辑操作?.......

a)   撤消上一个编辑操作。       ====>   u
b)   重复上一个编辑操作。       ====>   .
c)   还原被撤消的编辑操作。    ====>   Ctrl   +   r
d)   多次重复一组编辑操作。    ====>  ". " 命令可以重复最近一次的编辑动作.

==============================================

其它:

vi filename:用vi打开文件
vi 打开文件时,光标会自动定位到上一次打开的位置

vi + filename
打开文件时,光标会自动定位最后一行(一般情况,如要更改的信息在最后几行时)

vi +n filename
打开文件时,光标会自动定位到指定行

vi +/string filename  
打开文件时,将光标定位到匹配的字符串所在行上

vi filename filename
同时打开多个文件
切换下一个文件,输入:n
切换上一个文件,输入:prev

命令模式下输入“:set nu”
:set nu :显示行号
:set nonu:取消行号

vi/vim永久显示行号:

打开vimrc文件 vi /etc/vim/vimrc 编辑,在里面找一行,添加上set number,:wq保存退出 重新执行vim即可

yy:复制一行
p:粘贴
dd:删除
u:取消上一次操作

:x:功能和:wq是一样的 保存并退出

/str :查找匹配内容  n表示向后找、N表示向前找
:n 定位到指定行
!:强制  :q!强制退出   :w! 强制保存

\ 可以使命令换行

Ctrl+U 删除单签光标之前的所有字符
Ctrl+K 删除光标后所有字符
Ctrl+L 清空当前屏幕中显示内容
Ctrl+C 取消当前命令行的编辑

获得命令帮助

内部命令
Help 用来查看shell内部命令的帮助信息,比如 Help pwd

外部命令
--help  比如mkdir --help 查看mkdir帮助
使用man手册  比如man passwd 看passwd帮助

| 为管道 前面的输出结果作为后面命令的操作对象,比如  ifconfig | grep ‘eth0’,只显示有eth0的行
> 重定向输出 ifconfig >ifconfig.txt将输出到记事本文件

Vim中的swp文件:

vim中的swp即swap文件,在编辑文件时产生,它是隐藏文件,如果原文件名是data,那么swp文件名就是.data.swp。如果文件正常退出,则此文件自动删除。以下两种情况不会删除swp文件:

1、Vim非正常退出,这种情况下,除非手动删除swp文件(也可以在vim提示时删除),否则它会一直存在。

2、多个程序同时编辑一个文件。

可用vim带-r参数编辑 #vim -r data 然后w保存即可,其中-r代表recovery 最后记得删除.swp文件:

#rm -rf .*swp

补充:
 
可以通过选项禁止产生swp文件
 
#set noswapfile

© 著作权归作者所有

共有 人打赏支持
Junn
粉丝 145
博文 372
码字总数 288918
作品 0
海淀
高级程序员
Linux学习笔记(17)

近期参加了朋友的婚礼。比较远,没有拿电脑。所以一直没有更新。很惭愧,从今天起开始正式更新学习内容。 一、vim vim是vi的升级版,最大的区别就是编辑一个文本时,vi不会显示颜色,vim会显...

小新锐 ⋅ 2017/11/09 ⋅ 0

朗科学习期间心得笔记(三)

vi编辑器:全屏文本编辑器 vi:visual interface,可视化界面; S.U.N:bill joy, vim相对于vi有更多的新特性: 1.语法着色显示; 2.更多的命令; 3.历史纪录; vi:模式化文本编辑器 模式:...

sherlockR ⋅ 2017/10/18 ⋅ 0

学习笔记十八

vim进入编辑模式 从一般模式进入编辑模式,只需按i、I、a、A、o、O、r和R中的某一个键即可,当进入编辑模式时,在屏幕的尾行显示INSERT字样(若支持中文,则显示插入)。按Esc键,从编辑模式...

风流花生 ⋅ 2017/11/09 ⋅ 0

Vim 学习笔记

概念 什么是 vim Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。和Emacs并列成为类Unix系统用户最喜欢的编辑器。 Vim 的...

静默虚空 ⋅ 2017/11/17 ⋅ 0

学习笔记十七

vim介绍 vim是vi的升级版,相较于vi,会显示颜色。 如果系统没有vim工具,需要安装:# yum install -y vim-enhanced vim颜色显示和移动光标 输入# vim /etc/passwd 然后将/etc/passwd放到/tm...

风流花生 ⋅ 2017/11/08 ⋅ 0

linux下python安装

做个笔记 1、安装依赖包 # make install 3、添加python到环境变量 # vim ~/.bash_profile 添加环境变量为, # vi /usr/bin/yum 将文件头部的 #!/usr/bin/pyhton 改为 #!/usr/bin/pyhton2....

槑槑的嫑嫑 ⋅ 2017/02/13 ⋅ 0

Linux学习笔记(五)---centos7系统静态IP地址配置

上节我们把ip地址使用dhclient自动获取ip,但是有时重启虚拟机ip地址会变为其他的。导致xshell连接时又要修改配置文件,为此我们把ip地址给改为静态IP。具体操作如下: 1.打开网卡配置文件 ...

liulangren0533 ⋅ 01/19 ⋅ 0

vim文本编辑器的常规使用--文本编辑器当中的经典

1.发展历程 Vi 最初是由 Bill Joy 在 1976 年编码实现的。而 Vim (Vi IMproved) 则是改进的 Vi,由 Bram Moolenaar 在 1991 年开发并发布。Vi/Vim 是所有 Unix/Linux 操作系统默认配备的编辑...

zyx1990zm ⋅ 2016/01/09 ⋅ 0

vi和vim的区别

vi和vim它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。 vim的这些优势主要体现在以下几个方面: 1、多级撤消 我们知道在vi里,按...

vip1888 ⋅ 2017/12/25 ⋅ 0

51.vim

Vim简介: Vim的前身为vi(visual editor)编辑器,Vi编辑器是Linux和Unix上最基本的文本编辑器,工作在字符模式下。由于不需要图形界面,Vi是效率很高的文本编辑器。尽管在Linux上也有很多图...

闪电王 ⋅ 01/07 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

java软件工程师简历中项目经验怎么写?

作者:暗灭 链接:https://www.zhihu.com/question/20695310/answer/180691302 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 直接给你贴个我自己的简历...

颖伙虫 ⋅ 22分钟前 ⋅ 0

Confluence 6 恢复一个站点有关使用站点导出为备份的说明

推荐使用生产备份策略。我们推荐你针对你的生产环境中使用的 Confluence 参考 Production Backup Strategy 页面中的内容进行备份和恢复(这个需要你备份你的数据库和 home 目录)。XML 导出备...

honeymose ⋅ 今天 ⋅ 0

JavaScript零基础入门——(九)JavaScript的函数

JavaScript零基础入门——(九)JavaScript的函数 欢迎回到我们的JavaScript零基础入门,上一节课我们了解了有关JS中数组的相关知识点,不知道大家有没有自己去敲一敲,消化一下?这一节课,...

JandenMa ⋅ 今天 ⋅ 0

火狐浏览器各版本下载及插件httprequest

各版本下载地址:http://ftp.mozilla.org/pub/mozilla.org//firefox/releases/ httprequest插件截至57版本可用

xiaoge2016 ⋅ 今天 ⋅ 0

Docker系列教程28-实战:使用Docker Compose运行ELK

原文:http://www.itmuch.com/docker/28-docker-compose-in-action-elk/,转载请说明出处。 ElasticSearch【存储】 Logtash【日志聚合器】 Kibana【界面】 答案: version: '2'services: ...

周立_ITMuch ⋅ 今天 ⋅ 0

使用快嘉sdkg极速搭建接口模拟系统

在具体项目研发过程中,一旦前后端双方约定好接口,前端和app同事就会希望后台同事可以尽快提供可供对接的接口方便调试,而对后台同事来说定好接口还仅是个开始、设计流程,实现业务逻辑,编...

fastjrun ⋅ 今天 ⋅ 0

PXE/KickStart 无人值守安装

导言 作为中小公司的运维,经常会遇到一些机械式的重复工作,例如:有时公司同时上线几十甚至上百台服务器,而且需要我们在短时间内完成系统安装。 常规的办法有什么? 光盘安装系统 ===> 一...

kangvcar ⋅ 昨天 ⋅ 0

使用Puppeteer撸一个爬虫

Puppeteer是什么 puppeteer是谷歌chrome团队官方开发的一个无界面(Headless)chrome工具。Chrome Headless将成为web应用自动化测试的行业标杆。所以我们很有必要来了解一下它。所谓的无头浏...

小草先森 ⋅ 昨天 ⋅ 0

Java Done Right

* 表示难度较大或理论性较强。 ** 表示难度更大或理论性更强。 【Java语言本身】 基础语法,面向对象,顺序编程,并发编程,网络编程,泛型,注解,lambda(Java8),module(Java9),var(...

风华神使 ⋅ 昨天 ⋅ 0

Linux系统日志

linux 系统日志 /var/log/messages /etc/logrotate.conf 日志切割配置文件 https://my.oschina.net/u/2000675/blog/908189 logrotate 使用详解 dmesg 命令 /var/log/dmesg 日志 last命令,调......

Linux学习笔记 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部