第六周總結VIM編輯器的使用并完成練習題

第六周 總結VIM編輯器的使用并完成練習題

1. VIM是什么?

VIM(Vi IMproved)是從vi發展出來的一個文本編輯器。


2.為什么要使用VIM?

VIM有代碼補完,編譯以及錯誤跳轉等方便編程的功能,在程序員中廣泛使用。對于大多數的用戶來說,VIM有著比較陡峭的學習曲線,但是一旦掌握一些基本操作之后,能大幅度提高編輯效率。VIM是類Unix系統用戶最喜歡的文本編輯器之一。


3.如何使用VIM?

介于VIM命令實在是太多及本人的時間有限,接下來就VIM的使用做盡可能的詳細介紹。讀者如想了解更多關于VIM的使用,可以在VIM中輸入不帶參數的“help”來閱讀幫助文檔。請讀者跟著下面的VIM使用介紹,動手實踐操作,切勿只是閱讀!

3.1 用VIM打開和退出文本文件
3.1.1 使用VIM打開文本文件
在shell命令行模式中輸入 vim FILENAME 即可用vim打開要編輯的文本文件。

3.1.2 退出VIM
退出VIM有多種方式:
a.保存退出 :wq b.不保存強制退出 :q! c.未編輯文本退出 :q

3.2 VIM模式 
VIM大致可分為三種模式:普通模式,編輯模式和命令模式。

3.2.1 三種模式之間的切換 
i鍵,在光標所在位置前插入,等待輸入。
a鍵,在光標所在位置之后添加,等待輸入。
o鍵,在光標所在行的下方添加新行,等待輸入。
I鍵,在光標所在行的行首,等待輸入。
A鍵,在光標所在行的行尾,等待輸入。
O鍵,在光標所在行的上方添加新行,等待輸入。
注意: 
a,用vim命令編輯文本時,默認處在普通模式中,按i,o,a任意一個按鍵可進入編輯模式。當編輯完成后,可按ESC鍵返回普通模式。
b,在普通模式下,按冒號“:”鍵可進入命令模式。同樣,在命令模式下返回普通模式按ESC鍵。
c,在編輯模式下想進入命令模式必須先返回普通模式。

3.2.2 在普通模式下移動光標
a,字符間移動光標 
h鍵,光標向左移動 
j鍵,光標向下移動 
k鍵,光標向上移動 
l鍵,光標向右移動

b,單詞間移動光標
w鍵,光標向行尾移動到下一個單詞的詞首。
e鍵,光標向行尾移動到當前或下一個單詞的詞尾。
b鍵,光標向行首移動到當前或上一個單詞的詞首。
注意:以上按鍵可以結合數字鍵一起使用。例如:2w表示光標向行尾移動兩個單詞。

c,行首行尾移動光標
^鍵,光標移動到行首的第一個非空白字符。
數字0,光標移動到行首。
$鍵,光標移動到行尾。

d,文本行鍵移動光標
1G或gg,光標移動到文本行的第一行。 
G,光標移動到文本行的末行。
注意:數字+G鍵,光標移動至指定數字的行。

e,句間移動光標
( 左括號,光標移動到上一句句首。
) 右括號,光標移動到下一句句首。
注意:數字鍵+括號鍵表示光標移動到數字鍵指定的句子的句首。例如:6(,表示光標向上移動6句。 f,段落間移動光標
{ 左花括號,光標移動到上一個段落段首。
} 右花括號,光標移動到下一個段落段首。
注意:數字鍵+花括號鍵表示光標移動到數字鍵指定的段落的段首。例如:3{,表示光標向上移動3個段落。

g,屏幕間移動光標
ctrl+d鍵,光標向下移動半屏。
ctrl+u鍵,光標向上移動半屏。
ctrl+f鍵,光標向下移動一屏。
ctrl+b鍵,光標向上移動一屏。

3.3 VIM的編輯命令
在編輯(普通)模式下編輯命令的格式是:operator [number] motion
operator,操作符,表示要做的事情,比如d代表刪除。 
[number],可以附加的數字,代表動作的重復的次數。
motion,動作,代表在所操作的文本上的移動,例如w代表單詞,$代表行末。

a,刪除字符命令
x鍵:刪除光標所在位置的單個字符。
[number]+x鍵,刪除光標所在位置向后[number]個字符。
xp組合鍵,交換光標所在位置的字符與其后面的字符。

b,替換字符命令
r鍵,替換光標所在位置的字符,按r鍵后輸入要替換的字符。

c,刪除字符命令
d鍵,結合[number]和motion實現范圍刪除。
d$組合鍵,刪除當前光標位置至行尾的所有字符。
d^組合鍵,刪除當前光標位置至行首的所有字符。
dw組合鍵,刪除當前光標位置至下一個單詞詞首之間的所有字符。
de組合鍵,刪除當前光標位置至單詞詞尾的所有字符。
db組合鍵,刪除當前光標位置至單詞詞首的所有字符。
dd組合鍵,刪除當前光標所在的行。
注意:d2w組合鍵或2dw組合鍵,刪除當前光標位置至下二個單詞詞首之間的所有字符。其他上述組合鍵亦可與[number]一起使用。

d,黏貼字符命令
小寫p鍵,如果緩沖區的內容是整行,則黏貼在當前光標所在行的下方。如果不是整行,則黏貼在當前光標所在位置的后方。
大寫P鍵,如果緩沖區的內容是整行,則黏貼在當前光標所在行的上方。如果不是整行,則黏貼在當前光標所在位置的前方。

e,復制字符命令
y鍵,結合[number]和motion實現范圍復制。
y$組合鍵,復制當前光標位置至行尾的所有字符。
y^組合鍵,復制當前光標位置至行首的所有字符。
yw組合鍵,復制當前光標位置至下一個單詞詞首之間的所有字符。
ye組合鍵,復制當前光標位置至單詞詞尾的所有字符。
yb組合鍵,復制當前光標位置至單詞詞首的所有字符。
yd組合鍵,復制當前光標所在的行。
注意:y2w組合鍵或2yw組合鍵,復制當前光標位置至下二個單詞詞首之間的所有字符。其他上述組合鍵亦可與[number]一起使用。

f,改變字符命令 c鍵,實現刪除操作并轉換成輸入模式,結合[number]和motion實現范圍改變。
c$組合鍵,改變當前光標位置至行尾的所有字符,并進入輸入模式。
c^組合鍵,改變光標位置至行首的所有字符,并進入輸入模式。
cw組合鍵,改變當前光標位置至下一個單詞詞首之間的所有字符,并進入輸入模式。
ce組合鍵,改變當前光標位置至單詞詞尾的所有字符,并進入輸入模式。
cb組合鍵,改變當前光標位置至單詞詞首的所有字符,并進入輸入模式。
cd組合鍵,改變當前光標所在的行,并進入輸入模式。
注意:c2w組合鍵或2cw組合鍵,改變當前光標位置至下二個單詞詞首之間的所有字符,并進入輸入模式。其他上述組合鍵亦可與[number]一起使用。

g,可視化編輯
小寫v鍵,按字符選定范圍,結合c,y,d鍵執行想要的編輯操作。 大寫V鍵,按行選定范圍,結合c,y,d鍵執行想要的編輯操作。

h,撤消操作
小寫u鍵,撤消上一次的編輯操作,可與[number]結合使用。
大寫U鍵,撤消光標所在行的所有編輯操作。
ctrl+r鍵,撤消此前撤消的編輯操作,也就是可以重新執行被撤消的編輯操作。
.點號鍵,重復執行前一次編輯操作。

i,配對各位括號 [],{},()
把光標移動到任何一個括號上,然后按%百分號鍵,即可找到配對的括號。在程序調試時,這個功能用來查找不配對的括號非常有用。

3.4 命令模式
3.4.1在普通模式中輸入:冒號可進入命令模式,可執行保存,讀入,合并文件等功能。 
a,輸入:w FILENAME,可將當前VIM中正在編輯的文件保存到名為FILENAME的文件中。 
b,先輸入v或V鍵選定范圍,然后輸入:w FILENAME,可將選定范圍的字符保存到FILENAME中。 
c,輸入:r FILENAME,可提取FILENAME并將其插入到當前光標所在位置的后面。
d,輸入:r !COMMAND,可讀取COMMAND命令的輸出結果并將其放置到當前光標所在位置的后面。

3.4.2 在命令模式下查找字符串 
/鍵,加上PATTERN可以用以在當前文本中,從當前光標所在位置向文件尾部查找該PATTERN。查找到第一個匹配字符串后按小寫n鍵,可查找下一個。
?鍵,加上PATTERN可以用以在當前文本中,從當前光標所在位置向文件首部查找該PATTERN。查找到第一個匹配字符串后按大寫N鍵,可查找上一個。

3.4.3 在命令模式下查找并替換 
輸入:s/OLD/NEW 表示在一行內替換頭一個字符串OLD為新字符串NEW。
輸入:s/OLD/NEW/g 表示在一行內替換所有個字符串OLD為新字符串NEW。
輸入[number],[number]:s/OLD/NEW/g 表示在第一個[number]行至第二個[number]行之間替換所有的字符串OLD為新字符串NEW。
輸入:%s/OLD/NEW/g 表示在全文中替換所有的字符串OLD為新字符串NEW。
輸入:%s/OLD/NEW/gc 表示在全文中替換所有的字符串OLD為新字符串NEW時詢問用戶確認是否替換。
注意1:[number],[number]是指定行范圍。
例如:
2,4 表示從第2行到第4行之間。
. 表示當前行。
$ 表示最后一行。 
5,$ 表示從第5行至最后一行之間。 % 表示全文。 注意2:s///g中間三個斜杠為分隔符可用@@@或###替換。

3.4.4 在VIM內部執行外部命令
輸入:!COMMAND 即可執行外部命令,按鍵結束命令,回到VIM。
例如:
!ls 列舉出當前目錄的內容
!rm FILENAME 刪除名為FILENAME的文件


第六周練習題

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

%s@^([[:space:]]+)@#\1@

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

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

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

%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。

[root@www ~]# crontab -e
0 */4 * * * root cp -r /etc/ /backup/etc-$(date +%Y%m%d%H%M)

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

[root@www ~]# crontab -e
0 * * * Tue,Tur,Sat root cp /var/log/messages /backup/messages_logs/messages-$(date +%Y%m%d)

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

[root@www ~]# crontab -e
0 */2 * * * root grep “^S” /proc/meminfo >> /stats/memory.txt

9,工作日的工作時間內,沒兩小時執行一次echo “howdy”。

[root@www ~]# crontab -e
0 9-18/2 * * 1-5 root echo “howdy”

腳本編程練習

10,創建目錄/tmp/testdir-當前日期時間。

#!/bin/bash
mkdir /tmp/testdir-$(date +%Y%m%d%H%M%S)
[root@www scripts]# bash -x mkdir2.sh
++ date +%Y%m%d%H%M%S
+ mkdir /tmp/testdir-20170902155548

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

#!/bin/bash
for num in `seq 1 100`; do
    touch /tmp/testdir-20170902155548/file$num
done

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

#!/bin/bash

sed '1~2d' /etc/passwd | cut -d : -f 1
[root@www scripts]# bash -x even.sh
+ cut -d : -f 1
+ sed 1~2d /etc/passwd
bin
adm
sync
halt
uucp
games
ftp
dbus
abrt
ntp
postfix
tcpdump
archlinux
rpcuser
apache
redhat
ubuntu
slackware
gentoo
user1
chrooter
bash
basher

原創文章,作者:ZhengBin,如若轉載,請注明出處:http://www.www58058.com/85975

(3)
ZhengBinZhengBin
上一篇 2017-09-02
下一篇 2017-09-02

相關推薦

  • 網絡管理

    網絡管理 本章內容 網絡概念 OSI模型 網絡設備 TCP/IP IP地址 配置網絡 實現網絡組 測試網絡 網絡工具 為linux網卡配置ip地址,不是給網卡配置地址,是給內核的網絡功能配置,地址是屬于內核。為內核配置即時生效,修改配置文件,是永久生效。ifconfig 配置信息,會立即生效,但是重啟網絡服務或主機,都失效。網絡服務/etc/init.d/n…

    Linux干貨 2016-09-05
  • keepalived高可用haproxy配合varnish實現wordpress的動靜分離

    haproxy和nginx都可以作為七層和四層反代服務器對外提供服務,此文通過haproxy和keealived配置varnish搭建wordpress的動靜分離站點 一、實驗環境 五臺虛擬機: haproxy-1:搭建haproxy和keepalived服務,ip地址:192.168.11.176 haproxy-2:搭建haproxy和keepalive…

    2017-07-03
  • Linux任務計劃

    Linux任務計劃主要分為分為兩種分別是一次性任務計劃和周期性任務計劃實現工具主要是at和crontab下面將詳細介紹任務計劃工具的使用。 1、at命令一次性任務計劃 at命令是由atd服務提供的其主程序包是atd在CentOS6上可以使用service atd start命令來啟動在CentOS7上需要使用systemctl start atd.servi…

    Linux干貨 2016-09-11
  • ?grub應用之提供單獨bash系統

    grub應用之提供單獨bash系統     1.掛載新硬盤,并創建好三個分區,第一分區為boot分區,第三分區為根分區              2.創建掛載目錄,并掛boot分區   &n…

    Linux干貨 2017-01-13
  • cat命令了解

    1 查看文件在LINUX下一切皆文件,光看見文件名和目錄名對我們來說,還遠遠不夠。今天,就來介紹一下可以打開文件的命令cat。當然,二進制的可執行文件,不能用cat。在CentOS7下,以/etc/profile文件為例,如下: 首先,怎么打開這個文件呢?直接執行:cat /etc/passwd. 這么多行,能不能看見行號呢?cat -n /etc/pass…

    Linux干貨 2017-04-03
  • Homework Week-2 Linux文件管理

    1、Linux上的文件管理命令都有哪些,其常用的使用方法及其相關示例演示。 文件管理工具:cp, mv, rm         cp命令:copy  源文件  目標文件                單源復制:cp [O…

    Linux干貨 2016-08-22

評論列表(1條)

  • 馬哥教育
    馬哥教育 2017-10-10 13:10

    再接再勵 。

欧美性久久久久