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结束离开。

  

上一篇:SilkTest天龙八部系列5-类的属性


下一篇:《JS权威指南学习总结--8.8.4 记忆函数》