vim

 Linux下文本編輯器有Emacs,Vim,gEdit,Nano,gvim,Eclipse,Emacs等文本編輯器,這些文本編輯器不同於Word處理器。

Vim :

gEdit:在圖形界面下使用的文本編輯器,類似於文本編輯器。

Nano:簡單易用

Eclipse:開源的軟件,IBM開發

Emacs:GNU組織的重要產品。

 

Vim模式化的編輯:

編輯模式,命令模式

輸入模式,插入模式

末行模式,

#vim

#vim [options] FILE1,FILE2,…  連續打開幾個文件

#vim +n  FILE  處在第某行

#vim +/PATTERN /etc/inittab  打開/etc/inittab這個文件直接處在PATTERN這個行。

 

1.i(insert):在光標所在位置插入,光標前面    I:在當前光標所在行的行首

2.a(append):在光標所在位置插入,光標後面  A:行尾,轉換成插入操作

3.o:光標所在行的下方新打開一個行         O:在光標坐在行的上方新打開一個行

 

輸入模式à編輯模式:ESC

編輯模式à末行模式::

末行模式à編輯模式:ESC,ESC

1.       保存退出

:wq   保存退出

:wqall 保存多個文件

:w!    強行保存

Shift+ZZ鍵保存退出

2.       不保存退出

不保存退出,沒有做過任何編輯

:q!   強行退出

:qall! 強行退出所有

Vim編輯器上如何使用光標移動:

h 表示想左側移動

表示向下移動

表示向上移動

表示向右移動

先輸入一個數值,然後再輸入光標移動字母例如5h,表示向左移動5給字符。

w:跳到在下一個單詞的詞首

e:跳到單詞的詞尾  <--à  b:跳到單詞的詞首

 

(左小括號向前跳一句 <–-> )右小括號向後跳一句

{ 向左跳一段  }右跳一段

 

0:絕對行首  ßà$:絕對行尾

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

 

行間跳轉:

G:跳到文件的最後一行

nG:跳到第n

在末行模式下可以通過輸入數字跳轉到某行

 

如何進行翻屏:

Ctrl+f向文件尾部翻一屏  ßà Ctrl+b向文件首部翻一屏

Ctrl+d向文件尾部翻半屏   Ctrl+u向文件首部翻半屏

 

c:跟跳轉命令一起使用

C:刪除光標所在行

cc:刪除光標所在的行,並轉入到編輯模式

 

x:相當於Backspace

5x:相當於刪除5個字符

X:表示刪除光標前的內容

 

刪除指定內容:

d

dd 刪一行

ndd 刪除n

 

替換

r replace

大寫R表示到進入到替換模式

 

撤銷操作

u:取消最近一次的編輯操作

nu:撤銷最近幾次的操作

Ctrl+r表示重做上一個動作

. 重複前一個動作

 

複製和粘貼:

y: yank

y$

yy  複製本行

nyy 複製光標所在的向下n行(包含所在那一行)

p:將已複製的數據在光標下一行粘貼

P:將複製的數據在光標的上一行粘貼

 

剪切爲先用d刪除,然後在粘貼

 

可視化模式:

v按字符選取

V按行選取

 

查找:

/keyword

?keyword

n/N表示下一個

 

替換:substitude

在末行模式下:

ADDR1,ADDR2s/from/to/flags

:表示末行模式下

ADDR1表示開始的行

ADDR2表示結束的行

m,n表示從m到第n

1$表示從第一行到最後一行

.,$ 表示從當前行到最後一行

.,+8表示從當前行到第8

1$-1表示從第一行到倒數第2

%表示全文搜索

s表示搜索

/from表示需要替換的字符

/to 表示替換的字符

/flags 表示動作修正符   -i:表示忽略大小寫 –g表示都替換

例如:   .,+8/a/A/g

 

同時打開多個vi,打開多個文章,則可以在末行模式下使用如下命令進行切換

next下一個

last 最後一個

first 第一個

prev 前一個

 

分割窗口:

Ctrl+w, s        水平分割

Ctrl+w, v        垂直分割

Ctrl+w, Arrow    Arrow 方向鍵進行切換

Ctrl+w, t

Ctrl+w, b

 

自動縮進:

set autoindent

set noai

 

語法高亮:

syntax on|off

 

搜索高亮:

:set hlsearch

 

分割窗口顯示多個文件:

#vim –o FILE1 FILE2  水平分割

#vim –O FILE1 FILE2  垂直分割

 

設定vim的工作特徵:

set nu

set nonu

 

vim 的配置文件:全局/etc/vimrc   可以在vim編輯

                個人~/.vimrc

 

Bash的算術運算:

+

-

*

/

%

shell下使用let 使用算術表達式:

1、  let expression

[root@localhost ~]# type let

let is a shell builtin

[root@localhost ~]# clear

[root@localhost ~]# let A=2*88

[root@localhost ~]# echo $A

176

2#$[expression]

[root@localhost ~]# A=$[3+7]

3#$((expression))

 

Practice1:100以內的和。

 

  1 #/bin/bash

  2 #

  3 declare -i SUM=0

  4   for I in {1..100};do

  5   SUM=$[$SUM+$I]

  6 done

  7

  8 echo "The SUM is :$SUM"

  9 unset SUM

 

語句的邏輯運算:

&&與運算

statement 1 && statement2  如果statement1執行成功,則statement2執行;如果statement 1爲執行失敗,則statement不執行。

||或運算

expression1 || expression    如果expression1執行成功,則不執行expression2;如果expression1執行不成功,則expression2執行;

! 非運算

expression

 

例子:

[root@localhost ~]# ping -c1 -W1 172.16.0.1 &> /dev/null && echo "172.16.0.1 online" || echo "172.16.0.1 offline"

172.16.0.1 online

[root@localhost ~]# ping -c1 -W1 172.16.0.7 &> /dev/null && echo "172.16.0.1 online" || echo "172.16.0.1 offline"

172.16.0.1 offline

 

Practice2:100以內偶數的和,提示:seq的幫助

  1 #!/bin/bash

  2 #

  3 declare -i SUM=0

  4 for I in `seq 2 2 100`;do

  5   SUM=$[$SUM+$I];

  6 done

  7

  8 echo "The SUM is $SUM"

 

 

  1 #!/bin/bash

  2 #

  3 declare -i SUM=0

  4 for I in `seq 2 2 100`;do

  5   let SUM=$SUM+$I  SUM=$(($SUM+$I))

  6 done

  7

  8 echo "The SUM is $SUM"

 

  1 #!/bin/bash

  2 #

  3 declare i SUM=0

  4 for I in {1..100};do

  5   M=$[$I%2]

  6   if [ $M -eq 0 ];then

  7     SUM=$[$SUM+$I]

  8   fi

  9 done

 10

 11 echo "Successfully Sum is: $SUM".

 12

 13 unset SUM

使用判斷來進行100以內偶數的相加。

 

+=  -=  *=   /=  %=  在原有的基礎上加,減,乘,除。

SUM=SUM+1      SUM+=1;

   SUM=SUM-1      SUM-=1;

   SUM=SUM*2     SUM*=2;

   … …

 

SUM=SUM+1,一次進步幅度爲1,則也可以這樣表示

SUM++,++SUM   SUM=SUM+1,SUM+=1;

SUM--,--SUM     SUM=SUM-1

 

Practice:寫一個腳本:

1、添加10個用戶user1user10,但要求只有用戶不存在的情況下才能添加;

[root@localhost ~]# for I in {1..10};do userdel -r user$I;done

1 #!/bin/bash

  2  for NEWUSER in {1..10} ; do

  3     ! id user$NEWUSER &> /dev/null &&  useradd user$NEWUSER &> /dev/null && echo "user    $NEWUSER" |passwd --stdin user$NEWUSER &> /dev/null && echo "Add user user$NEWUSER suc    cessfully..."

  4 done

 

Practice:寫一個腳本:

1、通過ping命令測試192.168.0.151192.168.0.254之間的所有主機是否在線,

         如果在線,就顯示"ip is up."

         如果不在線,就顯示"ip is down."

#!/bin/bash

#

MYNET=192.168.0

 

for I in {151..254}; do

  ping -c1 -W1 $MYNET.$I &> /dev/null && echo -e "\033[32m$MYNET.$I\033[0m is on." || echo -e "\033[31m$MYNET.$I\033[0m is down."

done

 

unset MYNET

 

#!/bin/bash

#

HOST=192.168.0.254

 

ping -c1 -W1 $HOST &> /dev/null

RETVAL=$?

 

if [ $RETVAL -eq 0 ]; then

  echo "$HOST is up."

else

  echo "$HOST is down."

Fi

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章