欢迎各位兄弟 发布技术文章
这里的技术是共享的
vim 编辑器
文本编辑器,
ASCII文档,
字处理器
wps,word文档 有xml格式(其中一种修饰吧),作为修饰符,跟文档的内容没有关系,但是是作为有效数据的组成部分
linux 重要的哲学思想之一就是纯文本文件来保存软件的配置信息
一切皆文件
nano,sed
vi:Visual Interface 可视化接口
遵循GPI协定的一款开源软件,体积小.但功能异常强大
vim:VI IMproved,vi的增加版 是在 vi 功能的基础上添加扩展功能的插件而形成的 有着色功能
全屏编辑器,模式化编辑器 在不同的模式中,敲下的键盘理解的意义不一样
敲 d 删除 在插入模式下敲d 就是 d字母
#vim FILENAME
#vim /path/to/somefile (如果 后面跟多个文件,能够打开的只有一个文件)
(默认情况下,父目录必须得存在)(文件可以存在也可以不存在,分别表示编辑,新建)
vim 模式
1)编辑模式(命令模式) 刚打开时的模式 (所有的击键命令被理解为编辑整个文档的,比如删除两行,复制三行,粘贴十行)
2)输入模式(插入模式) (大多数敲键动作都会被当作输入到文件中的内容,而保存在文档当中)
3)末行模式 整个屏幕的最下方,最后一行上,键入一些编辑命令,或其它的操作命令(可以输入很多除了编辑命令外的诸多文件管理命令)(提供的命令支持能力比编辑能力更多) (编辑文件或执行额外的操作)(末行模式的功能非常强大)
模式转换:
编辑-->输入:
i:insert 在当前光标所在字符的前面转为输入模式(插入模式)
a:append 在当前光标所在字符的后面转为输入模式(插入模式)
o: open 在当前光标所在行的下方新建一行并转为输入模式(插入模式)
都有对应的大写
I:在当前光标所在行的行首,转换为输入模式(插入模式)
A:在当前光标所在行的行尾,转换为输入模式(插入模式)
O:在当前光标所在行的上方新建一行并转为输入模式(插入模式)
(输入模式和末行模式,彼此之间不能直接转换)
输入-->编辑
ESC
编辑-->末行
:
末行-->编辑
ESC (有时一次不行,得两次) (没有键入内容的话,一次就够了(但我的电脑上好像都得两下))
:10 跳动第10行
:10d 删除第10行
:10,20d 删除第10至第20行
:set nu 显示行号
:! ls /etc 可以执行shell命令
1.删除当前行后面所有的行:
:,$d (或者.,$d)
2.删除第一行到当前行:
:1,.d
(每次用了都忘记,此记)
技巧:
一,打开文件
1)打开文件后,直接让光标处在某个行上
vim +# 文件名 加号跟数字 处于多少行
vim + 文件名 直接加号,最后一行
vim +/PATTERN 文件名: 打开文件,定位至第一次被 PATTERN 匹配到的行首
打开文件 默认处于编辑模式 模式之间可以转换
二,关闭文件
在编辑或末行模式下完成
1,末行模式下关闭文件 !感叹号是强行的意思
:q (q表示退出,如果已经有内容更改,需要确认的)
:wq 保存退出 (w 表示保存) (q退出)
:q! 强行不保存退出
:w 单独保存 (只读是存不了的,但只读对管理员是不生效的)
:w! 强行保存 (强行保存,只有管理员才有这个权限)
:wq 可以简写为 :x
2,编辑模式下退出
ZZ 保存退出
Ctrl+z,Ctrl+z (应该是不保存退出,应该是这样子的吧)
(添加一个字符,再删掉它 然后:q 仍然提示内容已更改,虽然内容一样,但 vim 认为你已经改内容了)
三,移动光标(编辑模式)
1,逐字符移动:
h:右手 放键盘上 向左
l:右手 放键盘上 向向
j:右手 放键盘上 向下 (j日本 在下面)
k:右手 放键盘上 向上 (k韩国,在上面)
#h:移动#个字符 (移动几位数字)
2,逐单词移动(以单词为单位进行移动)
w:(word)移至下一个单词的词首
e: (end)跳至当前或下一个单词的词尾
b:(back backspace)跳至当前或前一个单词的词首
#w:移动#个单词 (移动几位数字) (这些命令也都支持#数字)
3,行内跳转
0:跳到行首(绝对行首)(包括前面的空白字符也算) (开始 开头)
^:跳到行首第一个非空白字符 (开始 开头)
$:跳到行尾(绝对行尾)(包括后面的空白字符也算) (结束)
( 左括号在句子间跳转
) 右括号在句子间跳转
{ 左花括号在段落间跳转
} 右花括号在段落间跳转
4,行间跳转
#G: 跳转至第#行 (末行模式下 :# 比如 :6 敲回车,就到了第6行) (首行gg 或 1G)
G:最后一行
Vim如何跳转到光标的上次 (上一次) 位置
四,翻屏 (编辑模式下)
Ctrl+f:向下翻一屏
Ctrl+b:向上翻一屏
Ctrl+d: (down)向下翻半屏
Ctrl+u: (up)向上翻半屏
五,编辑命令 (编辑模式下)
x 删除光标所在处的单个字符
#x 删除光标所在处及向后的共几个(#个)字符
六,删除命令:d (编辑模式下)
d 与前面的 移动光标 的命令(跳转命令)组合起来使用 .
比如 先按下d,再按$ 就删除当前至行尾的所有字符
比如 先按下d,再按0 就删除当前至行首的所有字符
比如 先按下d,再按w 就删除当前至下一个单词的词首的所有字符
可以跟数字组合起来使用 比如3dw 就删除当前至下三个单词(包括自己就3个)的词首的所有字
#dw,#de,#db 都比较常见 (删除光标跳转符指定范围的#个)
dd:删除当前光标所在行
#dd(或者 d#d ) :删除所括当前光标所在行在内的#行 删除当前光标所在及下面的共#行
末行模式下:
StartAD,EndADDd
. 点号表示当前行
$美元符表示最后一行
+# 向下的#行(相对地址表示法)
$-1 表示倒数第二行
比如 :10,20d 表示删除从10行到20行的数据
:.,+5d (一共删了6行,当前行及下面的5行)
:.,100d (从当前行到第100行)
vi 所删除的n个内容不会立即被清空(会被保存在缓冲区,即内存里),将来发现删错了,还可以撤回去(不光是删除)
刚刚删除的内容 还可以拿来粘贴到别的位置
七,粘贴命令p (paste)
p: 如果删除或复制的为整行内容,则粘贴到光标所在行的下方,如果删除或复制的为非整行,则粘贴到光标所在字符的后面
P:如果删除或复制的为整行内容,则粘贴到光标所在行的上方,如果删除或复制的为非整行,则粘贴到光标所在字符的前面
末行模式下的删除
:75,$d 这是从75行删除到最后一行
八,复制命令 y (yank)
用法同d命令
末行模式下的复制
:75,$y 这是从75行复制到最后一行
九,修改,先删除内容,再转换为输入模式
c: (change)用法同d命令
cc 删除这一行转为输入模式
c$ 删除光标所在位置至行尾,然后转为输入模式
十, 替换:
r (replace) : 它还是在编辑模式,不是插入模式(输入模式),也不是替换模式
#ra :就是把光标所在的字符替换成#个a字符 (一般很少这么用)
输入模式下 按 insert 键,则后面的字符逐个替换
R:替换模式 也不是逐个朝后推字符的 (敲 ESC 退出替换模式)此时后面的字符也是逐个替换
十一,撤销编辑操作
u: (undo) 撤销前一次编辑操作,连续按u,可以撤消前n次编辑操作,(一般来说vim编辑器只在内存缓冲区当中保存最近50次的操作,也就是说只能撤消最多50次的编辑)
可以使用 #u:直接撤销最近前#次的编辑操作
撤销最近一次的撤销操作 (反撤销)(恢复) :Ctrl+r
(
Vim如何跳转到光标的上次位置
Ctrl + O (向后退)
Ctrl + I (向前进)
装了Ctag的插件可以跳转 Ctrl+】。查看函数调用。
)
十二,重复前一次的编辑操作
. :点号
十三,可视化模式
v 按字符选取,可以鼠标划过选中,然后 按d ,就可以直接删除一大段内容 (也可以复制按y 回到输入模式,然后按 p 粘贴)
V 按矩形块选取 (光标所在行必须选中,且复制粘贴的是整行)
十四,查找
/PATTERN 从光标处往尾部查找 从前往后查 (支持正则表达式)
?PATTERN 从光标处往首部查找 从后往前查 (支持正则表达式)
n 表示下一个
N 表示下一个(倒过来)
十五,查找并替换 (末行模式下)
:s 用法与 sed 一模一样
ADDR1,ADDR2S@PATTERN@string@gi
例子 :.,$-1s/he/HE/g
当前行至倒数第二行的所有的he 替换成 HE
[root@ebs-22618 ~]# cp /etc/inittab ./
[root@ebs-22618 ~]# vim inittab
[root@ebs-22618 ~]#
[root@ebs-22618 ~]# vim +12 inittab 打开这个文件的时候 处于 第12行
[root@ebs-22618 ~]# vim + inittab 一个加号 表示处于文件的最后一行
[root@ebs-22618 ~]# vim +/initdefault inittab 定位到第一个 initdefault 所在处
[root@ebs-22618 ~]# cp /etc/rc.d/rc.sysinit ./
[root@ebs-22618 ~]# vim rc.sysinit