如果你安装了 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.