• vi总结


    vi常用命令整理
    
    ★命令模式 
    
    移动光标 
    
    h 或 向左方向键(←) → 光标向左移动一个字元 
    
    j 或 向下方向鍵(↓) → 光标向下移动一个字元 
    
    k 或 向上方向鍵(↑) → 光标向上移动一个字元 
    
    l 或 向右方向鍵(→) → 光标向右移动一个字元 
    
    [Ctrl] + [f] → 屏幕『向下』移动一页,相当于 [Page Down]按键 
    
    [Ctrl] + [ b ] → 屏幕『向上』移动一页,相当于 [Page Up] 按键 
    
    n<space> → n 表示『数字』。按下数字后再按空白鍵,光标会向右移动这一行的 n 个字元 
    
    0 → 数字『 0 』:移动到这一行的最前面字元处  
    
    $ → 移动到这一行的最后面字元处 
    
    G → 移动到这个文件的最后一行 
    
    nG → n 为数字。移动到这个文件的第 n 行(可配合 :set nu) 
    
    gg → 移动到这个文件的第一行,相当于 1G 
    
    n<Enter> → n 为数字。光标向下移动 n 行 
    
    
    查找与替换 
    
    /word → 向光标之下查找一个名称为 word 的字符串。如想查找 eric4ever 字符串,输入 /eric4ever 即可 
    
    ?word → 向光标之上查找一个名称为 word 的字符串 
    
    n → 『重复前一个查找的动作』 
    
    N → 与 n 刚好相反,为『反向』进行前一个查找动作 
    
    :n1,n2s/word1/word2/g → n1 与 n2 均为数字。在第 n1 与 n2 行之间查找 word1 字符串,并将该字符串替换为 word2。如:在 1 到 9 行之间查找 eric4ever 并替换为 ERIC4EVER 则:『:1,9s/eric4ever/ERIC4EVER/g』 
    
    :1,$s/word1/word2/g → 从第一行到最后一行查找 word1 字符串,并将该字符串替换为 word2 
    
    :1,$s/word1/word2/gc → 从第一行到最后一行查找 word1 字符串,并将该字符窗替换为 word2,替换前显示提示对话框是否确认替换 
    
    
    
    删除、复制与粘贴 
    
    x, X → 在一行字当中,x 为向后刪除一个字元 (相当于 [del] 按键), X 为向前刪除一个字元(相当于 [backspace] 按键) 
    
    dd → 刪除光标所在的那一整列 
    
    ndd → n 为数字。刪除光标所在的向下 n 列 
    
    yy → 复制光标所在的那一行 
    
    nyy → n 为数字。复制光标所在的向下 n 列 
    
    p, P → p 为将已复制的内容粘贴在光标下一行上,P 则为粘贴在光标的上一行 
    
    u → 还原前一个动作 
    
    [Ctrl]+r → 重做上一个动作 
    
    . → 小数点,意思是重复前一个动作 
    
    
    
    ★编辑模式 
    
    i, I → 插入:在目前的光标所在处插入输入的文字,已存在的文字会向后退; 其中, i 为『从目前光标所在处插入』, I 为『在目前所在行的第一個非空白字元处开始插入』 
    
    a, A → a 为『从目前光标所在的下一个字元处开始插入』, A 为『从光标所在行的最后一个字元处开始插入』 
    
    o, O → o 为『在目前光标所在的下一行处插入新的一行』, O 为『在目前光标所在处的上一行插入新的一行』 
    
    r, R → r 为『取代光标所在的那一个字元』, R 为『一直取代光标所在的文字,直到按下 ESC 为止』 
    
    Esc → 退出编辑模式,回到一般模式中 
    
    
    ★末行指令模式 
    
    :w → 将编辑的文件写入到硬盘上 
    
    :q → 退出 vi 
    
    :wq → 保存后退出,若为 :wq! 则为强制保存为退出 
    
    :set nu → 显示行号 
    
    :set nonu → 取消显示行号 
    补充 
    光标控制命令 
    
    
    命令 光标移动 
    
    h或^h 向左移一个字符 
    
    j或^j或^n 向下移一行 
    
    k或^p 向上移一行 
    
    l或空格 向右移一个字符 
    
    G 移到文件的最后一行 
    
    nG 移到文件的第n行 
    
    w 移到下一个字的开头 
    
    W 移到下一个字的开头,忽略标点符号 
    
    b 移到前一个字的开头 
    
    B 移到前一个字的开头,忽略标点符号 
    
    L 移到屏幕的最后一行 
    
    M 移到屏幕的中间一行 
    
    H 移到屏幕的第一行 
    
    e 移到下一个字的结尾 
    
    E 移到下一个字的结尾,忽略标点符号 
    
    ( 移到句子的开头 
    
    ) 移到句子的结尾 
    
    { 移到段落的开头 
    
    } 移到下一个段落的开头 
    
    0或| 移到当前行的第一列 
    
    n| 移到当前行的第n列 
    
    ^ 移到当前行的第一个非空字符 
    
    $ 移到当前行的最后一个字符 
    
    +或return 移到下一行的第一个字符 
    
    - 移到前一行的第一个非空字符 
    
    
    在vi中添加文本 
    
    命令 插入动作 
    
    a 在光标后插入文本 
    
    A 在当前行插入文本 
    
    i 在光标前插入文本 
    
    I 在当前行前插入文本 
    
    o 在当前行的下边插入新行 
    
    O 在当前行的上边插入新行 
    
    :r file 读入文件file内容,并插在当前行后 
    
    :nr file 读入文件file内容,并插在第n行后 
    
    escape 回到命令模式 
    
    ^v char 插入时忽略char的指定意义,这是为了插入特殊字符 
    
    
    在vi中删除文本 
    命令 删除操作 x 删除光标处的字符,可以在x前加上需要删除的字符数目 nx 从当前光标处往后删除n个字符 X 删除光标前的字符,可以在X前加上需要删除的字符数目 nX 从当前光标处往前删除n个字符 dw 删至下一个字的开头 ndw 从当前光标处往后删除n个字 dG 删除行,直到文件结束 dd 删除整行 ndd 从当前行开始往后删除 db 删除光标前面的字 ndb 从当前行开始往前删除n字 :n,md 从第m行开始往前删除n行 d或d$ 从光标处删除到行尾 dcursor_command 删除至光标命令处,如dG将从当产胆行删除至文件的末尾 ^h或backspace 插入时,删除前面的字符 ^w 插入时,删除前面的字 修改vi文本 每个命令前面的数字表示该命令重复的次数 命令 替换操作 rchar 用char替换当前字符 R text escape 用text替换当前字符直到换下Esc键 stext escape 用text代替当前字符 S或cctext escape 用text代替整行 cwtext escape 将当前字改为text Ctext escape 将当前行余下的改为text cG escape 修改至文件的末尾 ccursor_cmd text escape 从当前位置处到光标命令位置处都改为text 在vi中查找与替换 命令 查找与替换操作 /text 在文件中向前查找text ?text 在文件中向后查找text n 在同一方向重复查找 N 在相反方向重复查找 ftext 在当前行向前查找text Ftext 在当前行向后查找text ttext 在当前行向前查找text,并将光标定位在text的第一个字符 Ttext 在当前行向后查找text,并将光标定位在text的第一个字符 :set ic 查找时忽略大小写 :set noic 查找时对大小写敏感 :s/oldtext/newtext 用newtext替换oldtext :m,ns/oldtext/newtext 在m行通过n,用newtext替换oldtext & 重复最后的:s命令 :g/text1/s/text2/text3 查找包含text1的行,用text3替换text2 :g/text/command 在所有包含text的行运行command所表示的命令 :v/text/command 在所有不包含text的行运行command所表示的命令 在vi中复制文本 命令 复制操作 yy 将当前行的内容放入临时缓冲区 nyy 将n行的内容放入临时缓冲区 p 将临时缓冲区中的文本放入光标后 P 将临时缓冲区中的文本放入光标前 "(a-z)nyy 复制n行放入名字为圆括号内的可命名缓冲区,省略n表示当前行 "(a-z)ndd 删除n行放入名字为圆括号内的可命名缓冲区,省略n表示当前行 "(a-z)p 将名字为圆括号的可命名缓冲区的内容放入当前行后 "(a-z)P 将名字为圆括号的可命名缓冲区的内容放入当前行前 在vi中撤消与重复 命令 撤消操作 u 撤消最后一次修改 U 撤消当前行的所有修改 . 重复最后一次修改 , 以相反的方向重复前面的f、F、t或T查找命令 ; 重复前面的f、F、t或T查找命令 "np 取回最后第n次的删除(缓冲区中存有一定次数的删除内容,一般为9) n 重复前面的/或?查找命令 N 以相反方向重复前面的/或?命令 保存文本和退出vi 命令 保存和/或退出操作 :w 保存文件但不退出vi :w file 将修改保存在file中但不退出vi :wq或ZZ或:x 保存文件并退出vi :q! 不保存文件,退出vi :e! 放弃所有修改,从上次保存文件开始再编辑 vi中的选项 选项 作用 :set all 打印所有选项 :set nooption 关闭option选项 :set nu 每行前打印行号 :set showmode 显示是输入模式还是替换模式 :set noic 查找时忽略大小写 :set list 显示制表符(^I)和行尾符号 :set ts=8 为文本输入设置tab stops :set window=n 设置文本窗口显示n行 vi的状态 选项 作用 :.= 打印当前行的行号 := 打印文件中的行数 ^g 显示文件名、当前的行号、文件的总行数和文件位置的百分比 :l 使用字母"l"来显示许多的特殊字符,如制表符和换行符 在文本中定位段落和放置标记 选项 作用 { 在第一列插入{来定义一个段落 [[ 回到段落的开头处 ]] 向前移到下一个段落的开头处 m(a-z) 用一个字母来标记当前位置,如用mz表示标记z '(a-z) 将光标移动到指定的标记,如用'z表示移动到z 在vi中连接行 选项 作用 J 将下一行连接到当前行的末尾 nJ 连接后面n行 光标放置与屏幕调整 选项 作用 H 将光标移动到屏幕的顶行 nH 将光标移动到屏幕顶行下的第n行 M 将光标移动到屏幕的中间 L 将光标移动到屏幕的底行 nL 将光标移动到屏幕底行上的第n行 ^e(ctrl+e) 将屏幕上滚一行 ^y 将屏幕下滚一行 ^u 将屏幕上滚半页 ^d 将屏幕下滚半页 ^b 将屏幕上滚一页 ^f 将屏幕下滚一页 ^l 重绘屏幕 z-return 将当前行置为屏幕的顶行 nz-return 将当前行下的第n行置为屏幕的顶行 z. 将当前行置为屏幕的中央 nz. 将当前行上的第n行置为屏幕的中央 z- 将当前行置为屏幕的底行 nz- 将当前行上的第n行置为屏幕的底行 vi中的shell转义命令 选项 作用 :!command 执行shell的command命令,如:!ls :!! 执行前一个shell命令 :r!command 读取command命令的输入并插入,如:r!ls会先执行ls,然后读入内容 :w!command 将当前已编辑文件作为command命令的标准输入并执行command命令,如:w!grep all :cd directory 将当前工作目录更改为directory所表示的目录 :sh 将启动一个子shell,使用^d(ctrl+d)返回vi :so file 在shell程序file中读入和执行命令 vi中的宏与缩写 (避免使用控制键和符号,不要使用字符K、V、g、q、v、*、=和功能键) 选项 作用 :map key command_seq 定义一个键来运行command_seq,如:map e ea,无论什么时候都可以e移到一个字的末尾来追加文本 :map 在状态行显示所有已定义的宏 :umap key 删除该键的宏 :ab string1 string2 定义一个缩写,使得当插入string1时,用string2替换string1。当要插入文本时,键入string1然后按Esc键,系统就插入了string2 :ab 显示所有缩写 :una string 取消string的缩写 在vi中缩进文本 选项 作用 ^i(ctrl+i)或tab 插入文本时,插入移动的宽度,移动宽度是事先定义好的 :set ai 打开自动缩进 :set sw=n 将移动宽度设置为n个字符 n<< 使n行都向左移动一个宽度 n>> 使n行都向右移动一个宽度,例如3>>就将接下来的三行每行都向右移动一个移动宽度 1.编辑模式: 插入/替换 (按INSERT键切换) 2.[ESC] 指令模式 3.输入模式 将在指令模式下输入 a 新增(a,A) a:从光标所在位置后面开始新增资料,光标后的资料随新增资料向后移动。 A:从光标所在列最后面的地方开始新增资料。 插入(i,I) i:从光标所在位置前面开始插入资料,光标后的资料随新增资料向后移动。 I:从光标所在列的第一个非空白字元前面开始插入资料。 开始(o,O) o:在光标所在列下新增一列并进入输入模式。 O:在光标所在列上方新增一列并进入输入模式。 4.存盘/退出 [ESC] :wq //存盘退出 :w! //存盘继续 :q //退出 (源文件未被编辑过可用) :q! //强制退出 5.删除与改修 [ESC] x //删除光标所在字符 dd //删除光标所在列。 r //修改光标所在字元,r后接着要修正的字符。 R //进入取替换状态。 s //删除光标所在字元,并进入输入模式。 S //删除光标所在的列,并进入输入模式。 6.恢复 [ESC] u //可以恢复被删除的文字。 U //可以恢复光标所在列的所有改变。

      

    vi的复制、粘贴、查找、删除等常用命令
    
    
    vi编辑器有3种模式:命令模式、输入模式、末行模式。掌握这三种模式十分重要。
    •命令模式:vi启动后默认进入的是命令模式,从这个模式使用命令可以切换到另外两种模式,同时无论在任何模式下只要按一下[Esc]键都可以返回命令模式。在命令模式中输入字幕“i”就可以进入vi的输入模式编辑文件。 •输入模式:在这个模式中我们可以编辑、修改、输入等编辑工作,在编辑器最后一行显示一个“--INSERT--”标志着vi进入了输入模式。当我们完成修改输入等操作的时候我们需要保存文件,这时我们需要先返回命令模式,在进入末行模式保存。 •末行模式:在命令模式输入“:”即可进入该模式,在末行模式中有好多好用的命令。 命令模式下的操作 1. 复制 yy命令复制当前整行的内容到vi缓冲区; yw复制当前光标所在位置到单词尾字符的内容到vi缓存区,相当于复制一个单词; y$复制光标所在位置到行尾内容到缓存区; y^复制光标所在位置到行首内容到缓存区; #yy例如:5yy就是复制5行; #yw例如:2yw就是复制两个单词; 如果要复制第m行到第n行之间的内容,可以在末行模式中输入m,ny例如:3,5y复制第三行到第五行内容到缓存区; 2. 粘贴 粘贴缓冲区中的内容,用p; 3. 删除 x删除光标处的单个字符; dd删除光标所在行; dw删除当前字符到单词尾包括空格的所有字符; #x例如3x删除光标处向右的三个字符; #dd例如3dd从当前行开始向下删除三行文本; 4. 撤销 u命令取消最近一次的操作,可以使用多次来恢复原有的操作; U取消所有操作; Ctrl+R可以恢复对使用u命令的操作; 5.切换到输入模式的命令 ◦ 新增 (append) a :从光标所在位置後面开始新增资料,光标後的资料随新增资料向後移动。 A: 从光标所在列最後面的地方开始新增资料。 ◦ 插入 (insert) i: 从光标所在位置前面开始插入资料,光标後的资料随新增资料向後移动。 I :从光标所在列的第一个非空白字元前面开始插入资料。 ◦ 开始 (open) o :在光标所在列下新增一列并进入输入模式。 O: 在光标所在列上方新增一列并进入输入模式。 ◦Esc退出命令; 末行模式下的操作 1. 至上而下的查找 / 要查找的字符窜,其中/代表从光标所在位置起开始查找,例如:/ work; 2. 至下而上的查找 ?要查找的字符窜 例如:/ work; 3. 替换 :s/old/new用new替换行中首次出现的old; : s/old/new/g 用new替换行中所有出现的old; :#,# s/old/new/g用new替换从第#行到第#行中出现的old; :% s/old/new/g用new替换整篇中出现的old; 4. 如果替换的范围较大时,在所有的命令尾加一个c命令,强制每个替换需要用户进行确认,例如:s/old/new/c 或s/old/new/gc;

      

    linux vi命令详解及使用技巧集锦
     
    2009-11-3     作者:        编辑:闫蕊   点击进入论坛
     
    关键词:linux vi
     
    
      进入vi的命令
     
      vi filename :打开或新建文档,并将光标置于第一行首
     
      vi +n filename :打开文档,并将光标置于第n行首
     
      vi + filename :打开文档,并将光标置于最后一行首
     
      vi +/pattern filename:打开文档,并将光标置于第一个和pattern匹配的串处
     
      vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filename
     
      vi filename....filename :打开多个文档,依次编辑
     
      移动光标类命令
     
      h :光标左移一个字符
     
      l :光标右移一个字符
     
      space:光标右移一个字符
     
      Backspace:光标左移一个字符
     
      k或Ctrl+p:光标上移一行
     
      j或Ctrl+n :光标下移一行
     
      Enter :光标下移一行
     
      w或W :光标右移一个字至字首
     
      b或B :光标左移一个字至字首
     
      e或E :光标右移一个字j至字尾
     
      ) :光标移至句尾
     
      ( :光标移至句首
     
      }:光标移至段落开头
     
      {:光标移至段落结尾
     
      nG:光标移至第n行首
     
      n+:光标下移n行
     
      n-:光标上移n行
     
      n$:光标移至第n行尾
     
      H :光标移至屏幕顶行
     
      M :光标移至屏幕中间行
     
      L :光标移至屏幕最后行
     
      0:(注意是数字零)光标移至当前行首
     
      $:光标移至当前行尾
     
      屏幕翻滚类命令
     
      Ctrl+u:向文档首翻半屏
     
      Ctrl+d:向文档尾翻半屏
     
      Ctrl+f:向文档尾翻一屏
     
      Ctrl+b;向文档首翻一屏
     
      nz:将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。
     
      插入文本类命令
     
      i :在光标前
     
      I :在当前行首
     
      a:光标后
     
      A:在当前行尾
     
      o:在当前行之下新开一行
     
      O:在当前行之上新开一行
     
      r:替换当前字符
     
      R:替换当前字符及其后的字符,直至按ESC键
     
      s:从当前光标位置处开始,以输入的文本替代指定数目的字符
     
      S:删除指定数目的行,并以所输入文本代替之
     
      ncw或nCW:修改指定数目的字
     
      nCC:修改指定数目的行
     
      删除命令
     
      ndw或ndW:删除光标处开始及其后的n-1个字
     
      do:删至行首
     
      d$:删至行尾
     
      ndd:删除当前行及其后n-1行
     
      x或X:删除一个字符,x删除光标后的,而X删除光标前的
     
      Ctrl+u:删除输入方式下所输入的文本
     
      搜索及替换命令 :
     
      /pattern:从光标开始处向文档尾搜索pattern
     
      ?pattern:从光标开始处向文档首搜索pattern
     
      n:在同一方向重复上一次搜索命令
     
      N:在反方向上重复上一次搜索命令
     
      :s/p1/p2/g:将当前行中任何p1均用p2替代
     
      :n1,n2s/p1/p2/g:将第n1至n2行中任何p1均用p2替代
     
      :g/p1/s//p2/g:将文档中任何p1均用p2替换
     
      选项配置
     
      all:列出任何选项配置情况
     
      term:配置终端类型
     
      ignorance:在搜索中忽略大小写
     
      list:显示制表位(Ctrl+I)和行尾标志($)
     
      number:显示行号
     
      report:显示由面向行的命令修改过的数目
     
      terse:显示简短的警告信息
     
      warn:在转到别的文档时若没保存当前文档则显示NO write信息
     
      nomagic:允许在搜索模式中,使用前面不带“”的特别字符
     
      nowrapscan:禁止vi在搜索到达文档两端时,又从另一端开始
     
      mesg:允许vi显示其他用户用write写到自己终端上的信息
     
      最后行方式命令
     
      :n1,n2 co n3:将n1行到n2行之间的内容拷贝到第n3行下
     
      :n1,n2 m n3:将n1行到n2行之间的内容移至到第n3行下
     
      :n1,n2 d :将n1行到n2行之间的内容删除
     
      :w :保存当前文档
     
      :e filename:打开文档filename进行编辑
     
      :x:保存当前文档并退出
     
      :q:退出vi
     
      :q!:不保存文档并退出vi
     
      :!command:执行shell命令command
     
      :n1,n2 w!command:将文档中n1行至n2行的内容作为command的输入并执行之,若不指
     
      定n1,n2,则表示将整个文档内容作为command的输入
     
      :r!command:将命令command的输出结果放到当前行 。
    

      

    linux > 正文
     
    
    vim 命令
     
    Nov132011
     
    
    作者:逝去日子   发布:2011-11-13 19:38   分类:linux   阅读:90 views   暂无评论   
    
    
    
    
    
    Vim是从vi发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。和Emacs并列成为类Unix系统用户最喜欢的编辑器。我把我收集来的一些命令分享下。
     
    
    1.
     vim
     #在命令行中输入vim,进入vim编辑器
     2.
     i
     #按一下i键,下端显示 –INSERT–
     #插入命令,在vim中可能任意字符都有作用
     3.
     Esc
     #退出i(插入)命令进行其它命令使用
     4.
     :r filename
     #读入一个文件内容,并写入到当前编辑器中
     5.
     :w newfilename
     #将该编辑器中的内容写入到一个新文件中
     6.
     :w
     #在编辑的过程中保存文件,相当于word中的ctrl+s
     7.
     :! command
     暂时离开 vi 到指令列模式下执行 command 的显示结果!例如
     :!ls
     #在编辑过程中执行shell命令ls
     8.
     :sh
     #进入shell命令行,执行完命令后ctrl+d退出重新进入vim编辑继续编辑
     在shell命令下,执行ctral+l完成清屏
     9.
     :wq
     #保存文件并退出
     10.
     ZZ
     #保存文件并退出,同上一个命令,注意大写
     11.
     :q!
     #强制退出,不保存
     12.
     :set number或者:set nu
     #使编辑中的文件显示行号
     13.
     :set nonumber或者:set nonu
     #与上一条命令相反,不显示行号
     14.
     :help i
     #查看插入命令帮助
     15.
     u
     #撤消上一步操作
     16.
     /Fedora
     #查找Fedora字符
     17.
     :s /Fedora/Redhat
     #将Fedora字符替换为Redhat(只替换在光标所在的行)
     18.
     dw
     #删除单词
     dd
     #删除行
     19.
     o
     #打开空白一行
     20.
     vim + filename
     #进行文件最后一行进行编辑
     21.
     vim +n filename
     #进入文件第n行进行编辑
     22.
     :1,.s/redhat/fedora
     #.号表示当前行,即光标所在行
     #将第1行到当前行(.)第一次出现的redhat字符代替为fedora
     23.
     :1,.s/redhat/fedora/g
     #将第1行到当前行(.)所有出现的redhat字符代替为fedora,g
     全局标志
     24.
     :1,$s/redhat/fedora/g
     #$表示最后一行
     #将第1行到最后一行所有出现的redhat字符代替为fedora
     25.
     :%s/redhat/fedora/g
     #同上一个命令
     26.
     :%s//fedora/g
     #将第1行到最后一行所有出现的redhat字代替为fedora
     #字,而不是字符
     27.
     :f
     #显示文件内容,状态等等
     #同ctrl+g命令
     28.
     :e!
     #当前文件,返回到上次保存
     :e file
     #切换编辑文件
     29.
     :n
     #当编辑时有多个文件(比如vim file1 file2)时切换到下一个文件,与:e file
     结合使用
     
    VIM命令大全
     光标控制命令
     命令 光标移动
     h 向左移一个字符
     j 向下移一行
     k 向上移一行
     l 向右移一个字符
     G 移到文件的最后一行
     w 移到下一个字的开头
     W 移到下一个字的开头,忽略标点符号
     b 移到前一个字的开头
     B 移到前一个字的开头,忽略标点符号
     L 移到屏幕的最后一行
     M 移到屏幕的中间一行
     H 移到屏幕的第一行
     e 移到下一个字的结尾
     E 移到下一个字的结尾,忽略标点符号
     ( 移到句子的开头
     ) 移到句子的结尾
     { 移到段落的开头
     } 移到下一个段落的开头
     0(数字), | 移到当前行的第一列
     ^ 移到当前行的第一个非空字符
     $ 移到当前行的最后一个字符
     +, Enter 移到下一行的第一个字符
     - 移到前一行的第一个非空字符
     在 vi 中添加文本
     命令 插入动作
     a 在光标后插入文本
     A 在当前行插入文本
     i 在光标前插入文本
     I 在当前行前插入文本
     o 在当前行的下边插入新行
     O 在当前行的上边插入新行
     s 删除光标所在处字符,并进入插入模式
     S 删除光标所在的行,并进入插入模式
     :r file 读入文件 file 内容,并插在当前行后
     :nr file 读入文件 file 内容,并插在第 n 行后
     Esc 回到命令模式
     ^v char 插入时忽略 char 的指定意义,这是为了插入特殊字符
     在 vi 中删除文本
     命令 删除操作
     x 删除光标处的字符
     dw 删至下一个字的开头
     dG 删除行,直到文件结束
     dd 删除整行
     db 删除光标前面的字
     :n,md 从第 m 行开始往前删除 n 行
     d, d$ 从光标处删除到行尾
     ^h, backspace 插入时,删除前面的字符
     ^w 插入时,删除前面的字
     修改 vi 文本
     每个命令前面的数字表示该命令重复的次数
     命令 替换操作
     rchar 用 char 替换当前字符
     R text escape 用 text 替换当前字符直到按下 Esc 键
     stext escape 用 text 代替当前字符
     S 或 cctext escape 用 text 代替整行
     cwtext escape 将当前字改为 text
     Ctext escape 将当前行余下的改为 text
     cG escape 修改至文件的末尾
     ccursor_cmd text escape 从当前位置处到光标命令位置处都改为 text
     在 vi 中查找与替换
     命令 查找与替换操作
     /text 在文件中向前查找 text
     ?text 在文件中向后查找 text
     n 在同一方向重复查找
     N 在相反方向重复查找
     ftext 在当前行向前查找 text
     Ftext 在当前行向后查找 text
     ttext 在当前行向前查找 text,并将光标定位在 text 的第一个字符
     Ttext 在当前行向后查找 text,并将光标定位在 text 的第一个字符
     :set ic 查找时忽略大小写
     :set noic 查找时对大小写敏感
     :ranges/pat1/pat2/g 用 newtext 替换 oldtext
     :m,ns/oldtext/newtext 在 m 行通过 n,用 newtext 替换 oldtext
     & 重复最后的 :s 命令
     :g/text1/s/text2/text3 查找包含 text1 的行,用 text3 替换 text2
     :g/text/command 在所有包含 text 的行运行 command 所表示的命令
     :v/text/command 在所有不包含 text 的行运行 command 所表示的命令
     在 vi 中复制文本
     命令 复制操作
     yy 将当前行的内容放入临时缓冲区
     nyy 将 n 行的内容放入临时缓冲区
     p 将临时缓冲区中的文本放入光标后
     P 将临时缓冲区中的文本放入光标前
     “(a-z)nyy 复制 n 行放入名字为圆括号内的可命名缓冲区,省略 n 表示当前行
     “(a-z)ndd 删除 n 行放入名字为圆括号内的可命名缓冲区,省略 n 表示当前行
     “(a-z)p 将名字为圆括号的可命名缓冲区的内容放入当前行后
     “(a-z)P 将名字为圆括号的可命名缓冲区的内容放入当前行前
     在 vi 中撤消与重复
     命令 撤消操作
     u 撤消最后一次修改
     U 撤消当前行的所有修改
     . 重复最后一次修改
     , 以相反的方向重复前面的 f、F、t 或 T 查找命令
     ; 重复前面的 f、F、t 或 T 查找命令
     “np 取回最后第 n 次的删除(缓冲区中存有一定次数的删除内容,一般为 9)
     n 重复前面的 / 或 ? 查找命令
     N 以相反方向重复前面的 / 或 ? 命令
     保存文本和退出 vi
     命令 保存和/或退出操作
     :w 保存文件但不退出 vi
     :w file 将修改保存在 file 中但不退出 vi
     :wq 或 ZZ 或 保存文件并退出 vi
     :q! 不保存文件,退出 vi
     :e! 放弃所有修改,从上次保存文件开始再编辑
     vi 中的选项
     选项 作用
     :set all 打印所有选项
     :set nooption 关闭 option 选项
     :set nu 每行前打印行号
     :set showmode 显示是输入模式还是替换模式
     :set autoindent 继承前一行的缩进方式,特别适用于多行注释
     :set smartindent 为C程序提供自动缩进
     :set list 显示制表符(^I)和行尾符号
     :set ts=8 为文本输入设置 tab stops
     :set window=n 设置文本窗口显示 n 行
     :set number 显示行数
     :set nonumber 取消显示行数
     vi 的状态
     选项 作用
     :.= 打印当前行的行号
     := 打印文件中的行数
     ctrl+g 显示文件名、当前的行号、文件的总行数和文件位置的百分比
     :l 使用字母 “l” 来显示许多的特殊字符,如制表符和换行符
     在文本中定位段落和放置标记
     选项 作用
     { 在第一列插入 { 来定义一个段落
     [[ 回到段落的开头处
     ]] 向前移到下一个段落的开头处
     m(a-z) 用一个字母来标记当前位置,如用 mz 表示标记 z
     ‘(a-z) 将光标移动到指定的标记,如用 ‘z 表示移动到 z
     在 vi 中连接行
     选项 作用
     J 将下一行连接到当前行的末尾
     nJ 连接后面 n 行
     光标放置与屏幕调整
     选项 作用
     H 将光标移动到屏幕的顶行
     nH 将光标移动到屏幕顶行下的第 n 行
     M 将光标移动到屏幕的中间
     L 将光标移动到屏幕的底行
     nL 将光标移动到屏幕底行上的第 n 行
     ^e(ctrl+e) 将屏幕上滚一行
     ctrl+y 将屏幕下滚一行
     ctrl+u 将屏幕上滚半页
     ctrl+d 将屏幕下滚半页
     ctrl+b 将屏幕上滚一页
     ctrl+f 将屏幕下滚一页
     ctrl+l 重绘屏幕
     z-return 将当前行置为屏幕的顶行
     nz-return 将当前行下的第 n 行置为屏幕的顶行
     z. 将当前行置为屏幕的中央
     nz. 将当前行上的第 n 行置为屏幕的中央
     z- 将当前行置为屏幕的底行
     nz- 将当前行上的第 n 行置为屏幕的底行
     vi 中的 shell 转义命令
     选项 作用
     :!command 执行 shell 的 command 命令,如 :!ls
     :!! 执行前一个 shell 命令
     :r!command 读取 command 命令的输入并插入,如 :r!ls 会先执行 ls,然后读入内容
     :w!command 将当前已编辑文件作为 command 命令的标准输入并执行 command 命令,如 :w!grep all
     :cd directory 将当前工作目录更改为 directory 所表示的目录
     :sh 将启动一个子 shell,使用 ^d(ctrl+d) 返回 vi
     :so file 在 shell 程序 file 中读入和执行命令
     vi 中的宏与缩写
     (避免使用控制键和符号,不要使用字符 K、V、g、q、v、*、= 和功能键)
     选项 作用
     :map key command_seq 定义一个键来运行 command_seq,如 :map e ea,无论什么时候都可以 e 移到一个字的末尾来追加文本
     :map 在状态行显示所有已定义的宏
     :umap key 删除该键的宏
     :ab string1 string2 定义一个缩写,使得当插入 string1 时,用 string2 替换 string1。当要插入文本时,键入 string1 然后按 Esc 键,系统就插入了 string2
     :ab 显示所有缩写
     :una string 取消 string 的缩写
     在 vi 中缩进文本
     选项 作用
     ctrl+i或 tab 插入文本时,插入移动的宽度,移动宽度是事先定义好的
     :set ai 打开自动缩进
     :set sw=n 将移动宽度设置为 n 个字符
     n> 使 n 行都向右移动一个宽度,例如 3>> 就将接下来的三行每行都向右移动一个移动宽度
    

      

    于电脑的技术与艺术 
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    vi 常用命令行
    
    
    暂时不完善,不断更新和整理中....
    
    1.vi 模式
    a) 一般模式:vi处理文件时,一进入该文件,就是一般模式了.
    b) 编辑模式:在一般模式下可以进行删除,复制,粘贴等操作,却无法进行编辑操作。等按下‘i,I,o,O,a,A,r,R’等 
    字母之后才能进入编辑模式.通常在linux中,按下上述字母时,左下方会出现'INSERT'或者‘REPLACE’字样,才可以
    输入任何文字到文件中.要回到一般模式,按下[ESC]键即可.
    c) 命令行模式:在一般模式中,输入“: 或者/或者?”,即可将光标移动到最下面一行,在该模式下,您可以搜索数据,而且读取,
    存盘,大量删除字符,离开vi,显示行号等操作.
    
    
    2.vi 常用命令汇总:
    2.1 一般模式
    a) 移动光标: 
    上下左右方向键 ↑(k)↓(j)←(h) →(l)
    翻页 pagedown / pageup 按键 
    数字 0 : 将光标移动到当前行首 
    $ : 将光标移动到当前行尾
    G : 移动到这个文件的最后一行
    
    nG : n为数字,移动到这个文件的第n行. 
    gg : 移动到这个文件的第一行相当于1G 
        
    b)  搜索与替换 
    /word :  从光标开始,向下查询一个名为word的字符串。 
    :n1、n2s/word1/word2/g : n1 与n2 为数字.在第n1与n2行之间寻找word1这个字符串, 并将该字符串替换为word2。
    :1、$s/word1/word2/g : 从第一行到最后一行寻找word1字符串,并将该字符串替换为word2 
    :1、$s/word1/word2/gc: 从第一行到最后一行寻找word1字符串,并将该字符串替换为word2。 并且在替换之前显示提示符给用户确认(conform)是否需要替换。
    
    
    c) 删除,复制,粘贴 
    x,X  : 在一行中,x为向后删除一个字符(相当于del键),X为向前删除一个字符(相当于backspace键)。 
    dd   : 删除光标所在的那一整行。 
    ndd  : n 为数字。从光标开始,删除向下n列。 
    yy   : 复制光标所在的那一行。   
    nyy  : n为数字。复制光标所在的向下n行。 
    p,P  : p 为将已复制的数据粘贴到光标的下一行,P则为贴在光标的上一行。 
    u    : 复原前一个操作 
    CTRL + r : 重做上一个操作。
    小数点'.': 重复前一个动作。
    
    
    2.2  编辑模式:
    i, I : 在光标所在处插入输入文字,已存在的文字向后退。i 为‘从当前光标所在处插入’,I 为‘在当前所在行的一个非空格符处开始插入’。 
    a, A : a 为‘从当前光标所在处的下一个字符开始插入’。A 为‘从光标所在行的最后一个字符处开始插入’。 
    o,O  : 这是英文o的大小写。o为‘在当前光标所在行的下一行处插入新的一行’。O表示‘在当前光标所在行的上一行插入新的一行’。 
    r,R  : 替换:r 会替换光标所在的那一个字符。 R : 会一直替换光标所在的字符,直到按下esc 键为止。 
    ESC  : 进入一般模式。
    
    
    2.3 命令模式:
    a) :w   : 将编辑的数据写入硬盘
    b) :q   : 离开vi
    c) :q!  : 强制离开,不存储
    d) :wq  : 存储后离开
    e) :wq! : 强制存储后离开
    
    3. vim 附加命令行
    3.1 块选择(visual block)
    v  字符选择,将光标经过的地方反白显示
    V  行选择,会将光标经过的行反白选择
    ctrl + v 块选择,可以用长方形的方式选择数据
    y  复制反白的地方 
    d  将反白的地方删除掉
    3.2 多文件编辑
    :n  编辑下一个文件
    :N  编辑上一个文件
    :files  列出当前vim 打开的所有文件
    3.3 多窗口功能
    :sp 【filename】打开一个新窗口,如果加filename,表示在新窗口打开一个新文件否则表示两个窗口为同一个文件内容
    ctrl+wj  先按下ctrl ,再按下w后,放开所有按键,然后按下j,则光标可移动到下方的窗口
    ctrl+wk  同上,不过光标移动到上面的窗口
    ctrl+wq  其实就是:q结束离开。
    

      

  • 相关阅读:
    线程的五种状态
    ajax回调打开新窗体防止浏览器拦截有效方法
    mysql 如果字段为null自动返回需要的信息sql
    String 与 StringBuffer的区别
    Windows Git中文文件名乱码
    定义函数指针
    hello world
    C++析构函数调用异常问题研究
    企业开发的时候,有可能碰到的问题
    jmap
  • 原文地址:https://www.cnblogs.com/qmfsun/p/3139150.html
Copyright © 2020-2023  润新知