vim编辑器详解
vi(vim)是上Linux非常常用的编辑器,很多Linux发行版都默认安装了vi(vim)。vi(vim)命令繁多但是如果使用灵活之后将会大大提高效率。
vi是“visual interface”的缩写,vim是vi IMproved(增强版的vi)。在一般的系统管理维护中vi就够用,如果想使用代码加亮的话可以使用vim。
下面是vi的使用教程:包含vi的基本介绍、使用模式、文件的打开关闭保存、插入文本或新建行、移动光标、删除、恢复字符或行、搜索等等,
算是一篇比较适合新手学习vi的教程。
vi有3个模式:插入模式、命令模式、低行模式(底座模式)。
插入模式:在此模式下可以输入字符,按ESC将回到命令模式。
命令模式:可以移动光标、删除字符等。
低行模式:可以保存文件、退出vi、设置vi、查找等功能(低行模式也可以看作是命令模式里的)。
打开文件、保存、关闭文件(vi命令模式下使用)
vi filename //打开filename文件
:w //保存文件
:w cszhi.com //保存至cszhi.com文件
:q //退出编辑器,如果文件已修改请使用下面的命令
:q! //退出编辑器,且不保存
:wq //退出编辑器,且保存文件
插入文本或行(vi命令模式下使用,执行下面命令后将进入插入模式,按ESC键可退出插入模式)
a //在当前光标位置的右边添加文本
i //在当前光标位置的左边添加文本
A //在当前行的末尾位置添加文本
I //在当前行的开始处添加文本(非空字符的行首)
O //在当前行的上面新建一行
o //在当前行的下面新建一行
R //替换(覆盖)当前光标位置及后面的若干文本
J //合并光标所在行及下一行为一行(依然在命令模式)
移动光标(vi命令模式下使用)
1、使用上下左右方向键
2、命令模式下:
h 向左、j 向下、k 向上、l 向右。
空格键向右、Backspace向左、Enter移动到下一行首、-移动到上一行首。
删除、恢复字符或行(vi命令模式下使用)
x //删除当前字符
nx //删除从光标开始的n个字符
dd //删除当前行
ndd //向下删除当前行在内的n行
u //撤销上一步操作
U //撤销对当前行的所有操作
搜索(vi命令模式下使用)
/cszhi //向光标下搜索cszhi字符串
?cszhi //向光标上搜索cszhi字符串
n //向下搜索前一个搜素动作
N //向上搜索前一个搜索动作
跳至指定行(vi命令模式下使用)
n+//向下跳n行 (数字+shift +)
n-//向上跳n行 (数字+shift -)
nG //跳到行号为n的行
G //跳至文件的底部
设置行号(vi命令模式下使用)
:set nu //显示行号
:set nonu //取消显示行号
复制、粘贴(vi命令模式下使用)
yy //将当前行复制到缓存区,也可以用 "ayy 复制,"a 为缓冲区,a也可以替换为a到z 的任意字母,可以完成多个复制任务
nyy //将当前行向下n行复制到缓冲区,也可以用 "anyy 复制,"a 为缓冲区,a也可以替换为a到z的任意字母,可以完成多个复制任务
yw //复制从光标开始到词尾的字符
nyw //复制从光标开始的n个单词
y^ //复制从光标到行首的内容
y$ //复制从光标到行尾的内容
p //粘贴剪切板里的内容在光标后,如果使用了前面的自定义缓冲区,建议使用"ap 进行粘贴
P //粘贴剪切板里的内容在光标前,如果使用了前面的自定义缓冲区,建议使用"aP 进行粘贴
替换(vi命令模式下使用)
:s/old/new //用new词替换行中首次出现的old词
:s/old/new/g //用new词替换行中所有的old词
:n,m s/old/new/g //用new词替换从n到m行里所有的old词
:%s/old/new/g //用new词替换当前文件里所有的old词
编辑其他文件
:e o_filenam //编辑文件名为 o_filenam 的文件

修改文件格式
:set fileformat=unix //将文件修改为unix格式,如win下面的文本文件在linux下会出现^M
这里可以直接去^M:
有两种情况,会出现打开的文件都显示^M符号:
1. vim被配置为fileformat=unix,而你打开的文件都是dos格式的。unix格式的换行符为0A(ascii码)也就是<LF>,dos格式的换行符为 0D 0A(也就是<CR><LF>),<CR>其实就显示为^M。下面是详细讲解:
DOS, Mac 和Unix格式的文件
回想计算机的史前史,那时的打字机使用两个字符来开始一个新行。
首先是一个字符命令使打印头移回开始位置(回车,<CR>),然后另一个字
符命令控制向前进纸一行(进纸,<LF>).
在计算机诞生之初,存储设备十分昂贵。于是有人就提出没有必要
用两个字符来表示一行的结束。UNIX一族决定只用进纸一个字符<Line
Feed>来表示行尾。来自苹果阵营的人则把回车<CR>作为换行的标
准。MS-DOS(和微软的Windows)仍然决定沿用古老的回车换行<CR><LF>传
统。
这也意味着如果把文件从一个系统移到另一个不同的系统,你就会遇
到与换行相关的问题。Vim编辑器则可以识别这些不同格式的文件。
你可以在'fileformats'选项里指定你希望Vim能自动识别的格式的集
合。下面的这个命令就可以让Vim能自动识别UNIX格式和MS-DOS格式:
:set fileformats=unix,dos
把这句话放在_vimrc中,一般情况就都能OK。
2. 你的文本中既有unix的换行符,又有dos的换行符,那么vim会认为你打开的是unix的,所以,那些dos的换行符就会出现恼人的^M。不过这种情况不常见。办法是:
1)若你的vim版本大于7.1,并想用dos显示和保存,如下语句:
:e ++ff=dos
2)若你的vim版本小于等于7.1,又想把文章按照dos格式显示和保存,如下语句:
:set ff=dos
:%s/\r\+$//e /*清除行末的不可打印字符包括但不限于^M*/
3)若你的vim版本小于等于7.1,又想把文章按照unix格式显示和保存,如下语句:
:set ff=unix
:%s/\r\+$//e
或者打开文件:
替换命令就可以了,输入^M的时候按住ctrl键不放,依次按下v和m
如全文替换为空(没有):
1,$s/^M//g
vim编辑器详解的更多相关文章
- 【CNMP系列】VIM编辑器详解
缘起 大学的时候做过Linux内核驱动程序研发,之前写C语言就是用的Vim编辑器,当年的Vim还不如今天之强大,当时的插件也没有现在这么多,只是觉得这个编辑器能满足我想要的所有,查看Linux内核代码 ...
- vim编辑器详解(week1_day3)--技术流ken
vi编辑器 作用:编辑文本文件中的内容的工具 命令历史 末行模式中,以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令. 启动vim 在命令行窗口中输入以下命令即可 v ...
- vim编辑器详解(week1_day3)
vi编辑器 作用:编辑文本文件中的内容的工具 命令历史 末行模式中,以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令. 启动vim 在命令行窗口中 ...
- vim命令详解
VIM编辑常用技巧 vim编辑器 简介: vi: Visual Interface,文本编辑器 文本:ASCII, Unicode 文本编辑种类: 行编辑器: sed 全屏编辑器:nano, vi V ...
- Vim配置文件-详解(.vimrc)
Vim配置文件的作用 Vim启动时,会根据配置文件(.vimrc)来设置 Vim,因此我们可以通过此文件来定制适合自己的 Vim Vim分类 系统Vim配置文件/etc/vimrc 所有系统用户在启动 ...
- Linux编辑器vim键盘详解
下面的这张图,一看就明白了,从此,学习变的不再艰难! 补注:图中没有关于查找和替换的,应该用下面的.自上而下的查找操作 /word小写的n和N自下而上的查找操作 ...
- vim 命令详解
vi: Visual Interface 可视化接口vim: VI iMproved VI增强版 全屏编辑器,模式化编辑器 vim模式: 编辑模式(命令模式) 输入模式 末行模式 模式转换: 编辑-- ...
- linux下vim命令详解 转自: zhanglong0426
高级一些的编辑器,都会包含宏功能,vim当然不能缺少了,在vim中使用宏是非常方便的: :qx 开始记录宏,并将结果存入寄存器xq 退出记录模式@x 播放记录在x寄存器中的 ...
- linux下vim命令详解
高级一些的编辑器,都会包含宏功能,vim当然不能缺少了,在vim中使用宏是非常方便的::qx 开始记录宏,并将结果存入寄存器xq 退出记录模式@x 播放记录在x寄存器中的宏命令 ...
随机推荐
- TEX学习笔记
整理在这里, 方便以后容易查找. 毕竟每个tex的模板有些不一样. Beamer: Latex beamer 学习总结 http://blog.sina.com.cn/s/blog_6cf921f30 ...
- load()方法---------jQuery动态加载html
jquery代码 $("#div").load("test.html"); test.html ----------------被加载页面(有<HTM ...
- Strint类成员
String& String::operator=(const string& other){ if(this == &other) { return *this; } de ...
- unity 读取文本与写入文本
void writeData(string str,string file) { string parth = Application.dataPath; Strea ...
- Python格式化字符串和转义字符
地址:http://blog.chinaunix.net/uid-20794157-id-3038417.html Python格式化字符串的替代符以及含义 符 号 说 明 ...
- tomcat源码剖析
最近看Tomcat的源码的节奏还算是挺紧凑的,给人的感觉,tomcat的代码相对以前读的jetty的代码显得更有条理一些...当然这也是有可能是因为自己看的jetty的版本是比较老的,而看的Tomca ...
- 在<s:iterator>标签里给动态表格添加序号
在<s:iterator>标签里给动态表格添加序号,需要用到<s:iterator>标签里的Status属性里的count eg:<s:iterator value=&q ...
- 服务器上搭建web环境
一.安装tomcat [root@localhost ~]# mkdir tomcat-src --新建文件夹 [root@localhost ~]# cd tomcat-src ...
- centos 7 用yum安装 mysql
首先centos7 已经不支持mysql,因为收费了你懂得,所以内部集成了mariadb,而安装mysql的话会和mariadb的文件冲突,所以需要先卸载掉mariadb,以下为卸载mariadb,安 ...
- [python]获取文件夹下所有文件名
#---picknames.py---import os filenames = os.listdir(os.getcwd()) for name in filenames: print(name)