馬哥教育網絡班N22期+第6周課程練習

一、總結vim編輯器的使用方法

vim文本編輯器

全屏編輯器,模式化編輯器

vim的教程文件命令:vimtutor

vim pathtosomefile

vim模式:

編輯模式(命令模式),默認模式

輸入模式

末行模式

內置的命令行接口;

模式轉換:

編輯模式—>輸入模式:

iinsert, 在光標所在處前方輸入,轉為輸入模式

aappend,在光標在處后方輸入,轉為輸入模式

o:在當前光標所在行的下方,新建一行,并轉為輸入模式

I:在當前光標所在行的行首,轉換為輸入模式

A:在當前光標所在行的行尾,轉換為輸入模式

O:在當前光標所在行的上方,新建一行,并轉為輸入模式

輸入模式—>編輯模式

esc

編輯模式—>末行模式

末行模式—>編輯模式

esc

vim編輯的打開和關閉操作

打開文件

語法格式:vim [options] [file ..]

技巧:

vim :打開文件,并定位與文本最后一行

vim + 文件路徑;直接光標出現在#行

vim+/pattern:打開文件,定位至第一次被pattern匹配到的行的行首

關閉文件

1.末行模式下關閉文件

q,退出

wq,保存并退出

q!,不保存并退出

w,保存

w /PATH/TO/SOMEFILE:另存為

w!,強行保存

x:保存并退出

2.編輯模式下關閉文件

ZZ:保存并退出

使用vim編輯多個文件

vim file1 file2 file3

next 切換至下一個文件

prev:切換至前一個文件

last 切換至最后一個文件

first 切換至第一個文件

qa,表示全部退出

:wqall 保存所有文件并退出;

:wall                  

:qall

分窗口顯示多個文件

vim o file…:水平分隔顯示,vim o file1 file2

vim O file…:垂直分割顯示

ctrlw進行文檔切換

窗口拆分顯示同一個文件

ctrlw,s:水平拆分窗口

ctrlw,v:垂直拆分窗口

在窗口間切換光標:ctrlw,arrow(鍵盤左右鍵)

vim編輯模式操作

移動光標(編輯模式下)

1、逐字符移動:

h:左

l:右

j:下

k:上

command:移動#個字符

2、以單詞為單位移動

w:移至下一個單詞的詞首

e:跳至當前或下一個單詞的詞尾

b:跳至當前或前一個單詞的詞首

command:支持添加數字組合,實現跳#個單詞

3、行內跳轉

0:絕對行首

^:行首的第一個非空白字符

$:絕對行尾

4、行間跳轉

G:直接跳轉至第#行

1G, gg:跳轉至第一行;

G:最后一行

末行模式下,直接給出行號即可

5、句間跳轉

6、段間跳轉

{

}

翻屏操作:

編輯模式下:

ctrl f:向下翻一屏

ctrlb:向上翻一屏幕

ctrld:向下翻半屏

ctrlu:向上翻半屏

Enter:按行向后翻

刪除單個字符

x:編輯模式下,刪除光標所在處的單個字符

x:刪除光標所在處及向后的共#個字符

刪除命令:d

d命令根跳轉命令組合使用

dw

de

db

d$

d^

dd:刪除當前光標所在行

dd:刪除光標所處的行起始的共#行;

末行模式下:

started,endadd

.:表示當前行

$:最后一行

+#:向下的#行

交換光標所在處的字符與其后面的字符的位置

xp

替換字符

替換光標所在處的字符;:r CHAR

R:替換模式

復制命令y

用法同d命令

y$          

y^

y0

ye

yw

yb

#COMMAND

yy:復制一整行

#yy:復制#

粘貼命令p

p:小寫p表示如果刪除或復制的為整行內容,則粘貼至光標所在行的下方,如果復制或刪除的內容非整行,則粘貼至光標所在字符的后面

P:大寫p表示,如果刪除或復制為整行內容,則粘貼至光標所在行的上方,如果復制或刪除的內容為非整行,則粘貼至光標所在字符的前面

修改c:先刪除內容,再轉換為輸入模式

編輯模式 –> 輸入模式,實現刪除操作

用法同d

c$                    

c^

c0          

cb

ce

cw

#COMMAND

cc:刪除光標所在的行,并轉換為輸出模式;

#cc

撤銷命令,u

u:撤銷前一次的操作,可以撤銷此前的n次操作,最多50

撤銷前一次撤銷的操作:ctrlr

重復前一次編輯操作

.

可視化模式:實現自由選取的操作

v:按字符選取

V:按行選取

vim末行模式操作

1.快速框選內容段

start_pos[,end_pos]

#:特定的第#行,例如5即第5行;

.:當前行;

$:最后一行;

#,#:指定行范圍,左側為起始行,右側為結束行;

#,+#:指定行范圍,左側為超始行絕對編號,右側為相對左側行號的偏移量;

示例:3,+7   #表示第3行,框選之后的7

%:全文

/pattern/:從光標所在處起始向文件尾部第一次被模式所匹配到的行;

示例:/first/,$   #第一匹配frist的內容直到最后一行

/pat1/,/pat2/:從光標所在處起始,第一次由pat1匹配到的行開始,至第一次由pat2匹配到的行結束之間的所有行;

2.可同編輯命令一同使用,實現編輯操作:

y

c      

w /PATH/TO/SOMEFILE:將范圍內的文本保存至指定的文件中;

r  /PATH/FROM/SOMEFILE:將指定的文件中的文本讀取并插入至指定位置;

示例:/if/,/fi/d    #用來刪除匹配出的iffi的框定的內容刪除

3.查找

/PATTERN:從當前光標所在處向文件尾部查找能夠被當前模式匹配到的所有字符串;

?PATTERN:從當前光標所在處向文件首部查找能夠被當前模式匹配到的所有字符串;

n:下一個,與命令方向相同;

N:上一個,與命令方向相反;

4.查找并替換

使用格式:

s/要查找的內容/替換為的內容/修飾符

可把分隔符替換為其它非常用字符:

s@要查找的內容@替換為的內容@修飾符

s#要查找的內容#替換為的內容#修飾符

使用方法:

要查找的內容:可使用正則表達式;

替換為的內容:不能使用正則表達式,但可以引用匹配結果;\1,\2…(可以查看正則表達式)

如果要查找的內容部分在模式中使用分組符號:在替換為的內容中使用后向引用;

直接引用查找模式匹配到的全部文本,要使用&符號;

修飾符:

i:忽略大小寫;

g:全局替換,意味著一行中如果匹配到多次,則均替換;

&:引用模式匹配整個串添加字符串

示例:

%s@\<t\([[:alpha:]]\+\)\>@T\1@g 

解釋:%表示快速框選的全文,s表示末行模式下的替換功能,@為內容段的分隔符

\<t\([[:alpha:]]\+\)\> :正則表達式,匹配錨定以t為詞首的單詞

T\1  :將前面匹配到的內容后向引用替換為T

g:表示全局替換

示例:%s@\<t[[:alpha:]]\+\>@&er@g

示例:%s@\<t[[:alpha:]]\+\>@&er@g

講當前文件中部分內容另存為另外一個文件

末行模式下使用w命令

adder,adder /patch/to/somefile

將另外一個文件的內容填充在當前文件中

r patchto/somefile

shell交互,不用退出執行命令

:!command

高級進階設定(末行模式,當前有效)

1.顯示或取消顯示行號

set nu

set nonu

2、顯示忽略或區分字符大小寫

ignorecase

set ic

3、設定自動縮進

set autoindent

簡寫為:set ai

取消:set noai

4、查找到的文件高亮顯示或取消

set hlsearch

set nohlsearch

5、語法高亮

syntax on

syntax off

6、獲取幫助

help

:help subject

vim配置文件,實現高價進階配置永久有效

etc/vimrc,全局配置

~/.vimrc,家目錄下個人配置文件

vim tutor教程命令

    習題:

1、復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首加#;

cp /etc/rc.d/rc.sysinit /tmp

vim 末行模式下

:%s@^[[:space:]]\+@#@g

2、復制/boot/grub/grub.conf至/tmp目錄中,刪除/tmp/grub.conf文件中的行首的空白字符;

cp /boot/grub/grub.conf /tmp

vim 末行模式下

:%s@^[[:space:]]\+@@g

3、刪除/tmp/rc.sysinit文件中的以#開頭,且后面跟了至少一個空白字符的行行的#和空白字符;

vim 末行模式下

:%s@^[#][[:space:]]\+@@g

4、為/tmp/grub.conf文件中前三行的行首加#號;

:1,3s@^@#@g

5、將/etc/yum.repos.d/CentOS-Media.repo文件中所有的enabled=0或gpgcheck=0的最后的0修改為1;

:%s@\(enabled\|gpgcheck\)=0@\1=1@g

6、每4小時執行一次對/etc目錄的備份,備份至/backup目錄中,保存的目錄名為形如etc-201504020202

crontab -e

0 */4 * * * filepath=/backups/etc-$(date +\%Y\%m\%d\%H\%M);mkdir -p ${filepath};cp -rf /etc ${filepath};

7、每周2,4,6備份/var/log/messages文件至/backup/messages_logs/目錄中,保存的文件名形如messages-20150402

crontab -e

* * * * 2,4,6 filepath=/backups/messages_logs/messages-$(date +\%Y\%m\%d);mkdir -p ${filepath};cp -rf /var/log/messages ${filepath};

8、每天每兩小時取當前系統/proc/meminfo文件中的所有以S開頭的信息至/stats/memory.txt文件中

crontab -e

* */2 * * * grep "^S" /proc/meminfo >>/stats/memory.txt

9、工作日的工作時間內,每兩小時執行一次echo ""howdy""

crontab -e

0 9-18/2 * * * echo ""howdy""

腳本編程練習

10、創建目錄/tmp/testdir-當前日期時間;

#!/bin/bashmkdir /tmp/testdir-$(date +\%Y\%m\%d)

11、在此目錄創建100個空文件:file1-file100

#!/bin/bashmkdir /tmp/testdir-$(date +\%Y\%m\%d)for i in {1..100};do
    touch file${i}done

12、顯示/etc/passwd文件中位于第偶數行的用戶的用戶名;

方法一:
sed -n '2~2p' /etc/passwd
方法二:
sed -n 'n,p' /etc/passwd

13、創建10用戶user10-user19;密碼同用戶名;

#!/bin/bashfor i in {10..19};do
    useradd user${i}
    echo user${i} | passwd --stdin user${i}done

14、在/tmp/創建10個空文件file10-file19;

#!/bin/bashfor i in `seq 10 1 19`;do
    touch file${i}done

15、把file10的屬主和屬組改為user10,依次類推。

#!/bin/bashfor i in `seq 10 1 19`;do
    touch file${i}
    chown user${i}:user${i} /tmp/file${i}done

原創文章,作者:N22-武漢-enfp,如若轉載,請注明出處:http://www.www58058.com/50005

(0)
N22-武漢-enfpN22-武漢-enfp
上一篇 2016-10-09 09:05
下一篇 2016-10-09 09:06

相關推薦

  • Linux基于OpenSSL實現私有CA構建

    前言 隨著互聯網的迅猛發展,網絡通信已經成為傳遞信息的主要途徑。而通信時的數據傳輸大部分卻是明文傳輸的,在網絡這個不安全的環境下,如果沒有一套數據加密機制,就會導致敏感信息和重要數據泄露,引起不可估量的損失。而OpenSSL正好彌補了這一缺憾,那什么是OpenSSL呢?OpenSSL是一套強大的具有加密功能的組件,它包含libcrypto(公共加密庫)、li…

    Linux干貨 2015-04-13
  • 運維工程師技能需求排行

    這是我今天在拉勾網搜索運維,翻完了4四頁也招聘信息之后得到的,我的目的是想要看看之后的學習,哪個更應該成為重點,有些在我意料之中,有些還真的沒想到,算是努力了一個小時的收獲吧,分享給大家。
    注意:其中的看法僅代表個人觀點,很多都是依靠我自己的學習經驗和工作經驗累積的

    Linux干貨 2017-12-12
  • user相關的一些命令及用法

    前言            我們知道,當我們進入一家公司做運維方面的工作的時候,我們需要對公司的服務器進行監控管理,換句話說,我們需要一個身份來操作服務器。那么我們又知道,linux系統下擁有最高權限的管理員是Root,它無所不能,無所畏懼,那么公司肯定就是不會把這個賬戶交給你使用。那么就引出一個概…

    2017-07-22
  • Linux高級文件系統管理之磁盤配額、RAID和LVM的使用

    磁盤配額Quota 磁盤配額(Quota)的作用:   在Linux系統中,由于是多用戶、多任務的環境,所以會有多用戶共同使用一個硬盤空間的情況發生,如果其中有少數幾個用戶大量占掉了硬盤空間的話,那肯定影響其他用戶的使用權限。因此管理員應該適當限制硬盤的空間給用戶,以妥善分配系統資源。 磁盤配額的一般用途    比較常使用的幾種…

    Linux干貨 2016-09-02
  • 詳解LAMP源碼編譯安裝

    詳解LAMP源碼編譯安裝 LAMP簡介 LAMP是當下非常流行的一套Web架構,我們可以在GNU/Linux下通過其他人打包的程序包來進行安裝; 但是在生產環境中,很多時候都需要我們自己定制安裝AMP,編譯安裝LAMP有以下幾個優點 根據生產環境靈活定制程序 優化編譯參數,提高性能 解決不必要的軟件依賴 一、準備工作 卸載yum或rpm安…

    Linux干貨 2016-10-16
  • 硬軟鏈接的區別 節點 以及重定向和管道

    INODE全稱叫index node 表中包含文件系統所有文件列表   一個節點是在一個表項 包含有關文件的信息 ( 元數據 ) 包括: 文件類型,權限,UID,GID 鏈接數(指向這個文件名路徑名稱個數) 該文件的大小和不同的時間戳 指向磁盤上文件的數據塊指針 有關文件的其他數 1 文件引用一個是 inode號   2 我們是通過文件名…

    Linux干貨 2016-08-12

評論列表(1條)

  • luoweiro
    luoweiro 2016-10-11 23:18

    vim總結的非常不錯,另外在vim中批量修改指定的字符串很熟練,贊

欧美性久久久久