前言:这些是vim最常用的命令!记住了会提高效率的《Mr.Robot》
----------------------------------------------------
vim需要的常用命令:
d G 全部删除
i 当前编辑
o 新起一行编辑
gg 行首
G 行尾
10 gg 跳转到第十行
10 回车 向下跳转10行
u 撤销
ctrl r 反撤销
yy 复制
p 粘贴
wq 保存退出
x 保存退出
搜索 /
替换
5,10s/111/222/g
%s/xiang/ling/g
注释所有的行: :%s/^/#/g
命令行模式 :
:set nu(显示行号)
:set paste(粘贴时格式对其)
:set autoindent(自动缩进)
/etc/vimrc 全局,所有用户,永久有效
~/.vimrc 对自己,永久有效
可以将下面的命令,写到全局配置中
自动缩进 :set autoindent / set cindent
设置高亮 :syntax on
设置行号 :set nu
自动加入文件头信息
粘贴时自动对齐:set paste 取消自动对齐 set noai
---------------------------------------------------------------详细
Linux:使用文本文件来保持配置文件
文本编辑器:ASCII文件
emacs vi
vi:Visual Interface
全屏文本编辑,nano
模式化的编辑器
moduler
vim :vi improved
vi的模式:
编辑模式:键盘操作通常被解析为编辑命令:
输入模式:
末行模式:vim的内置的命令行接口,执行vim内置命令
编辑模式-->输入模式
i:当前光标处输入内容
I:在当前光标所在行的行首
a:在当前光标所在处的后面
A:在当前光标所在行的行尾输入
o:在光标所在行的下方新增一行空白行
O:在光标所在行的上方新增一行空白行
输入模式-->编辑模式
ESC
编辑模式-->末行模式
:
末行模式-->编辑模式
ESC,ESC
vi命令的使用格式
vim [options] /path/to/file
退出:
:q!强制退出,不保存并退出
:wq 保存修改并退出
:x,保存并退出
编辑模式:ZZ,保存退出
打开:
多文件跳转
:next 下一个
:prev 上一个
:first 第一个
:last 最后一个
:qall 退出所有的文件
:wqall:修改并退出多个文件
分隔窗口打开多个文件
-o:水平分隔
ctrl+w,左右箭头
-O:垂直分隔
ctrl+W,上下箭头
+#:打开文件后在第#号行首
+:打开文件后在最后一行
光标移动:
单字符移动:
h:左
l:右
j:下
k:上
可以和数字组合
单词间移动:
w:调至下一个单词的词首
b:当前或前一个的词首
e:当前或下一个词的词尾
行内移动:
0:绝对行首
^:第一个非空白字符
$:绝对行尾
句子间移动:
):上一句
(: 下一句
段落间移动:
}:上一段
{:下一段
行间移动:
#G:第几行
G:最后一行
编辑操作:
x:删除光标所在处的字符
#x:删除光标所在处向后的#个字符
r:替换光标所在处的字符
d:删除命令
结果光标跳转命令使用
%:全部
dd:删除一行
#dd:删除所在行后的#行
末行模式:范围定界
start,end:可以使用绝对定界,也可以使用相对定界
.:表示当前行
$:最后一行
$-2:倒数第3行
/pat1/,/pat2/:起始处为光标所在行
c:改变
跟d一样操作
y:yank,复制
跟d一样操作
p:paste 粘贴
复制或删除的是整行
p:当前行的下一行
P:当前行的上一行
复制或删除的为非整行
p:粘贴在光标所在字符的后面
P: 粘贴在光标所在字符的前面
撤销编辑
u:undo
#u:最近50次操作
撤销此前的撤销操作
ctrl+r:
重复执行此前的命令:
.
翻屏:
ctrl+f:向文件尾部翻一屏
ctrl+b:向文件首部翻一屏
ctrl+d:向文件尾部翻半屏
ctrl+u:向文件首部翻半屏
Enter:下一行
k :上一行
查找:
/keyword
?keyword
n:
N:
支持正则表达式
:set nohlsearch 关闭高亮显示,对当前shell有效
vim的可视化模式
编辑模式:
v:按照光标走过的区域选择
V:选择矩形块
vim可视化模式:
v: 按光标走过的区域选择
V: 选择矩形块
打开多个文件,分窗口:
vim -o
vim -O
Ctrl+w, 上下箭头
分割当前窗口:
Ctrl+w, s
Ctrl+w, v
窗口属性的定义:
:set nu
:set nonu
:set ai 自动缩进
:set noai
:set ic
:set noic
显示对应的括号
:set sm (show match)
:set nosm
语法高亮:
:syntax on
:syntax off
搜索高亮:
:set hlsearch
:set nohlsearch
vim的配置文件:
全局:/etc/vimrc
个人:~/.vimrc
查找替换:
:地址定界s/查找模式/替换为的内容/gi
g:全局替换
i:不区分大小写
:地址定界s@查找模式@替换为的内容@gi
&:用于在替换为的内容部分中引用前面匹配到的所有内容
练习:
1.复制/etc/grup.conf至/tmp目录,删除/tmp/grub.conf文件中行首的空白符
:%s\^[[:space:]]\{1,\}\\g
2.复制/etc/rc.d/rc.sysinit至/tmp目录。将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行,行首加#号
:%s@^[[:space:]]\{1,\}.*@#&@g
3.删除/tmp/rc.sysinit文件中以#开头且后面跟了至少一个空白字符的行的行首的#和空白符
1,%s@^#[[:space:]]\{1,\}@@g
4.为/tmp/grub。conf文件中的前三行的行首加#号
1,3s@^@#@g
5.将/etc/yum.repos.d/CentOS-Media.repo中enable=0一行最后的0改为1;
%@\(enabled=\)[0-9]@\11@g
bash知识点:文件测试
[]
[[]]
test
单目测试:
-e file :测试文件是否存在
-a file :测试文件是否存在
-f file: 测试是否为普通文件
-d 目录: 测试是否为目录文件
-b somefile : 测试文件是否存在并且是否为一个块设备文件
-c somefile : 测试文件是否存在并且是否为一个字符设备文件
-h|-L somefile : 测试文件是否存在并且是否为符号链接文件
-p somefile : 测试文件是否存在并且是否为管道文件:
-S somefile : 测试文件是否存在并且是否为套接字文件:
-r somefile: 测试其有效用户是否对此文件有读取权限
-w somefile: 测试其有效用户是否对此文件有写权限
-x somefile: 测试其有效用户是否对此文件有执行权限
-s somefile: 测试文件是否存在并且不空
双目测试:
file1 -nt file2 :测试file1是否比file2更 新一些
file1 -ot file2 :测试file1是否比file2更 老一些
在脚本中使用source命令倒入别的文件
[ -r 配置文件 ] && cource 配置文件
bash的知识点:位置参数轮替
shift
#!/bin/bash
sum=0
for i in `seq 1 $#`;do
let sum+=$1
shift
done
echo $sum
~