久久国产乱子伦精品免费M,亚洲一区二区三区91,欧美国产在线视频,国产精品视频久久

N26 第六周作業(yè)

總結(jié)vim編輯器的使用

Vim 模式

   Vim 有六種基本模式
    Normal mode             
    Visual mode  "-- VISUAL --"           
    Select mode  "-- SELECT --"
    Insert mode  "-- INSERT --"           
    Command-line mode       
    Ex mode                 
    另外還有六種附加模式
    Operator-pending mode
    Replace mode  "-- REPLACE --"
    Virtual Replace mode "-- VREPLACE --"
    Insert Normal mode  "-- (insert) --"    
    Insert Visual mode "-- (insert) VISUAL --"      

    Insert Select mode "-- (insert) SELECT --"

模式切換

如果不清楚正處于哪種模式,可以按兩次 Esc 鍵回到 Normal 模式,這有一個(gè)例外,從 Ex 模式輸入“:vi”才能返回到 Normal模式。

模式之間切換可以參考下圖:(^V 代表組合鋟 Ctrl - V)

2017-01-29 20 10 05.png

*1 Go from Normal mode to Insert mode by giving the command "i", "I", "a",
  "A", "o", "O", "c", "C", "s" or S".
*2 Go from Visual mode to Normal mode by giving a non-movement command, which
  causes the command to be executed, or by hitting <Esc> "v", "V" or "CTRL-V"
  (see v_v), which just stops Visual mode without side effects.
*3 Go from Command-line mode to Normal mode by:
  - Hitting <CR> or <NL>, which causes the entered command to be executed.
  - Deleting the complete line (e.g., with CTRL-U) and giving a final <BS>.
  - Hitting CTRL-C or <Esc>, which quits the command-line without executing
    the command.
  In the last case <Esc> may be the character defined with the 'wildchar'
  option, in which case it will start command-line completion.  You can
  ignore that and type <Esc> again.  {Vi: when hitting <Esc> the command-line
  is executed.  This is unexpected for most people; therefore it was changed
  in Vim.  But when the <Esc> is part of a mapping, the command-line is
  executed.  If you want the Vi behaviour also when typing <Esc>, use ":cmap
  ^V<Esc> ^V^M"}
*4 Go from Normal to Select mode by:
  - use the mouse to select text while 'selectmode' contains "mouse"
  - use a non-printable command to move the cursor while keeping the Shift
    key pressed, and the 'selectmode' option contains "key"
  - use "v", "V" or "CTRL-V" while 'selectmode' contains "cmd"
  - use "gh", "gH" or "g CTRL-H"  g_CTRL-H
*5 Go from Select mode to Normal mode by using a non-printable command to move
  the cursor, without keeping the Shift key pressed.
*6 Go from Select mode to Insert mode by typing a printable character.  The
  selection is deleted and the character is inserted.

使用Vim打開(kāi)文件

vim [options] [file ..]
vim functions
vim +2 functions  +2 表示打開(kāi)文件后光標(biāo)位于第2行的開(kāi)頭
vim + functions 如果省略"+"號(hào)后面的數(shù)字,則表示打開(kāi)文件后,光標(biāo)位于文件最后一行的開(kāi)頭
vim +/if functions 打開(kāi)文件后,光標(biāo)位于第1次匹配模式(if)的位置

保存文件

:w 保存修改
ZZ:保存并退出
: x  保存并退出
:wq  保存并退出;
:w file_name 保存結(jié)果到file_name文件中,而vim中的文件仍舊是先前打開(kāi)在文件

關(guān)閉文件

:q!  強(qiáng)制退出,不保存修改結(jié)果
:q  如果文件自從上次保存后未曾修改,直接退出,否則提示錯(cuò)誤

光標(biāo)移動(dòng)

:help motion.txt 可查看完整的相關(guān)光標(biāo)移動(dòng)的幫助
:help usr_03.txt 可查看較重要的相關(guān)光標(biāo)移動(dòng)的幫助

字符跳轉(zhuǎn)

(1)可以使用鍵盤(pán)的上下左右箭頭
(2)可以使用鍵盤(pán)的hjkl鍵:
      h 向左
      l 向右(小寫(xiě)L)
      j 向下
      k 向上
(3)使用數(shù)字與命令組合實(shí)現(xiàn)按指定字符移動(dòng)光標(biāo),例如:
   3k 表示向上移動(dòng)3行
   4<-(4加左箭頭)表示向左移動(dòng)4個(gè)字符

單詞跳轉(zhuǎn)

   w 光標(biāo)移到下一個(gè)單詞的首字母
   e 光標(biāo)移到當(dāng)前或下一個(gè)單詞的尾字母
   b 光標(biāo)移到當(dāng)前或前一個(gè)單詞的首字母

   #(w|e|b) 數(shù)字與指定命令之一組合,每次跳轉(zhuǎn)指定數(shù)目在單詞

行首行尾跳轉(zhuǎn)

 ^ 轉(zhuǎn)到行首第一個(gè)非空白字符
 0 轉(zhuǎn)到行首第一個(gè)字符
 $ 轉(zhuǎn)到行尾第一個(gè)字符
 段間跳轉(zhuǎn)

 } 轉(zhuǎn)到下一段(光標(biāo)定位在空白行)
 { 轉(zhuǎn)到下一段(光標(biāo)定位在空白行)

 句間跳轉(zhuǎn)

 ( 轉(zhuǎn)到前一句
 ) 轉(zhuǎn)到后一句

 翻屏

 Ctrl+f 向下一屏 Forwards (downwards)
 Ctrl+b 向上一屏 Backwards (upwards)

 Ctrl+d 向下半屏 Downwards
 Ctrl+u 向上半屏 Upwards

 Enter:按行向后翻

vim的編輯命令:

字符編輯:

x 刪除光標(biāo)位置字符
#x 刪除從光標(biāo)開(kāi)始指定個(gè)數(shù)字符

xp 可實(shí)現(xiàn)光標(biāo)位置字符與其后字符對(duì)調(diào)位置
rCHAR 將光標(biāo)位置字符替換為CHAR所指定的字符,注意是小寫(xiě)的r,大寫(xiě)R直接進(jìn)入替換模式了

刪除(d)

dd 刪除光標(biāo)所在行
d$ 刪除光標(biāo)開(kāi)始至行尾字符
d^ 刪除光標(biāo)前一個(gè)字符至行首第一個(gè)非空白字符
dw 刪除光標(biāo)開(kāi)始至下一個(gè)單詞首字母之間的字符
de 刪除光標(biāo)位置至下一個(gè)詞尾之間的字符
db 刪除漁村位置前一個(gè)字符至前一個(gè)詞首之間的字符

#d(w|b|e|$|^|d) 刪除指定數(shù)量的字符、單詞、行

復(fù)制(y)

工作方式類(lèi)似 d 命令

粘貼

p(小寫(xiě))在光標(biāo)位置后面或當(dāng)前行后粘貼
#p 在光標(biāo)位置后或當(dāng)前行后粘貼指定次數(shù)
P(大寫(xiě))在光標(biāo)位置前面或當(dāng)前行之前粘貼
#P 在光標(biāo)位置前面或當(dāng)前行前面粘貼指定次數(shù)

刪除(c)

工作方式類(lèi)似d,所不同在是刪除后直接轉(zhuǎn)為Insert模式

撤銷(xiāo)(u)

#u 撤銷(xiāo)n步
反撤銷(xiāo)(Ctrl+r)
#ctrl+r反撤銷(xiāo)n步

重復(fù)執(zhí)行前一個(gè)編輯操作:
[#].

按行選定(V)
按字符選定(v)
按塊選定(Ctrl+V)
以上3種可視化選定方法結(jié)合上下左右來(lái)選擇,然后結(jié)合d、c、y、x等命令使用

vim自帶的練習(xí)教程:vimtutor

命令行模式

   命令范圍

   # 特定行
   . 當(dāng)前行
   $ 最后一行
   % 所有行,相當(dāng)于1,$
   #,# 某行到某行
   /pattern/ 由pattern匹配的下一行
   #,+#:指定行范圍,如3,+2 為第3行加2行,總共3行

   結(jié)合編輯命令,實(shí)現(xiàn)編輯操作
   d
   y
   c
   r fild_name 將指定文件內(nèi)容插入命令范圍之后
   w file_name 將選定范圍寫(xiě)入某文件

查找

/pattern  按模式匹配自上向下查找
?pattern  按模式匹配自下向上查找
n 在查找結(jié)果中按查找方向依次導(dǎo)航
N 在查找結(jié)果中按查找方向相反的方向依次導(dǎo)航

查找與替換

:[range]s/{pattern}/{string}/[flags]
range為命令范圍
pattern為要查找內(nèi)容的匹配模式
string為需要替換的內(nèi)容,可以后向引用
flags為修飾符
   i,忽略大小寫(xiě)
   g,行內(nèi)全局匹配

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

同時(shí)打開(kāi)多個(gè)文件

vim FILE1 FILE2 ...
            在文件間切換:
               :next  下一個(gè)
               :prev  上一個(gè)
               :first   第一個(gè)
               :last   最后一個(gè)

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

               打開(kāi)多個(gè)文件時(shí)可以使用選項(xiàng)拆分窗口
               vim -o abc bcd  拆分成上下兩個(gè)窗口
               vim -O abc bcd  拆分成左右兩個(gè)窗口

               窗口切換可以使用 Ctrl+w, Arrow

               單個(gè)文件拆分窗口
                           Ctrl+w, s:拆分成上下兩個(gè)窗口
                           Ctrl+w, v:拆分成左右兩個(gè)窗口

Vim 工作特性

   配置文件
      /etc/vimrc     System wide Vim initializations.
       ~/.vimrc       Your personal Vim initializations.

:help option-list
查看特性值 :se[t] {option}?
   行號(hào)
      打開(kāi)::set number
      關(guān)閉::set nonumber
   自動(dòng)縮進(jìn)
      打開(kāi)::set autoindent
      關(guān)閉::set noautoindent
   高亮搜索
      打開(kāi)::set hlsearch
      關(guān)閉::set nohlsearch
   語(yǔ)法高亮
      打開(kāi)::syntax on
      關(guān)閉::syntax off
   搜索pattern忽略大小寫(xiě)
      打開(kāi)::set ignorecase
      關(guān)閉::set noignorecase

 獲取幫助:

 :help
 :help subject

1、復(fù)制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個(gè)空白字符開(kāi)頭的行的行首加#

root@localhost ~]# cp /etc/rc.d/rc.local /tmp/
[root@localhost ~]# vim /tmp/rc.sysinit
:%s/^[[:space:]]\+[^[:space:]]/#&/

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

[root@localhost ~]# cp /boot/grub/grub.conf /tmp
[root@localhost ~]# vim /tmp/grub.conf
:%s/^[[:space:]]\+//g

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

[root@localhost ~]# cp /etc/rc.sysinit /tmp/
[root@localhost ~]# vim /tmp/rc.sysinit
:%s/^#[[:space:]]\+//

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

:1,3s/^./#&/

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

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

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

0 */4 * * * /bin/bash -c 'filename=`date +/backup/etc-\%Y\%m\%d\%H\%M`&& mkdir $filename && cp -r /etc/* $filename && echo $filename && unset filename'

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

0 0 * * 2,4,6 /bin/bash -c 'filename=`date +messages-\%Y\%m\%d` && cp /var/log/messages /backup/messages/$filename'

8、每天每?jī)尚r(shí)取當(dāng)前系統(tǒng)/proc/meminfo文件中的所有以S開(kāi)頭的信息至/stats/memory.txt文件中

0 */2 * * * /bin/bash -c 'echo -e `date +"\n\%F \%T"` >> /stats/memory.txt && cat /proc/meminfo | grep -i "^s" >> /stats/memory.txt'

9、工作日的工作時(shí)間內(nèi),每?jī)尚r(shí)執(zhí)行一次echo ""howdy""

0 */2 * * 1-5 echo ""howdy""

10、創(chuàng)建目錄/tmp/testdir-當(dāng)前日期時(shí)間;

#!/bin/bash
declare curtime;
curtime=$(date +"%Y%m%d%H%M")
mkdir /tmp/testdir-$curtime

11、在此目錄創(chuàng)建100個(gè)空文件:file1-file100

#!/bin/bash
declare curtime;
curtime=$(date +"%Y%m%d%H%M")
if [ ! -d $curtime ]; then
  mkdir /tmp/testdir-$curtime
fi
declare -i i=0;
while [ $i -lt 100 ]; do
  i+=1
  touch /tmp/testdir-$curtime/file$i
done

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

#!/bin/bash
declare -a users=(`cut -d: -f1 /etc/passwd`)
declare -i len=${#users[@]}
declare -i i=0
while [ $i -le $len ] ;do
  if [ $(($i%2)) -eq 1 ];then
    echo ${users[$i]}
  fi
  i+=1
done

13、創(chuàng)建10用戶user10-user19;密碼同用戶名;

#!/bin/bash
for i in {10..19};do
  id user$i &> /dev/null
  if [ ! $? -eq 0 ];then
    useradd user$i
  fi
done

14、在/tmp/創(chuàng)建10個(gè)空文件file10-file19;

#!/bin/bash
for i in {10..19};do
  if [ ! -f /tmp/file$i ]; then
    touch /tmp/file$i
  fi
done

15、把file10的屬主和屬組改為user10,依次類(lèi)推。

#!/bin/bash
for i in {10..19};do
        if [ -f /tmp/file$i ];then
                id user$i &> /dev/null
                if [ $? -eq 0 ];then
                        chown $(cat /etc/passwd | grep "^user$i" |cut -d: -f3-4) /tmp/file$i
                fi
        fi
done

相關(guān)新聞

歷經(jīng)多年發(fā)展,已成為國(guó)內(nèi)好評(píng)如潮的Linux云計(jì)算運(yùn)維、SRE、Devops、網(wǎng)絡(luò)安全、云原生、Go、Python開(kāi)發(fā)專(zhuān)業(yè)人才培訓(xùn)機(jī)構(gòu)!

    1. 主站蜘蛛池模板: 华池县| 龙岩市| 峡江县| 洮南市| 迁安市| 巫溪县| 岐山县| 马龙县| 广东省| 涞源县| 成都市| 当涂县| 融水| 南江县| 财经| 湘乡市| 红原县| 泊头市| 嘉荫县| 盱眙县| 涟水县| 沙河市| 嘉义市| 渭南市| 资阳市| 桂平市| 商城县| 卢氏县| 宜黄县| 清苑县| 大邑县| 泗洪县| 宜州市| 锡林郭勒盟| 彭州市| 宜兰市| 皮山县| 榆中县| 小金县| 广东省| 白城市|