相关文章推荐
神勇威武的猴子  ·  CSS定位_百度百科·  1 年前    · 

x 删除字符

在交互模式下,将光标定位到一个你想删除的字符上,按下字母键 x(小写的 x),你会发现这个字符被删除了。 效果和在插入模式下用 BackSpace 键(退格键)来删除字符一样。 我们也可以一次性删除多个字符,只需要在按 x 键之前输入数字即可。比如我要删除从光标处字符开始到后面的 4个字符,我可以先按下键盘上的数字键 4,然后再按 x。你会发现,4 个字符被删除了。如果输入 12,再按下 x,那么从光标处开始往后的 12 个字符都会被删除。

d 删除单词

我们用字母键 d(d 是 delete 的首字母,是英语“删除”的意思)来删除单词或者行。其实被删除的内容会被暂存在 内存里,就好像“剪切”。被剪切的内容之后是可以被粘贴的。我们之后会学到,要使用字母键 p。 先从删除行开始:

dd 删除行

连按两次 d 来删除光标所在的那一行。 dd 也可以和数字配合,以实现一次性删除多行。例如,先输入 2,再按下 dd ,就会删除从光标所在行开始的 2 行。

dw :删除一个单词

将光标置于一个单词的首字母处,然后按下 dw (delete word 的缩写,表示“删除单词”),整个单词就会被删除了。如果光标置于单词中的某个字符上,那么只会删除从当前字符开始到下一个空格前的所有字符。当然,你也可以一次性删除 3 个单词,只需要依次按下 3dw 。而且如果你把数字放在 d 和 w 之间也是可以的,例如 d3w 。

d0 和 d$ :删除行首或行末

还记得 0 键和 $ 键吗?之前我们请大家在 Vim 中尽量用这两个键来实现跳转到行首和行末,而不要用 Home 和End 键。

  • 按下 d 键,再加 0 键,就会删除从光标处到行首的所有字符。
  • 按下 d 键,再加 $ 键,就会删除从光标处到行末的所有字符。
  • yy :复制行到内存中

    按两次 y 会把光标所在行复制到内存中。和 dd 类似, dd 用于“剪切”光标所在行到内存中,而 yy 是“复制”。 yw 会复制一个单词, y$ 是复制从光标所在处到行末的所有字符, y0 是复制从光标所在处到行首的所有字符。 y 是 yank 的首字母,是英语“拔出,抽出”的意思。在 Vim 中,yank 就是复制(copy)的意思。就好像把文本拔(yank)起来,之后要粘贴就是放(put)上去。

    p :粘贴

    如果你之前用 dd 来剪切过一行,或者用 yy 来复制过一行,或者是同类操作(比如 y , d w , y 0 , d 0 d , dw , y0 , d0 , d

    r: 替换一个字符

    如果你输入文本时不小心输错了一个字符,你可以用替换来解决。 在交互模式下,将光标置于想要替换的字符上,按下 r 键(r 是 replace 的首字母,是英语“替换”的意思),接着输入你要替换的字符。例如,rs 表示替换当前字符为 s。 如果你用大写的 R,那就是切换到替换模式了。左下角会显示 -- REPLACE -- 。在替换模式下,你可以一次性替换多个字符。

    u: 撤销操作

    这是 Vim 中使用频率很高的按键。 如果要撤销最近的修改,只需要按下 u 键(u 是 undo 的首字母,是英语“撤销”的意思)。同样的,如果想要撤销最近四次修改,可以按下 4,再按下 u。 为了取消撤销,也就是重做之前的修改,只需要按下 Ctrl 键 + r 键(r 是 redo 的首字母,是英语“重做”的意思)。

    g: 跳转到指定行

    g 是 go 的首字母,是英语“去”的意思。 Vim 编辑的文件中,每一行都有一个行号。行号从 1 开始,逐一递增。 在 Vim 中,我们可以注意到右下角有类似这样的字样 4,6 :4 表示行号,6 表示列号。因此 4,6 表示当前光标位于第四行,第六列。 跳转到指定行:

  • 行号 + G 或 行号 + gg 或 行号 + shift+g
  • 要跳转到最后一行,按下 G(大写的 G,Shift + g)
  • /: 查找

    如果你按下 /(斜杠)键,那么就进入了查找模式。这时,你会在左下角看到一个斜杠符号,而且光标会转到斜杠右边,意思是让你输入要查找的字符串:

    此时输入你要查找的字符串,然后按下回车。光标就会转到文件中下一个查找到的匹配处。 如果字符串不存在,那么会显示 “Pattern not found”,表示“没有找到匹配项” 。如下图中我要查找 “dd”,我在 / 之后输入了 dd,再按回车。但是文件中没有这个字符串: 如果要查找下一个匹配项,只需要按 n 键(n 是next 的缩写,表示“下一个”)。如果要反向查找,需要按 N(大写的 n,也就是 Shift + n)。 用斜杠来进行的查找是从当前光标处开始,向文件尾搜索。 如果你要从当前光标处开始,向文件开头搜索,那么将斜杠(/)替换为问号(?)即可,其它功能是一样的。

    s: 查找并替换

    有时候我们光查找字符串还不够,还想实现查找替换。要实现字符串替换,有好几种方法。 最简单的就是: :s/旧字符串/新字符串 。 但是这种方法只会替换光标所在行的第一个匹配的字符串。 我们列出几乎所有实现查找替换的方法:

  • :s/旧字符串/新字符串 :替换光标所在行的第一个匹配的旧字符串为新字符串。例如 :s/write/read 会“替换光标所在行的第一个 write 为 read”
  • :s/旧字符串/新字符串/g :替换光标所在行的所有匹配的旧字符串为新字符串。
  • :#,# s/旧字符串/新字符串/g :替换文件中第 # 行到第 # 行的所有匹配的旧字符串为新字符串。例如 :3,6 s/just/love/g 会“替换文件中第 3 行到第 6 行的所有 just 为 love”
  • :%s/旧字符串/新字符串/g :替换文件中所有匹配的字符串(应该是最常用的吧)。例如 :%s/just/love/g会“替换文件中所有 just 为 love”
  • r: 合并文件

    我们可以用 冒号 + r( :r )实现在光标处插入一个文件的内容。例如: :r 另一个文件名 可以用 Tab 键来自动补全另一个文件的路径。

    :sp :横向分屏

    可以看到,myFile 文件又被打开了一次。这时两个 viewport 的内容是同一个文件:myFile。 当然,我们也可以在两个分开的屏幕中分别打开不同的文件。只需要在输入 :sp 之后空一格,再输入要打开的另一个文件名: :sp 另一个文件名 可以用 Tab 键来自动补全另一个文件的路径。 你可以再输入一次 :sp ,来把屏幕分成 3 块。再输入一次,屏幕会被分成 4 块,以此类推。

    :vsp :垂直分屏

    分屏切换快捷键: | 快捷键 | 作用 | |-------|-------|-------| | Ctrl+w然后按h(或者方向键←) | 移动光标到左边的 viewport | | Ctrl+w然后按j(或者方向键↓) | 移动光标到下边的 viewport | | Ctrl+w然后按k(或者方向键↑) | 移动光标到上边的 viewport | | Ctrl+w然后按l(或者方向键→) | 移动光标到右边的 viewport |

  • Ctrl + w 然后按 + :扩大当前 viewport。
  • Ctrl + w 然后按 - :缩小当前 viewport。
  • Ctrl + w 然后按 = :重新均匀分配各个 viewport 的占比。
  • Ctrl + w 然后按 r :调换各个 viewport 的位置。用 R 的话是反向调换。
  • Ctrl + w 然后按 q 或按 c :关闭当前 viewport。输入 :quit 或 :close 也有一样效果。q 是 quit 的缩写,表示“退出”
  • Ctrl + w 然后按 o :只保留当前所在 viewport,关闭其他 viewport。输入 :only 也有一样效果,o 是 only 的缩写
  • :! :运行外部命令

    在 Vim 中可以运行一些终端命令。只要先输入 :! ,然后接命令名称。 例如, :!ls ,就是 Vim 打开的文件所在目录运行 ls 命令,就会列出当前目录包含的文件: 可以看到,在 Vim 中运行 ls 命令后,终端暂时隐藏了 Vim 的界面,而显示了 ls 命令的运行结果。底下有一句话:“Press ENTER or type command to continue”,表示“按回车键或输入命令来继续”。 我们按下回车键,就切换回我们 Vim 的界面了

    选项参数功用

    以命令模式激活选项参数

    “短暂性”配置选项参数的方法是通过运行一些命令。一旦 Vim 被打开后,要激活一个选项参数,只需要输入: :set 选项名 ,而不激活(取消)一个选项参数,只需要输入 :set no 选项名 ;有些选项参数需要被指定一个值,像这样: :set 选项名=数值 ;如果想了解一个选项参数的状态,只需要输入: :set 选项名?

    在配置文件中配置选项参数

    如果你不喜欢“短暂性”的用命令来配置选项参数的方法,那么可以用一个配置文件,在里面写入所需选项参数的配置。而这也是我们比较推荐的方法,毕竟没有几个人愿意每次打开 Vim 重新配置一次选项参数。 目前在我们的用户家目录还没有 .vimrc (注意前面有一点 . ,表示是隐藏文件)这个 Vim 的配置文件。但是在/etc/vim 目录中有一个文件叫做 vimrc (注意前面没有一点 . )。 我们把 /etc/vim 目录下的 vimrc 拷贝到我们家目录中,并且重命名为 .vimrc。如下: cp /etc/vim/vimrc ~/.vimrc ,打开文件。可以看到一些选项参数的配置行前面有双引号,表示这个选项参数还没有被激活,那么你可以删除行首的双引号来激活这个选项参数。

  • syntax:配置语法高亮 syntax on
  • background:背景着色 background:背景着色
  • number:显示行号 set number
  • showcmd:显示当前命令:当你在 Vim 中输入命令时,有时(主要是在交互模式下)不能看到自己输入的命令。 例如你输入 2dd ,想要删除光标所在的一行和下面的一行,但是你看不到自己输入的命令,不确定到底输了 2dd与否。在 Vim 中,如果你想实时看到自己输入的命令,只要设置: set showcmd
  • ignorecase:在查找时忽略大小写
  • 一般模式切换到命令行模式

  • 【:w】 保存文件
  • 【:w!】 若文件为只读,强制保存文件
  • 【:q】 离开vi
  • 【:q!】 不保存强制离开vi
  • 【:wq】 保存后离开
  • 【:wq!】 强制保存后离开
  • 【:! command】 暂时离开vi到命令行下执行一个命令后的显示结果
  • 【:set nu】 显示行号
  • 【:set nonu】 取消显示行号
  • 【:w newfile】 另存为
  • 【:set fileencoding】 查看当前文件编码格式
  • 【:set fileencoding=utf-8】 设置当前文件编码格式为utf-8,也可以设置成其他编码格式
  • 【:set fileformat】 查看当前文件的断行格式(dos\windows,unix或macintosh)
  • 【:set fileformat=unix】 将当前文件的断行格式设置为unix格式
  • 编辑模式快捷键

  • 【i】 从目前光标所在处插入
  • 【I】 从目前光标
  • 【a】 从当前光标所在的下一个字符处开始插入
  • 【A】 从光标所在行的最后一个字符处开始插入
  • 【o】 英文小写字母o,在目前光标所在行的下一行处插入新的一行并开始插入
  • 【O】 英文大写字母O,在目前光标所在行的上一行处插入新的一行并开始插入
  • 文件恢复模式

  • 【[O]pen Read-Only】 以只读方式打开文件
  • 【[E]dit anyway】 用正常方式打开文件,不会载入暂存文件内容
  • 【[R]ecover】 加载暂存文件内容
  • 【[D]elete it】 用正常方式打开文件并删除暂存文件
  • 【[Q]uit】 按下q就离开vi,不进行其他操作
  • 【[A]bort】 与quit功能类似
  • varfun 后端开发工程师 @北京安定门医院二床患者
    粉丝