zoukankan      html  css  js  c++  java
  • 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结束离开。
    

      

  • 相关阅读:
    [JSOI2007][BZOJ1031] 字符加密Cipher|后缀数组
    leetcode Flatten Binary Tree to Linked List
    leetcode Pascal's Triangle
    leetcode Triangle
    leetcode Valid Palindrome
    leetcode Word Ladder
    leetcode Longest Consecutive Sequence
    leetcode Sum Root to Leaf Numbers
    leetcode Clone Graph
    leetcode Evaluate Reverse Polish Notation
  • 原文地址:https://www.cnblogs.com/qmfsun/p/3139150.html
Copyright © 2011-2022 走看看