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