如果你安装了 vim,你可以使用中文版本的 vimtutor (Vim 教程) 学习基本的 Vim 命令:
1vimtutor zh-cn
vim 初步
使用vim
在命令行键入命令即可使用 vim:
1vim file.txt
以波纹线 (~) 开头的行表示该行在文件中不存在。换句话说,如果 Vim 打开的文件不能充满这个显示的屏幕,它就会显示以波纹线开头的行。
插入文本
Vim 是一个多模式的编辑器。就是说,在不同模式下,编辑器的响应是不同的。在普通模式下,你敲入的字符只是命令;而在插入模式,你敲入的字符就成为插入的文本了。
刚刚进入 Vim 时,它处在普通模式。
通过敲入 "i" 命令 ( i 是插入 (Insert) 的缩写) 可以启动插入模式,这样就可以输入文字了。
最后,你输入 <Esc> 键退出插入模式而回到普通模式。
要看到你在什么模式,输入命令:":set showmode"
无论你在什么模式,要回到普通模式,只要敲
<Esc>就可以了。有时你需要敲两次,如果 Vim 发出 “嘀” 一声,就表示你已经在普通模式了。
移动光标
在普通模式下,可以使用两种方法移动光标:
方法一(通过 hjkl 控制):
"h":左"j":下"k":上"l":右
方法二(通过方向键控制):
"←":左"↓":下"↑":上"→":右
删除字符
要删除一个字符,把光标移到它上面然后输入 "x"。(通过在字符上输入多个 x 可以删除多个字符)。
要删除一整行,使用 "dd" 命令,后一行会移上来填掉留下的空行 。
在 Vim 中你可以把两行连起来,这意味着删除两行间的换行符。光标移动到第一行,按下 "J" 即可。
撤销与重做
使用 "u" 命令撤销上一个编辑操作。
如果你输入
"u"两次,你的文本恢复原样,那应该是你的 Vim 被配置在 Vi 兼容模式了。
如果你撤销得太多,你可以输入 CTRL-R (redo) 回退前一个命令。换句话说,它撤销一个撤销。
使用 "U" 行撤销命令,撤销所有在最近编辑的行上的操
作。
其他编辑命令
你需要在文本后插入字符。这通过 "a" (append,附加) 命令实现。
使用 "o" 命令在光标下方建立一个新的空行,并把 Vim 切换到插入模式。
使用 "O" 命令 (大写) 在光标上方打开一个新行。
指定计数:通过使用 "5x" 可以达到 "xxxxx" 的效果。
退出
保存文件并退出,使用 "ZZ" 命令。
放弃修改并退出,使用 ":q!" 命令 ( : 进入命令模式,! 强制命令修饰符)。
使用 Vim 帮助
获取一般的帮助,使用 ":help" 或者 <F1> 键。指令后也可以跟具体的参数,例如:":help x"
使用
CTRL-](进入标签) 和CTRL-T(或者CTRL-O标签回退) 进行跳转
光标移动
以词为单位移动光标
"w" 移动到下一个单词的词首,"b" 命令向后移动到前一个词的词首。
"e" 命令可以移到下一个单词的词末,而 "ge" 则移动到前一个单词的末尾。
移动到行首或者行尾
"$" 命令把光标移动到当前行行尾。如果你的键盘上有 <End> 键,也可以完成相同的功能。
"^" 命令把光标移动到一行的第一个非空字符,而 "0" 命令则移到一行的第一个字符,<Home> 键也可以完成相同的功能。
移动到指定字符(查找字符)
"fx" 命令向前查找本行中的字符 x,"F" 命令用于向左查找。
"tx" 命令与 "fx" 相似,但它只把光标移动到目标字符的前一个字符上,这个命令的反向版本是 "Tx"。
这四个命令可以通过 ";" 命令重复,"," 命令则用于反向重复。无论用哪个命令,光标永远都不会移出当前行。
放弃查找,输入
<Esc>。备注 :
<Esc>可以中止大部分命令,而不仅仅是查找。
括号跳转
对于 () [] {} 括号,可以使用 "%" 命令在左右括号之间跳转。
移动到指定的行
使用 "33G" 可以跳转到 第33行。
"G" 命令把光标移动到文件末。移动到文件首的命令是 "gg" (或者 "1G")。
带计数前缀的 "%" 命令可进行近似跳转,如 "85%"。
对于当前视野区域内的文字而言,"H" 到开头,"M" 到中央,"L" 到结尾。
确认当前位置
使用 CTRL-G 命令即可。
使用 ":set number" 可以加行号,使用 ":set nonumber" 可以取消。
使用 ":set ruler" 可以在窗口右下角显示光标位置。
屏幕滚动
CTRL-U 和 CTRL-D 命令可以向上下滚动半屏,CTRL-B 和 CTRL-F 向上下滚动一屏。类似于 PageUp 和 PageDown。
每次滚一行的命令是 CTRL-Y (向上) 和 CTRL-E (向下)。
可以使用指令 "zz",可以把光标所在行,移动到屏幕中央。
简单查找
查找命令为 "/String",例如查找 “include” 需要输入 "/include"。
"?" 命令功能与 "/" 的功能类似,但进行反方向查找。
查找下一个匹配可以使用 "n" 命令,查找前一个匹配使用 "N" 命令。
通过设置 ":set ignorecase" 或者 ":set ignorecase",可以在查找时忽略大小写。
注:vim的 : / 等模式,均支持使用
↑↓进行历史命令选取
查找长单词 "/TheLongFunctionName" 要输入很多东西,且容易输错。
可以把光标移到那个单词下面,使用 "*" 命令。Vim 会取得光标上的单词并把它作为被查找的字符串,"#" 命令在反向完成相同的功能。
使用 \< \> 可以匹配单词头尾,例如 "/\<the\>" 将只匹配单词 the。
值得注意的是,"*" 和 "#" 命令也使用了 “词首” 和
“词尾” 标记来匹配整个单词 (要部分匹配,使用 "g*" 和 "g#")。
通过 ":set hlsearch" 和 ":set nohlsearch" 可以启用或关闭搜索高亮。
使用 ":nohlsearch",只会临时关闭高亮,但是不会改变搜索高亮设置。
通过 ":set incsearch" 可以在输入字符串时就显示匹配点。
通过 ":set nowrapscan" 可以在查找到文档结束后停止查找。
Vim 支持使用正则式匹配查找。
做小改动
删除内容
"dw" 可以删除一个单词,"d4w" 可以删除4个单词,"d$" 删除当前位置到行尾。
修改文本
"r" 命令不是操作符。它只是等你输入一个字符然后用这个字符替换当前光标上的字符。
"c",表示修改,change。它的作用方式与 "d" 操作符相似,只是完成后会切换到插入模式。例如,"cw" 删除一个词,并切换到插入模式。
"cc" 修改一整行,但它会保留这一行的缩进 (前导空格)。
有些 “操作符-动作” 命令由于经常被使用,所以被设置为单字符命令:
"x""表示"dl"(删除当前光标下的字符)"X"表示"dh"(删除光标左边的字符)"D"表示"d$"(删除到行尾)"C"表示"c$"(修改到行尾)"s"表示"cl"(修改一个字符)"S"表示"cc"(修改一整行)
重复一个修改
"." 是 Vim 中一个非常简单而有用的命令,它重复最后一次的修改操作。"." 命令重复任何除 "u" (撤销),CTRL-R (重做) 和冒号命令外的修改。
可视模式
用 "v" 命令启动可视模式。你可以移动光标到需要的地方,中间的文本会被高亮显示。
如果想对整行做操作,可以使用 "V" 命令来启动可视模式。左右移动不会有任何效果。而通过上下移动,可以一次选择多行。
如果你要处理一个矩形块内的文本,可以使用 CTRL-V 启动可视模式。
如果你在可视模式下选中了一些文字,又需要改变被选择的文字的另一端,用 "o" 命令即可 (表示 other end),光标会移动到被选中文字的另一端。
当使用列块可视模式的时候,你会有四个角,"o" 只是把你移到对角上。而用 "O" 则能移到同一行的另一个角上。
移动文本
当你用 "d","x" 或者其它命令删除文本的时候,这些文字会被存起来。你可以用 "p" 命令重新粘贴出来 (表示 put,放置)。
"P" 命令像 "p" 一样也是插入字符,但插入点在光标前面。
拷贝文本
"y" 命令 (抽出 yank) 可以把文字拷贝到寄存器中。然后用 "p" 命令粘贴到别处。
使用剪贴板
需要在命令前加上 "*",例如 "*y" 和 "*p"
使用替换模式
"R" 命令启动替换模式。在这个模式下,你输入的每个字符都会覆盖当前光标上的字符。这会一直持续下去,直到你输入 <Esc>。
你可以通过 <Insert> 在插入模式和替换模式间切换。
参考链接:
版权声明:本文遵循 CC BY-SA 4.0 版权协议,转载请附上原文出处链接和本声明。
Copyright statement: This article follows the CC BY-SA 4.0 copyright agreement. For reprinting, please attach the original source link and this statement.