首页 > 代码库 > 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 基础