程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 常用VI高級命令集錦

常用VI高級命令集錦

編輯:關於JAVA

VI高級命令集錦

十多年前就背過vi的批量替換的命令,可就是記不牢。這不,今天又要上網查了。不過,今天查到的命令以前沒有見過:在vi界面下使用命令 :%s#/usr/bin#/bin#g 可以把文件中所有路徑/usr/bin換成/bin。其中“#”是轉義字符,表明其後的“/”字符是具有實際意義的字符,不是分隔符。嗯~又學了一招。

以下是一篇比較全的vi命令集:(感謝jaxy,感謝chinaitlab)

------------------------------------------------------------------------

  鑒於大家在使用VI 的時候有一定的陌生,在這裡借花獻佛,從兄弟版[SHELL]中整理出以下關於VI編程的高級技巧,希望對大家學習UNIX有所幫助,並希望大家能結合使用HPUX的心得體會對這些經驗進行進一步的擴展。

  1.交換兩個字符位置

  

  xp

  2.上下兩行調換

  ddp

  3.把文件內容反轉

  :g/^/m0/ (未通過)

  

  4.上下兩行合並

  J

  5.刪除所有行

  dG

  6.從當前位置刪除到行尾

  d$

  7.從當前位置復制到行尾

  y$ 如果要粘貼到其他地方 p 就可以了

  

  

  由於vi 是建立在 EX 上的 所以 當鍵入 : 時就來到了 EX 命令狀態

  8.

  :ab string strings

  例如 ":ab usa United States of America" ,

  當你在文見裡插入 usa 時

  United States of America 就蹦出來了

  9.

  :map keys new_seq

  定義你當前 鍵盤命令

  10.

  :set [all]

  vi or ex 的編輯狀態

  如 顯示每行 :set nu

  11.

  在命令狀態下,nyy表示拷貝從光標行起的下n行內容,p表示paste,可剛復制的內容粘貼在光標處的

  下面。

  

  12.

  單個字符替換用r,覆蓋多個字符用R,用多個字符替換一個字符用s,整行替換用S

  

  13.

  

  :%s/old_word/new_Word/g

  這個指令是於在整個文件中替換特定字符串

  

  14.光標控制

  

  k:上移 nk 上移n行

  j:下移 nj 下移n行

  

  

  將光標移到第n行,按下 mk

  將光標移到第m行,按下 "ayk

  即將第n到m的行存到a寄存器,以此類推,b,c........寄存器等

  

  這樣就可以將你常用的需要復用的內容粘貼到不同的寄存器中以備用

  

  

  想粘貼到某處,直接將光標移到某地,按下 ‘ap 即可,以此類推,b,c........寄存器等

  

  在當前屏幕中

  H 跳到第一行

  M 跳到中間一行

  L 跳到最後一行

  

  15.

  表8-2 刪除命令

  刪除命令操作

  d l 刪除當前字符(與x命令功能相同)

  d 0 刪除到某一行的開始位置

  d ^ 刪除到某一行的第一個字符位置(不包括空格或TA B字符)

  d w 刪除到某個單詞的結尾位置

  d 3 w 刪除到第三個單詞的結尾位置

  d b 刪除到某個單詞的開始位置

  d W 刪除到某個以空格作為分隔符的單詞的結尾位置

  d B 刪除到某個以空格作為分隔符的單詞的開始位置

  d 7 B 刪除到前面7個以空格作為分隔符的單詞的開始位置

  d) 刪除到某個語句的結尾位置

  d 4) 刪除到第四個語句的結尾位置

  d( 刪除到某個語句的開始位置

  d } 刪除到某個段落的結尾位置

  d { 刪除到某個段落的開始位置

  d 7 { 刪除到當前段落起始位置之前的第7個段落位置

  d d 刪除當前行

  d /t e x t 刪除從文本中出現“ t e x t”中所指定字樣的位置,一直向前直到下一個該字樣所出現的

  位置(但不包括該字樣)之間的內容

  d fc 刪除從文本中出現字符“c”的位置,一直向前直到下一個該字符所出現的位置(包括

  該字符)之間的內容

  d tc 刪除當前行直到下一個字符“ c”所出現位置之間的內容

  D 刪除到某一行的結尾

  d $ 刪除到某一行的結尾

  5 d d 刪除從當前行所開始的5行內容

  d L 刪除直到屏幕上最後一行的內容

  d H 刪除直到屏幕上第一行的內容

  d G 刪除直到工作緩存區結尾的內容

  d 1 G 刪除直到工作緩存區開始的內容

  

  修改命令操作

  c l 更改當前字符

  c w 修改到某個單詞的結尾位置

  c 3 w 修改到第三個單詞的結尾位置

  c b 修改到某個單詞的開始位置

  c W 修改到某個以空格作為分隔符的單詞的結尾位置

  c B 修改到某個以空格作為分隔符的單詞的開始位置

  c 7 B 修改到前面7個以空格作為分隔符的單詞的開始位置

  c 0 修改到某行的結尾位置

  c) 修改到某個語句的結尾位置

  c 4) 修改到第四個語句的結尾位置

  c( 修改到某個語句的開始位置

  c } 修改到某個段落的結尾位置

  c { 修改到某個段落的開始位置

  c 7 { 修改到當前段落起始位置之前的第7個段落位置

  c tc 修改當前行直到下一個字符c所出現位置之間的內容

  C 修改到某一行的結尾

  c c 修改當前行

  5 c c 修改從當前行所開始的5行內容

  

  

  .重復上一次修改!

  

  

  表8-4 替換命令

  替換命令操作

  s 將當前字符替換為一個或多個字符

  S 將當前行替換為一個或多個字符

  5 s 將從當前字符開始的5個字符替換為一個或多個字符

  

  

  vi替換使用規則:

  :g/s1/s/s2/s3/g

  第一個g表示對每一個包括s1的行都進行替換,第二個g表示對每一行包括s1的行所有的s2都用s3替換

  s表示替換,s2是要被替換的字符串,他可以和s1相同(如果相同的話用//代替),s3是替換字符串

  

  

  16.

  

  fx

  往右移動到 x 字符上

  Fx

  往左移動到 x 字符上

  tx

  往右移動到 x 字符前

  Tx

  往左移動到 x 字符後

  (注意:以上四個命令中,其中x是鍵入的字符)

  ;

  分號,配合 f 和 t 使用,重復一次

  ,

  逗號,配合 f 和 t 使用,反方向重復一次

  

  

  17. vi 環境選項 Solaris ksh

  

  noautoindent nomodelines noshowmode

  autoprint nonumber noslowopen

  noautowrite nonovice tabstop=8

  nobeautify nooptimize taglength=0

  directory=/var/tmp paragraphs=IPLPPPQPP LIpplpipnpbtags=tags /usr/lib/tags

  noedcompatible prompt tagstack

  noerrorbells noreadonly term=vt100

  noexrc redraw noterse

  Flash remap timeout

  hardtabs=8 report=5 ttytype=vt100

  noignorecase scroll=11 warn

  nolisp sections=NHSHH HUuhsh+c window=23

  nolist shell=/bin/ksh wrapscan

  magic shiftwidth=8 wrapmargin=0

  mesg noshowmatch nowriteany

  

  

  For C-Shell:

  setenv EXINIT "set nu"

  For Bourne or Korn Shell:

  EXINIT="set nu"; export EXINIT

  For Korn Shell Only (alternate method):

  typeset -x EXINIT="set nu"

  在 .profile 裡設置 vi 的環境選項 , 以上均測試過

  

  

  18.標記文本

  

    mchar   用字母char標記當前光標的位置

    `char   移至char所標記處

    char   移至char標記所在行的開頭處

    "     移至當前行上一次所在位置(在光標移動之後)――一個雙引號

        移至當前行上第一次所在位置的行的開頭處(在光標移動之後)――兩個單引號

  

  

  19.

  同時vi多個文件時,CTRL-SHIFT-6回到上一個文件,在本次vi的文件和上次vi的文件之間切換。

  但是我發現一個BUG:在用CTRL-SHIFT-6切換到上一個文件後,用:args查看多文件vi狀態時,

  屏幕底部仍然顯示目前vi的是剛才的文件。

  (在HP-UX,Solaris,AIX上通過)

  

  也可以使用:

  :e#

  進行切換

  

  20.

  sco 下VI 要在文本前同樣的字符加用

  %s/^/要加的內容/g 要在文本後同樣的字符加

  %s/$/要加的內容/g

  

  21.

  如何去掉文本中的 ^M 硬回車?不必用binary傳回去再ascii傳回來的方式,用shell或者unix語句實現。

  

  cat filename |tr -d >newfile

  不同的unix系統還存在一些其他不同的命令,如:DOScp

  sed 也可以實現這個功能.

  

  DOS2unix filename filename2

  反之

  unix2DOS filename filename2

  

  在vi 中用:$s/^M//g

  ^是crtl-V crtl-M

  

  

  22.如何在“unix命令行”下將一個文件的某字符串用另一個串換掉

  

  sed s/string1/string2/gp file1 > file2

  

  23.將/etc/hosts下所有的地址都ping 2次

  

   1 #/usr/bin/sh

   2 #grad /etc/hosts and ping each address

   3 cat /etc/hosts|grep -v ^# | while read LINE

   4 do

   5 ADDR=`awk {print $1}`

   6 for MacHINE in $ADDR

   7 do

   8 ping $MacHINE -n 2

   9 done

   10 done

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved