馬哥教育網絡班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
下一篇 2016-10-09

相關推薦

  • bash 循環語句while、until練習

    bash 循環語句while、until while練習題          1、求100以內所有正整數之和     2、通過ping命令探測172.16.250.1 – 254范圍內的所有主機的在線狀態,統計在線主機和…

    Linux干貨 2016-08-19
  • 淺談vim使用

    vim常用命令總結 2013年10月12日 ? 綜合 ? 共 3264字 ? 字號 小 中 大 ?  評論關閉        vim 選擇文本,刪除,復制,粘貼   文本的選擇,對于編輯器來說,是很基本的東西,也經常被用到,總結如下: v    從光標當前位置開始,光標所經過的地…

    Linux干貨 2016-08-12
  • egrep及文本處理工具十三道實例

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。 2、編輯/etc/group文件,添加組hadoop。 3、手動編輯/etc/passwd文件新增一行,添加用戶hadoop,其基本組ID為hadoop組的id號;其家目錄為/home/hadoop。 4、復制/etc/sk…

    2018-03-20
  • 初窺門徑shell腳本

    1.什么是shell腳本    首先它是一個腳本,并不能作為正式的編程語言。因為是跑在linux的shell中,所以叫shell腳本。確切的說shell腳本就是一些命令的集合。 2.寫腳本前的一些細節及建議   Shell腳本通常都是以.sh 為后綴名的,這個并不是說不帶.sh這個腳本就不能執行,只是大家的一個習慣而已…

    Linux干貨 2016-08-15
  • 馬哥教育網絡班21期+第2周課程練習

    1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。 目錄及文件命令 pwd:打印當前工作路徑(絕對路徑),并且有相應的環境變量PWD表示。 cd:切換目錄 ~用戶家目錄 ..當前目錄的父目錄 .當前目錄 -上次所在的目錄。 ls:查看目錄下內容,常用選項 -a 列出目錄下所有文件和目錄;-d 只顯示目錄本身屬性信息;-h 文件大小單…

    Linux干貨 2016-07-17
  • vsftpd相關應用解析

    FTP(File Transfer Protocol)文件傳輸協議 FTP 是 TCP/IP 協議組中的協議之一。該協議是Internet文件傳送的基礎,它由一系列規格說明文檔組成,目標是提高文件的共享性,提供非直接使用遠程計算機,使存儲介質對用戶透明和可靠高效地傳送數據。簡單的說,FTP就是完成兩臺計算機之間的拷貝,從遠程計算機拷貝文件至自己的計算機上,稱…

    2017-06-06

評論列表(1條)

  • luoweiro
    luoweiro 2016-10-11 23:18

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

欧美性久久久久