vim的使用

来源:互联网 发布:java用户管理系统代码 编辑:程序博客网 时间:2024/06/05 14:45

一、vim

1.vim的异常退出

vim异常退出系统中会在所编辑的文件目录中生成.file.swpvim再次编辑此文件时会出现相应提示

"o"                                   open

"e"                                   edit

"r"                                    recover(恢复)

"d"                                   delete.swap file

"q"                                   quit

2.vim的命令模式下可以配置vim的工作方式

:set nu                                 行号添加 

:set nonu                             取消行号

:set mouse=a                      添加鼠标选择

:set cursorline                     行线显示 

以上设定都是临时的,因为每打开一次vim时,就是一个新的进程,故不会保留旧进程的vim工作方式。
永久设定方式
vim /etc/vimrc     
此文件为vim的配置文件,在此文件最后加入以上参数。然后wq退出保存。
注意:当不确定对vim配置文件的修改时,可以先将配置文件备份。
3.vim
命令模式下关键字搜索 

/关键字

n向下匹配

N向上匹配

                   
           高亮显示freya

4.vim命令模式下字符的管理
(1).
字符的复制

yl                                         复制一个字母

y3l                                       复制3个字母

yw                                       复制一个单词

y3w                                     复制3个单词

yy                                        复制一行

y3y                                     复制3

p                                         复制完成后按“P”粘贴

(2).字符的删除

dl                                        删除一个字母

d3l                                      删除3个字母

dw                                      删除一个单词

d3w                                    删除3个单词

dd                                       删除一行

d3d                                     删除3


(3).
字符的剪切

cl                                        剪切一个字母

c3l                                      剪切3个字母

cw                                      剪切一个单词

c3w                                    剪切3个单词

cc                                       剪切一行

c3c                                     剪切3

esc ---> p                           剪切过后会进入到插入模式,在执行粘贴动作时一定要退出插入模式

注意:u表示撤回前一个更改。
(4).vim
的可视化模式 
在命令模式下按“ctrl+v”进入到可视模式在可视模式下可以区域选择字符
可视模式下批量添加字符

*>> ctrl+v选中要加入字符所在列

*>> “I”进入插入模式,写入要加入的字符

*>> esc

批量更改后的内容:



(5).批量修改字符

:%s/原有字符/替换后字符              只替换每一行中出现的第一个原有字符




:%s/原有字符/替换后字符/g           替换所有




:1,ns/原有字符/替换后字符/g         替换1-n



$ 追加



4.vim的分屏功能

ctrl+w--> s                               上下分屏

ctrl+w--> v                               左右分屏

ctrl+w c                                   关闭光标所在屏幕

ctrl+w 上下左右                      光标移动到指定屏幕


:sp file2                                   同时编辑当前文件和file2


vimdiff file1name fie2name    vim里查看两个文件的不同


如:vimdiff  file1  file2 

注意:ctrlw同时按,再加上其他。
5.vim
光标移动

在命令模式下

:数字                        移动到指定的行

G                             文件最后一行

gg                            第一行

在插入模式下

i                              光标所在位置插入

I                              光标所在行行首

a                             标所在字符的下一个位置

A                             光标所在行行尾

o                             光标所在行下一行

O                            光标所在行上一行

s                             删除光标所在字符插入

S                            光标所在行插入

6.vim的退出模式

:q                           当用vim打开文件但没有对字符作任何操作时可直接退出

:q!                          当用vim打开文件并对字符作操作,放弃所有操作退出

:wq                        保存退出

:wq!                       强行保存退出,对超级用户及文件所有人生效


当文件提示是只读类型时,可以强制退出保存(对超级用户及文件所有人生效


7.vim手册

vimtutor                 vim的手册

:q                           退出vimtutor

二、管理输入输出

1.在系统中用普通用户做该实验,执行下述命令

例:find /etc -name passwd                                  -name表示按照姓名查找

因为student用户权限问题会有以下输出

find: ‘/etc/pki/CA/private’: Permission denied        因为普通用户没有进入权力,所以报错

find: ‘/etc/pki/rsyslog’: Permission denied

find: ‘/etc/audit’: Permission denied

/etc/passwd                                                           正确输出

find: ‘/etc/polkit-1/rules.d’: Permission denied

find: ‘/etc/polkit-1/localauthority’: Permission denied

find: ‘/etc/dhcp’: Permission denied

find: ‘/etc/selinux/targeted/modules/active’: Permission denied

find: ‘/etc/lvm/archive’: Permission denied

find: ‘/etc/lvm/backup’: Permission denied

find: ‘/etc/lvm/cache’: Permission denied

find: ‘/etc/grub.d’: Permission denied

/etc/pam.d/passwd                                                   正确输出

find: ‘/etc/audisp’: Permission denied

find: ‘/etc/firewalld’: Permission denied

find: ‘/etc/cups/ssl’: Permission denied

find: ‘/etc/ipsec.d’: Permission denied

find: ‘/etc/libvirt’: Permission denied

find: ‘/etc/sudoers.d’: Permission denied

find: ‘/etc/named’: Permission denied



上图表示/etc下的文件,标志“×”的就是普通用户没哟访问权限的文件。

linux系统中,正确输出的编号为1,错误输出编号为2

find /etc -name passwd > file          重定向正确输出(将错误输出通过字符设备显示在shell里,正确输出保存在file里)

错误输出显示在shell里:



正确输出保存在文件中:



find /etc -name passwd 2> file       重定向错误输出(将正确输出通过字符设备显示在shell里,错误输出保存在file里)

find /etc -name passwd &> file       重定向所有输出(将正确和错误输出都保存在file中,shell中不显示任何内容)

注意:将错误输出也保存在file中,当点击reload(重新加载)时,如下图,会将原来file中的文件覆盖。故>, 2> ,&> 都会覆盖源文件内容 ,附加“>file”表示清空file。

                  

                   覆盖原文件后,file内容变为:

                  

2.为解决覆盖源文件的问题,有下面解决方法

find /etc -name passwd >> file         追加正确输出

find /etc -name passwd 2>> file      追加错误输出

find /etc -name passwd &>> file      追加所有输出

注意:>> 2>> &>>不会覆盖源文件内容,会把相应的输出字符方到文件的最后
3.
管道(|)
 管道的作用是将前一条命令的输出变成管道后命令的输入
1ls /bin | wc -l        统计ls /bin 命令输出的行数

                

2)由于系统中错误的输出是无法通过管道的。所以用2>&1可以把错误的输出编号由2变成1
    比如 find /etc -name passwd 2>&1 | wc -l            显示正确输出和错误输出的总数

    
    find /etc/ -name passwd 2>&11>/dev/null |wc -l    
显示错误输出的个数

    
注意:1>/dev/null 表示将正确输出重定向到根下的字符设备的空里(字符设备的内容用于显示与shell里)2>&11>/dev/null,按顺序执行,而一旦有输出就执行|wc -l,即先将错误输出转化为正确输出,每转化一次,就执行|wc -l,则错误输出的数目不断更新,直至2>&1执行结束。然后再执行1>/dev/null每次执行都没有输出,故不执行|wc -l,那么最后就统计出错误输出的数目了。如果调换顺序,如find /etc/ -name passwd 1>/dev/null 2>&1  |wc -l,表示先执行1>/dev/null,没有输出,故|wc -l0,将所有正确输出(1)都重定向到/dev/null后,再执行2>&1,将所有错误输出都转化为正确输出,然后将转化的正确输出再重定向到/dev/null,最后|wc -l的结果就是0,如上图。
      

3tee   复制输出到指定位置
  date |tee file |wc -l   tee
命令复制date命令的输出到file中,并统计输出行数

   

三、gedit 

1.快捷键

                    ctrl+n                         gedit中打开一个新的tab     

ctrl+s                         保存文件

ctrl+o                          打开文件

ctrl+x                         剪切字符

ctrl+v                          粘贴字符

ctrl+c                          复制字符

yelp help:gedit           gedit的图形手册

2.

                      <                                  输入 

cat  >>文件名<<end     向文件内追加内容 



注意:end表示结束标志,即当在shell中输入end时,在file里追加的内容截止。
3.更改密码

root身份更改普通用户密码

passwd student <<end

>密码

>密码

>end