首页 > 代码库 > Vim 基础
Vim 基础
文本编辑类型:
全屏编辑器: Vim, Vi, Nano
行编辑器: sed
打开操作:
+#:打开文件直接让光标处于第#行, 直接使用+,会在文件最末尾
编辑操作:
i(insert), a(append), o(open打开一个新行) , I (行首输入),A(行尾) ,O(上方打开 一个新行) ,c (change),C
#command:一次跳过指定的字符
单词间跳转w(下一个), b(前一个), e(当前或下一个)
^ 行首第一个非空白字符
0 行首
$ 行尾
行间移动
#G:跳转到#指定行
G:最后一行
gg, 1g:第一行
( ) :句间移动
{}:行间移动
编辑命令
x:删除光标处的字符
#x: 删除光标所在处的后#几个字符
p: 粘贴
d: 删除 d$, d0,dw ,de ,dw,db,d^
dd:删除所在行
p: 粘贴当前行的所在行的下方
P:粘贴当前行的所在行的上方
y:复制(yank):
ye ,yw, yb
yy:复制行
#yy 复制多行
改变命令
c:修改
编辑命令 --- 输入命令
替换命令
r:替换光标所在处的字符(不常用 ) 如ra 替换bbc 为abc
可视化模式
v:按字符选定
V:按行选定
撤销操作
u(undo):撤销此前操作
撤销撤销: ctrl +r (restore)
翻屏操作:
ctrl +f
ctrl + b
ctrl + d 向尾部翻半屏
ctrl + u 向首部翻半屏
vimtutor 教程
vim末行模式
内建
地址定界
:start_pos,end_pos例如1,3从1到3 行
.:当前行
$:最后一行
%:全文 相当于1,$
/pat1/,/pat2/:从第一次被 pat1 匹配到的行到第一次被pat2匹配到的结束
查找
/pattern 从当前光标所在处向文件尾部查找
?pattern 从当前光标所在处向文件首部查找
n:与命令同方向
N:与命令反方向
查找与替换
s: 在末行模式操作
s/要查找的内容/替换为的内容/修饰符
可以使用模式
修饰符:i 忽略大小写
g:全局替换,默认情况下,每一行只替换第一次出现.例如 1,$s/e\(..\)0/E\1O/g, %s/r..t/&er/g(&为引用前面的r..t)
可以替换分隔符为#,@,等
多文件模式
vim file1 file2,file3 ....
:next
:prev
:first
:last
:wall
:qall
窗口分割模式:
vim -o|-O FILE1 FILE2
-o水平分割
-O:垂直分割
在窗口间切换:ctrl + w, arrow
在单文件切割: ctrl +w ,s,水平分割, ctrl +w ,v,垂直分割
定制VIM的工作特性
全局:/etc/vimrc
个人:~/.vimrc
末行:当前进程有效
显示等号:set nu set nonu
匹配:set showmatch简写 set sm , set nosm
自动缩进:set ai set noai
高亮搜索: set hlsearch highlight set nohisearch
语法高亮: syntax on syntax off
忽略大小写: set ic set noic
bash 测试
-e:文件是否存在
存在及类别测试
-b: 存在且为块设备文件 -p -c -S -l -d -h
-z:如果 string 的长度为 0 则为真。
-nt :file1 新于 file2 , -ot :file1 旧于 file2
文件查找:在文件系统上找到符合条件的文件
文件查找:locate, find
非实时查找:locate(依赖于是否存在索引,索引构建过程需要遍历整个根文件系统,消耗系统资源。查找速度快,模糊查找。)
locate 要查找的文件file
实时查找:find.通过遍历指定路径下的文件系统完成文件查找。查找速度略慢,精确查找
find [OPTION] 查找路径 查找条件 处理动作
查找路径:指定具体查找路径,默认为当前目录
查找条件:默认为找出指定路径下的所有文件
-name "文件名称", 支持glob * . ? find ./ -name "*.sh"(严格区分文件大小写) -iname:忽略大小写
-regex "模式" : 支持使用正则表达式。
-user USERNAME :查找指定用户的文件 find ./ -user cwb -ls
-group GROUPNAME
-uid UserID -gid Gid
-nouser:用户被删除了,没有属主的文件
-nogroup 这些操作应该去做,找到将其删除,防止别人趁虚而入
-type TYPE: f d l s b c p
组合查找 -not -a -o # find ./ -type f \( -user cwb -o -user root \) -ls 如果整个条件取反时, -a 要变- o 或者-o变成-a
根据大小来查找
-size [+|-] k m g
#UNIT :(#-1, # ]
-#UNIT :(#-1, # ]
+#UNIT :(#-1, # ] ,以上的都算
根据时间戳查找
以天查找 -atime
-ctime
-mtime find ./ -mtime +3 3天之前修改过的, -3 3天修改过的
以分钟 -amin -cmin -mmin
-perm 精确查找 find ./ -perm 644 -ls (精确匹配权限)。find ./ -perm /+222 -ls(至少有222权限中的一个) find ./ -perm /-222 -ls(每一类对象都必须同时拥有为其指定的权限标准)
-print :显示到屏幕
-ls 找到的文件执行"ls -l"
-delete 删除找到的文件
-fls /path/to/somefile :查找到所有文件的长格式信息保存到指定文件中
-ok COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令(交互式的,要求用户确认) {}:用于查找到文件名称自身。 find ./ -cmin -5 -exec mv {} {}.new \;
-exec COMMAND {} \;
find . -name "*.txt" -print 在当前目录中查.txt文件并显示
find . -name "[A-Z]*" -print 查以大写字母开头的文件
find . -name "[a-z][a-z][0--9][0--9].txt" -print 查以两个小写字母和两个数字开头的txt文件
find . -size +1000000c -print 查长度大于1Mb的文件
find . -size 100c -print 查长度为100c的文件
find . -size +10 -print 查长度超过期作废10块的文件(1块=512字节)
find . -name "host*" -print 查以host开头的文件
find . -name "ap*" -o -name "may*" 查找以ap或may开头的文件
find . -name "tom.txt" [!] -ftype vfat 查找名称为tom.txt且文件系统类型不为or为vfat的文件
find . -name "wa*" -type l 查找名为wa开头且类型为符号链接的文件
find . [!] -type d -print 查找非目录或者目录文件
find . -empty 查找大小为0的文件或空目录
find . -name "passwd*" -exec grep david {} \ 看是否存在david用户
find . -perm 755 -print -exec ls -l {} \ 查所有用户都可读写执行的文件
find . -name "tmp.txt" -exec cat {} \ 查找temp.txt文件并查看
find . -name "tmp.txt" -ok rm {} \ 查找temp.txt文件并删除
find . -mtime -2 在.下查最近两天内改动过的文件
find . -atime -1 查1天之内被存取过的文件
find . -mmin +60 在.下查60分钟前改动过的文件
find . -amin +30 查最近30分钟前被存取过的文件
find . -user david 列出.目录内属于用户david的文件或目录
find . -uid +501 列出.目录内用户的uid大于501的文件或目录
find . -group david 列出.组内为david的文件或目录
find . -gid 501 列出.组内id为501的文件或目录
# find /etc/ -not -perm /+222 -ls 都没有写权限。
suid sgid sticky chmod 4777 /tmp/a.txt
本文出自 “祝融与火” 博客,请务必保留此出处http://notezr.blog.51cto.com/9424982/1918420
Vim 基础