1. 程式人生 > >2018-1-2Linux基礎知識(19)vi編輯器及bash算數

2018-1-2Linux基礎知識(19)vi編輯器及bash算數

arr ott 全局 字段 nta 動作 blank onu linu


在上一章當中我們講述了vim的基本操作,例如我們如何打開文件及關閉文件,以及如何進行編輯等,以及講到了vim的諸多模式中之間的轉換和常用的編輯命令,那麽我們接下來介紹vim的末行模式及內建命令行接口的使用。

一、vim末行模式

vim的末行模式使得讓vim編輯器的本身功能變得完善,使其編輯器是更加強大的一款工具,其末行模式的命令種類很多,那麽在這裏介紹其比較常見的用法:

1.1 地址定界

指的是在文本中的那個範圍內作出相應的編輯操作,用逗號隔開指明起始位置和結束位置,其命令格式如下:

   :start_pos[,end_pos]

從以上的格式可以看出,後面的結束位置是可以省略的,那麽其編輯的方式有以下幾種:

   #:特定的第#行,例如5即第5行;
   .:當前行;
   $:最後一行;
   #,#:指定行範圍,左側為起始行,右側為結束行
   #,+#:指定行範圍,左側為起始行絕對編號,右側為相對左側行號的偏移量;例如:3,+7
     .,$-1
     1,$:全文;
     %:全文;
    /PATTERN/:從光標所在處其實向文件尾部第一次被模式匹配到的行;
        /first/, $
    /pat1/,/pat2/:從光標所在處開始,第一次由pat1匹配到的行開始,至第一次由pat2匹配到的行結束之間所有的行;

那麽地址定界和我們此前選定的行範圍一樣,可以結合編輯命令一起使用,實現編輯操作:

   例如:
     d
     y
     c
    
     w /PATH/TO/SOMEFILE:將範圍內的文本保存至指定的文件中;

我們可以指定某個行範圍來進行其文件合並,使用r命令,空格跟上某個文件的路徑就可以講該文件內容合並到當前的文件當中。

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

1.2 查找

查找這個功能我們其實並不陌生,在Windows當中打開某個word文檔時,想查找某個字段,或者使用某個文本編輯器,使用Ctrl+f快捷鍵,就會顯示出搜索欄用來其進行查找,我們在Linux中使用less命令或man手冊也是能查找出某個字段,但在vim中,我們不僅可以用關鍵字,還可以使用模式來進行查找。

   /PATTERN:從當前光標所在處向文件尾部查找能夠被當前匹配到的所有字符串;
   ?PATTERN:從當前光標所在處向文件首部查找能夠被當前匹配到的所有字符串;
     n:下一個,與命令方向相同;
     N:上一個,與命令方向相反;

1.3 查找並替換

以上說完了如何進行查找,那麽替換也無非就是查找之後做出的一個處理的動作,講查找到的字符或字段來進行替換你想要的字符串果,使用特殊的命令為s。

   s:末行模式的命令;使用格式為:
     s/要查找的內容/替換為的內容/修飾符
        要查找的內容:可使用正則表達式;
        替換為的內容:不能使用正則表達式,但可以引用;
            如果"要查找的內容"部分在模式中使用分組符號;在"替換為的內容"中使用後向引用;
            直接引用查找模式匹配的全部文本,要使用&符號;
            
        修飾符:
            i:忽略大小寫;
            g:全局替換,意味著一行中如果匹配到多次,則均為替換;
            
    可把分隔符替換為其它非常用的字符:
        s@@@
        s###

所以替換為的內容不能使用正則表達式元字符,因為它並不是處理查找的內容而去使用的,但可以使用後向引用機制,也可以使用直接引用機制用來匹配全部的內容的。

1.4 vim多文件功能

vim可以一次打開多個文本文件來進行處理,不過由於是全屏編輯器,所以打開文件時只能顯示一個,所以要在全屏模式下我們可以進行對文件的操作與轉換。其用法為:

   vim FILE1 FILE2 ...

由於vim是一款全屏編輯器,所以我們可以用以下方式在文件之間進行切換:

   :next  下一個
   :prev  上一個
   :first 第一個
   :last  最後一個

退出所有文件:

   :wqall
   :wall
   :qall

還有一種是多窗口模式,全屏幕的編輯器由於默認只能顯示一種,我們可以通過某些選項來進行多窗口講多個文件一同顯示。

   -o:水平分割窗口;
   -O:垂直分割窗口;

   在窗口間切換:Ctrl+w, ARROW

   註意:單個文件也可以分割多個窗口進行查看:
    Ctrl+w,s:水平分割窗口;
    Ctrl+w,v:垂直分割窗口;

1.5定制vim工作特性

所謂的工作特性無非就是講某個功能顯示出來,例如添加行號或者說是自動縮進。那麽我們需要註意的是,在末行模式下的設定,僅對當前的vim進程是有效的,要想讓它永久生效,需要寫入配置文件當中。

   永久生效:
     全局:/etc/vimrc
     用戶個人:~/.vimrc
    
     註意:該文件會有可能沒有,需新建;

定制特性如下:

   1、行號
     顯示:set number,簡寫為set nu
     取消顯示:set nonumber, set nonu

   2、括號匹配高亮
     匹配:set showmatch, set sm
     取消:set nosm

   3、啟動縮進
     啟用:set ai
     取消:set noai

   4、高亮搜索
     啟用:set hlsearch
     取消:set nohlsearch
    
   5、語法高亮
     啟用:syntax on
     忽略:syntax off
    
   6、忽略字符大小寫
     啟用:set ic
     禁用:set noic
    
   7、tab四格
     set ts=4
    
   獲取幫助:
     :help
     :help subject

二、bash腳本之算數運算

算數運算對我們來講並不陌生,在小學或中學當中老師教我們如何使用加減乘除以及次方或者求余數用來計算數學問題得出該題目的正確答案,在編程當中它們也是常見的算數運算符,不過相比書本中稍微有些不同。

   +, -, *, /, **, %

在bash當中,由於bash是弱類型的語言,默認統統當作字符型,所以如果算數來說,示例如下:

   # echo "$num1+$num2"
   1+2

但如果把變量申明為整型,也會當成結果運算時也會當成字符串,作為變量替換:

   # declare -i num3=3
   # declare -i num4=4
   # echo "$num3+$num4"
   3+4

對於bash來說,要做算數運算,必須要用特殊算數的運算格式。

   算數運算格式:
    (1) let VAR=算數表達運算式
    (2) VAR=$[算數運算表達式]
    (3) VAR=$((算數運算表達式))
    (4) VAR=$(expr $ARG1 $OP $ARG2)
    
    註意:乘法符號在有些場景中需要使用轉義符;


2018-1-2Linux基礎知識(19)vi編輯器及bash算數