跟着鸟哥学Linux系列笔记2-第10章VIM学习
常用的文本编辑器:Emacs, pico, nano, joe, vim
VIM-为什么选择vi编辑器
1. 所有Unix Like系统都会内置vi编辑器,而其他文本编辑器则不一定存在
2. 很多软件的编辑接口都会主动调用vi,例如contab, visudo, edquota
3. vim具有程序编辑能力,可以主动以字体颜色辨别语言正确性
4. 程序简单,编辑速度相当快速
第2点比较重要,因为太多Linux命令默认使用vi作为数据编辑的接口
vi的使用:
vi分为3种模型:一般模式,编辑模式,命令模式
一般模式:以vi打一个文件进入一般模式,可以使用上下左右键来移动光标,可以删除字符或删除整行,也可以复制,粘贴文件数据
编辑模式:在一般模式可以删除、复制、粘贴,但却无法编辑文件内容,要等到你按下i, o, a, r等任一个字母后才能进入编辑模式,按下这些键之后,在界面的左下方会出现INSERT或REPLACE,才可以进行编辑,如果要回到一般模式,则必须按下ESC退回编辑模式
命令行模式:在一般模式中,输入:, /, ? 3个中的任意一个字符就可以将光标移动到最下面一行,在这个模式中,可以查找数据、读取、保存、大量替换字符、离开vi、显示行号等
下图为相互转换图:
按键说明:
移动、翻页
h: 光标向左移动一个字符,同方向左键
j: 光标向下移动一个字符,同方向下键
k: 光标向上移动一个字符,同方向上键
l: 光标向后移动一个字符,同方向向右键
多个字符移动则为:n+方向,如:向左移动30个字符为30h
ctrl+f: 向下翻页
ctrl+b: 向上翻页
ctrl+d: 向下翻半页
ctrl+u: 向上翻半页
+: 光标移到非空格的下一行
-: 光标移到非空格的上一行
n+空格:向后移动n个字符,20[space],向后移动20个字符
0或home: 移到这一行最前面
$或end: 移到到这一行最后面
H: 光标移至屏幕最上方那行第一个字符
M: 光标移至屏幕中央那行第一个字符
L: 光标移至屏幕最下方那行最后第一个字符
G: 移到文件最后一行
nG: 移至文件第n行
gg: 移至文件第一行
n[Enter]: 光标向下移动n行
/word: 向下查找
?word: 向上查找
n: 向下查找
N: 向上查找
替换
:n1,n2s/word1/word2/g: 在n1~n2之间找word1, 并替换为word2
:1, $s/word1/word2/g: 在1~最后一行之间找word1, 并替换为word2
:1, $s/word1/word2/gc: 在1~最后一行之间找word1, 并替换为word2,在所有替换之前提示用户
删除
x, delete: 向后删除一个字符
X, backspace: 向前删除一个字符
nx: 向后删除n个字符
nX: 向前删除n个字符
dd: 删除光标所在的那一整行
ndd: 删除光标所在行的向下20行
d1G: 删除光标所在列第1行的所有数据
dG: 删除光标所在列到最后一行的所有数据
d0: 删除从光标所在处到该行的最前面一个字符
复制
yy: 复制光标所在的那一行
nyy: 复制光标所在的向下行
y1G:复制光标所在行到第一行的所有数据
yG: 复制光标所在行到最后一行的所有数据
y0: 复制光标所在那个字符到该行行首的所有数据
y$: 复制光标所在那个字符到该行结尾的所有数据
粘贴
p, P将已复制的数据在光标下一行粘贴,大写P则为贴在光标上一行
其他
J: 将光标所在行与下一行的数据结合成同一行
c: 重复删除,例如10cj, 向下删除10行
u: 复原前一个操作
ctrl+r: 重做上一个操作
.: 恢复前一个操作
编辑模式:
i: 从目前光标所在处插入
I: 从目前光标所在行第一个非空格符处开始插入
a: 从目前光标所在处下一个字符插入
A: 从目前光标所在行的最后一个字符插入
o: 从目前光标所在的下一行处插入新的一行
O: 从目前光标所在的上一行处插入新的一行
r: 替换光标所在的那个字符一次
R: 替换光标所在行所有匹配字符
命令行模式:
:w: 将编辑的数据写入到硬盘中
:w!: 若文件属性为“只读”时,强制写入文件,写入前会校验权限
:q: 退出vi
:q!: 强制离开不保存文件
:wq: 保存后离开
:wq!: 强制保存并离开
ZZ: 大写Z,若文件无更改,则不保存离开;若文件有更改,则保存离开
:w[filename]: 将编辑文件保存为另一个文件
:r[filename]: 在编辑的数据中,读入另一个文件的数据,将file这个文件内容加到光标所在行后面
:n1,n2 w[filename]: 将n1~n2内容保存成filename文件
:! command: 暂时离开vi到命令行模式下执行command的显示结果,例如::! ls /home即可在vi当中查看/home下面以ls输出的文件信息
:set nu: 显示行号,设置之后,会在每一行前缀显示行号
:set nonu: 不显示行号
vim的备份文件,恢复与打开时的警告信息
vim会主动创建备份文件:/tmp/vitest/.man.con.swp, 以swp结尾的备份文件
在编辑时,不正常保存,再撕开时会找开,*.swp文件
命令:alias,将显示所有的简写
块选择:
ctrl+v: 光标移动过的地方开始反白
y: 将反白地方复制
d: 将反白地方删除
多文件编辑:
:n: 编辑下一个文件
:N: 编辑上一个文件
:files: 列出目前这个vim打开的所有文件
>vim filename / filename2
多窗口功能:
在命令行输入::sp[filename],即可多窗口编辑,以下为详细步骤
1. 先打开文件:vim /man.config
2. 输入: :sp
3. 输入:G
4. 再输入::sp /man.config
5. 此时3屏显示同一个文件
各个屏幕之间切换:ctrl+w+k(向上键): 找到上一个编辑窗口,ctrl+w+j(向下键): 找到下一个编辑窗口,ctrl+w+q: 结束离开
vim环境设置与记录:~/.vimrc, ~/.viminfo
查看设置,在一般模式输入::set all,即可查看当前文件所有设置
整体vim设置值,一般是放在/etc/vimrc文件中,不过不建议修改它,可以修改~/.vimrc这个文件,默认不存在,可以自行手动创建
vim常用命令示意图:
其他问题:
中文编码问题:
1. Linux系统默认语系数据:/etc/sysconfig/i18n
2. 在bash下,与LANG变量有关
3. 文本原本编码
4. 打开终端机的软件
DOS与Linux的断行字符:
在Linux中Enter按键为LF,而在DOS中Enter按键为CRLF,在Linux中显示DOS回车会多出^M$
使用Linux中的格式转换工具可以进行转换:
dos2UNIX [-kn] file [newfile]
UNIX2dos [-kn] file [newfile]
最终建议:由于字符编码方式不一样,不建议在windows系统当中将文件编辑之后,才上传到Linux系统,容易发生错误,而且如果在不同的系统之间复制一些纯文文件时,使用以上两个 命令转换
语系编码转换:如何将big5编码转成utf-8,使用conv
>iconv -f 原本编码 -t 新编码 file [-o newfile]
跟着鸟哥学Linux系列笔记2-第10章VIM学习的更多相关文章
- 跟着鸟哥学Linux系列笔记3-第11章BASH学习
跟着鸟哥学Linux系列笔记0-扫盲之概念 跟着鸟哥学Linux系列笔记0-如何解决问题 跟着鸟哥学Linux系列笔记1 跟着鸟哥学Linux系列笔记2-第10章VIM学习 认识与学习bash 1. ...
- 跟着鸟哥学Linux系列笔记0-如何解决问题
跟着鸟哥学Linux系列笔记0-扫盲之概念 在发生问题怎么处理: 1. 在自己的主机.网络数据库上查询How-To或FAQ -Linux 自身的文件数据: /usr/share/doc -CLDP中 ...
- 跟着鸟哥学Linux系列笔记1
跟着鸟哥学Linux系列笔记0-扫盲之概念 跟着鸟哥学Linux系列笔记0-如何解决问题 装完linux之后,接下来一步就是进行相关命令的学习了 第五章:首次登录与在线求助man page 1. X ...
- 跟着鸟哥学Linux系列笔记0-扫盲之概念
相关缩写全称: POSIX(Portable Operation System Interface):可携式操作系统接口,重点在于规范内核与应用之间的接口,由IEEE定义发布 IEEE: 美国电气与电 ...
- 鸟哥的Linux私房菜——第十六章:学习Shell Scripts
视频链接:http://www.bilibili.com/video/av10565321/ 1. 什么是 Shell Script (shell写的脚本)1.1 干嘛学习 shell s ...
- 鸟哥的linux私房菜——第十六章学习(程序管理与 SELinux 初探)
第十六章.程序管理与 SE Linux 初探 在 Linux 系统当中:"触发任何一个事件时,系统都会将他定义成为一个程序,并且给予这个程序一个 ID ,称为 PID,同时依据启发这个程序的 ...
- 鸟哥的Linux私房菜——第十九章:例行命令的建立
视频链接:http://www.bilibili.com/video/av11008859/ 1. 什么是例行性命令 (分为两种,一种是周期性的,一种是突发性的)1.1 Linux 工作排程的种类: ...
- 鸟哥的Linux私房菜——第十四章:Bash Shell
视频链接:http://www.bilibili.com/video/av10094012/ 本章目录: 1. Bash shell1.1 什么是 shell ? (我们通过shell与Kernel核 ...
- 鸟哥的Linux私房菜——第十二章:档案的压缩与打包
视频链接: 土豆:http://www.tudou.com/programs/view/GncwT0FJKsQ B站(推荐):http://www.bilibili.com/video/av98857 ...
随机推荐
- Adapter
11-25 16:09:10.965 22791-22823/myapplication.com.myblue E/HAL: hw_get_module_by_class: lib loaded: / ...
- openstack 常用命令
转自: docs.openstack.org $ nova boot --image ubuntu-cloudimage --flavor 1 --user-data mydata.file
- 套接字IO超时设置和使用select实现超时管理
在涉及套接字IO超时的设置上有一下3种方法: 1.调用alarm,它在指定的时期满时产生SIGALRM信号.这个方法涉及信号的处理,而信号处理在不同的实现上存在差异,而且可能干扰进程中现有的alarm ...
- struts2 基础demo1
我们都知道 struts2 是基于webframework 出现的 优秀的mvc 框架, 他和struts1 完全没有联系.struts2 是一个框架, 啥叫框架呢?是一个优秀的半成品 . web的框 ...
- linux shell 中 printf 与 echo的区别
echo echo是非常常用的shell命令.参数如下: -e:打开反斜杠字符backslash-escaped的解析,即对/n,/t等字符进行解析,而不视之为两个字符 -E:关闭反斜杠字符 ...
- javascript 解析dom字符串
知识要求:1:熟悉dom结构层次(如childNodes,nodeType,parent,children)等. 2:熟悉jq对象转换js 对象,反之 毕竟不是专业js人.借助第3方框架.其实jq也是 ...
- 针对跑MySQL的Linux优化【转】
本文来自:http://www.mysqlsupport.cn/linux-performance-tuning-tips-mysql/ 因为很多MySQL的生产环境都在Linux下,我决定指出一些L ...
- Effective C++ -----条款21:必须返回对象时,别妄想返回其reference
绝不要返回pointer或reference指向一个local stack对象,或返回reference指向一个heap-allocated对象,或返回pointer或reference指向一个loc ...
- [Android Pro] AIDL进程间传递自定义类型参数
1.创建.aidl 文件 AIDL 语法简单,用来声明接口,其中的方法接收参数和返回值,但是参数和返回值的类型是有约束的,且有些类型是需要 import,另外一些则无需这样做. AIDL 支持的数据类 ...
- 如何用Endnote导入你要用的格式
在Google搜索某一个期刊名 ens格式的文件,下载,然后放入endnote的文件夹中(C:\Program Files (x86)\EndNote X7\Styles) 然后将其导入即可