初学python(03篇--vi命令)

所有的Linux发行版系统上都会默认内置vi编辑器,而不一定带有其他文本编辑器,非常通用;其次,很多软件的编辑接口都会默认调用vi;再者就是对很多热爱编程的大佬来说,可大大提高编程效率,很多黑客也是使用这个编辑器来减少自己摸鼠标时间的。

VI命令的工作模式

更详细的文档请参考:http://c.biancheng.net/view/519.htmlhttp://www.runoob.com/linux/linux-vim.html
简化图:简化图

vi编辑器有三种工作模式:命令模式、插入模式、末行模式。

  • 命令模式:
    此时从键盘上输入的任何字符都被当做编辑命令来解释,同时该模式是进入 vi 编辑器后的默认模式。任何时候,不管用户处于何种模式,按下Esc键即可进入命令模式
  • 插入模式(亦称编辑模式):
    在命令模式下输入插入命令i、附加命令a、打开命令o、修改命令c、取代命令r或替换命令s都可以进入文本输入模式。在该模式下,用户输入的任何字符都被 vi 当做文件内容保存起来,并将其显示在屏幕上。
  • 末行模式(亦称ex 转义模式):
    在命令模式下,用户按 : 键即可进入末行模式下,此时 vi 会在显示窗口的最后一行(通常也是屏幕的最后一行)显示一个:作为末行模式的说明符,等待用户输入命令。多数文件管理命令都是在此模式下执行的(如把编辑缓冲区的内容写到文件中等)。
    vi 编辑器的 3 种模式的转换如下图所示:
    3种模式转换
VI命令的基本操作

一下文本内容的“#”为注释内容,说明功能

进入文件
vi test.py  # 打开名为test.py的文件,若不存在则创建并打开该文件

如果只输入 vi,而不带文件名,也可以进入 vi。这时编辑的文件是没有文件名的,所以在退出 vi 时,需要在退出命令后输入文件名,这样才能保证该文件被保存在磁盘中。

修改文件
插入文本(i和I)

i:将文本插入到光标所在位置前
I:I 命令将文本插入当前行的行首

追加文本(a和A)

a:将新文本追加到光标当前所在位置之后
A:命令将新文本追加到所在行的行尾

空行插入命令(o和O)

o:命令将在光标所在行的下面插入一个空行,并将光标置于该行的行首
O:命令在光标所在行的上面插入一个空行,并将光标置于该行的行首。

移动光标
字符移动
移动命令意义
h左移一个光标
j下移一个光标
k上移一个光标
l右移一个光标
按字移动
  • w 和 W 命令将光标右移至下一个字的字首。
    区别:
    -w 所指的字是指英文单词、标点符号和非字母字符;
    -W 所指的字是指两个空格之间的任何内容;
  • 如果光标起始位置处于字内,则 e 和 E 命令将把光标移到本字字尾;
    如果光标起始位置处于字尾,则 e 和 E 命令将把光标移动到下一个字的字尾。
    区别:
    -e 所指的字是指英文单词、标点符号和非字母字符;
    -E 所指的字是指两个空格之间的任何内容;
  • 如果光标处于所在字内,则 b 和 B 命令将把光标移至本字字首;如果光标处于所在字字首,则 b 和 B 命令将把光标移到上一个字的字首。
    区别:
    -b 命令所指的字是指英文单词、标点符号和非字母字符;
    -B 命令所指的字是指两个空格之间的任何内容。
按行移动
  • H:将光标移至当前屏幕的第 1 行,而不是整个文件的第 1 行。若在 H 命令之前加 上数字 n,则将光标移至第 n 行的行首
  • M:将光标移至屏幕显示文件的中间行的行首。即如果当前屏幕已经充满,则移动到整个屏幕的中间行;否则,移动到显示文本的那些行的中间行。
  • L:将光标移至屏幕显示文件的最底行的行首。即如果文件内容需要超过一个屏幕显示时,该命令将光标移至屏幕上最底行的行首;否则该命令将光标移至文件最后一行的行首。
  • G:在全文的范围内移动光标,此时的光标移动范围不再受屏幕的限制。例如,在上例中,在命令模式下输入命令 5G 之后光标将移到第 5 行的行首。
按段落移动光标

一个段落被定义为是以一个空白行开始和结束的片段。按段落移动光标的命令有以下两种:

  • {:该命令将光标向前移至上一个段落的开头。
  • }:该命令将光标向后移至下一个段落的开头。
文本移动
文本行移动
  • >:将指定的正文行向右移动。
  • >n:n表示光标所在位置后面的文本行数。也可以不写 n,此时默认为 1。
    <:命令将指定的正文行向左移动。其使用方式与命令相同,但是方向相反。
  • >>:该命令将光标所在行右移 8 个空格。如果在>>命令之前给出一个数字 n,例如 4,则表示光标当前行及其下面的 3 行(共4行)都右移 8 个空格。
  • <<:命令将光标所在行左移 8 个空格。其使用与>>命令相同,但是移动方向相反。
文本跨行移动(m命令)
  • imj:表示把第 i 行移至第 j 行的下方。下面实例演示了 m 命令的使用。例:6m2,就是将第6行的内容移动到第2行的下方
替换
字符替换
  • r: 将当前光标所指的字符替换为提供的字符。可以在该命令之前加上数字 n,表示将从当前字符开始的 n 个字符替换为提供的字符。下面实例演示了 r 命令的使用。
  • R:该命令会让 vi 进入 replace 模式。在此模式下,每个输入的字符都会替换当前光标下的字符,直到输入 <Esc> 结束该模式。
字符串替换
  • [range]s/s1/s2/ [option]
  • [range] 表示检索范围,省略时表示当前行;
    1,10表示从第 1 行到 10 行;
    %表示整个文件,同1, ; . , ; . , .,从当前行到文件尾。
  • s 为替换命令。
  • s1 要被替换的串,s2 为替换的串。
  • option 表示选项:
    /g表示在全局文件中进行替换;
    /c表示在每次替换之前需要用户进行确认;
    省略时仅对每行第一个匹配串进行替换。
    例如:%s/<abc/cde 表示将以 abc 开头的单词替换为以 cde 开头。
辅助操作
字符串检索
  • /String:从光标处开始向后寻找字符串 string。
  • ?String:从光标处开始向前寻找字符串 string。
文本复制和粘贴
  • v 命令:在命令模式下进行文本选择。在需要选择的文本的起始处按下 v 键进入块选择模式,然后移动光标到块尾处。这之间的部分被高亮显示,表示被选中.
  • V 命令:在命令模式下按行进行文本选择。在需要选择的文本的第一行按下 V 键,然后移动光标到块的最后一行。这之间的所有行被高亮显示,表示被选中。
  • yy :复制光标所在的整行。在 yy 前可加一个数字 n,表示复制当前行及其后 n-1 行的内容。
  • Y 或 y$ :两命令功能一样,都是复制从光标所在处开始到行尾的内容。
  • yw :复制一个单词。若光标处在某个词的中间,则从光标所在位置开始复制至词尾。同 yy 命令一样,可在 yw 之前加一个数字 n,表示复制 n 个指定的单词。
  • y) :复制到下一句幵始的所有字符。
  • y} :复制到下一段开始的所有字符。
  • y<CR> (<CR> 表示回车):复制包括当前行在内的两行内容。
  • p 命令:粘贴命令,粘贴当前缓冲区中的内容
文本删除

删除单个字符

  • x 命令:删除光标处的字符。若在 x 之前加上一个数字 n,则删除从光标所在位置开始向右的 n 个字符
  • X 命令:删除光标前面的字符。若在 X 之前加上一个数字 n,则删除从光标前面那个字符开始向左的 n 个字符。

删除多个字符

  • dd 命令:该命令删除光标所在的整行。在 dd 前可加上一个数字 n,表示删除当前行及其后 n-1 行的内容。
  • D 命令或 d$ 命令:两个命令功能一样,都是删除从光标所在处开始到行尾的内容。
  • d0 命令:该命令删除从光标前一个字符开始到行首的内容。
  • dw 命令:该命令删除一个单词。若光标处在某个词的中间,则从光标所在位置开始删至词尾。同 dd 命令一样,可在 dw 之前加一个数字n,表示删除 n 个指定的单词。
  • d( 命令:该命令删除到上一句开始的所有字符。
  • d) 命令:该命令删除到下一句开始的所有字符。
  • d} 命令:该命令删除到上一段开始的所有字符。
  • d{ 命令:该命令删除到下一段开始的所有字符。
  • d<CR> 命令:该命令(<CR>表示回车)删除包括当前行在内的两行字符。
操作撤销
  • u :该命令撤销上一次所做的操作。多次使用 u 命令会一步一步依次撤销之前做过的操作(在一次切换到文本输入模式中输入的所有文本算一次操作)。
  • U :该命令会一次性撤销自上次移动到当前行以来做过的所有操作,再使用一次 U 命令则撤销之前的 U 命令所做的操作,恢复被撤销的内容。
退出文件
  • :wq vi将先保存文件,然后退出 vi 返回到 shell。如果当前文件尚未取名,则需要现指定一个文件名。
  • :x 在末行模式下,若当前编辑文件曾被修改过,则 vi 会保存该文件。否则 vi 直接退出,不保存该文件。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值