VIM 常用操作
VIM 常用操作
本文是使用 vimtutor 对 vim 的学习总结,vimtutor 命令是 VIM 自带的一个教程,推荐使用它来学习 VIM,它会带你一步一步学习 VIM 的基本操作。
进入 VIM
可通过 vi filename 或 vim filename 命令打开文件,如果文件不存在则会新建一个文件。
大部分 Linux 发行版都会默认安装 VIM,且
vi命令会指向vim命令,所以vi和vim命令是等价的。但为了避免不同发行版的差异,建议使用vim命令。
退出 VIM
:q退出 VIM:q!强制退出 vim 不保存修改的内容:w保存修改,但不退出 VIM。:wq保存修改并退出 VIM。:w filename将修改保存到 filename 文件中,但不退出 VIM。:wq! filename将当前正在编辑的文件保存到 filename 文件中,并退出 VIM,忽略对当前文件的修改。
进入编辑模式
在 VIM 中,可以通过 i 命令进入编辑模式,此时可以对文件进行编辑。
i在当前光标所在位置进入编辑模式I在当前行的第一个字符进入编辑模式a在当前光标所在位置的下一个字符进入编辑模式A在当前行的最后一个字符进入编辑模式o在当前行的下一行插入一个新行,并进入编辑模式O在当前行的上一行插入一个新行,并进入编辑模式
退出编辑模式
在 VIM 中,可以通过 ESC 键退出编辑模式。这时是命令模式,可以输入命令。
命令模式
移动光标
在 VIM 中,可以通过 h j k l 键移动光标,分别对应左、下、上、右。
删除字符
字符删除:
x删除光标所在位置的字符X删除光标所在位置的前一个字符
单词删除:
dw删除光标所在位置到下一个单词开头的字符,包括空格 (注记:delete word)db删除光标所在位置到上一个单词开头的字符,包括空格 (注记:delete back)de删除光标所在位置到下一个单词结尾的字符 (注记:delete end)dd删除光标所在行d$删除光标所在位置到行尾的字符
删除命令都会将删除的内容存入剪贴板,可以通过下文的粘贴命令将剪贴板的内容粘贴到文件中。
复制粘贴
yy复制光标所在行yw复制光标所在位置到下一个单词开头的字符,包括空格 (注记:yank word)p粘贴剪贴板内容到光标所在行的下一行 (注记:paste)P粘贴剪贴板内容到光标所在行的上一行
还可以使用 v 进入可视模式,然后使用 h j k l 键移动光标,选中一段文本,然后按 y 复制选中的文本,再根据需要使用 p 或 P 粘贴。(有点像鼠标拖拽选中文本,然后复制粘贴)
撤销重做
u撤销上一次操作Ctrl + r重做被撤销的操作,或者说撤销撤销操作U撤销对整行的修改.重复上一次修改
查找替换
查找:
/word查找 word 字符串,按n查找下一个,按N查找上一个,如果想逆向查找,可以使用?word命令:set ic查找时忽略大小写 (ignore case):set is查找时显示匹配的字符串 (ignore case):set hls查找时高亮显示匹配的字符串 (highlight search)
查找括号匹配:
%查找括号匹配,如()[]{},光标放在括号上,按%可以跳转到匹配的括号上:set showmatch设置括号匹配高亮
替换:
r按下 r 后输入一个字符,将光标所在位置的字符替换为输入的字符R按下 R 后进入替换模式,每输入一个字符,将光标所在位置的字符替换为输入的字符,并向右移动一个字符。按ESC退出替换模式ce删除光标所在位置到下一个单词结尾的字符,并进入编辑模式c$删除光标所在位置到行尾的字符,并进入编辑模式:s/old/new将当前行第一个 old 替换为 new:s/old/new/g将当前行所有 old 替换为 new (其中g为 global 的意思):%s/old/new/g将所有行所有 old 替换为 new:%s/old/new/gc将所有行所有 old 替换为 new,替换前询问是否替换 (其中c为 confirm 的意思):n1,n2s/old/new/g将第 n1 行到第 n2 行所有 old 替换为 new
移动光标
0移动光标到行首$移动光标到行尾gg移动光标到文件首G移动光标到文件尾nG移动光标到第 n 行, 如10G移动光标到第 10 行n+光标向下移动 n 行, 如10+光标向下移动 10 行n-光标向上移动 n 行, 如10-光标向上移动 10 行n<space>光标向右移动 n 个字符, 如10<space>光标向右移动 10 个字符n<enter>光标向下移动 n 行, 如10<enter>光标向下移动 10 行w光标向右移动一个单词,注记:wordb光标向左移动一个单词,注记:backe光标向右移动到单词结尾,注记:end
文本编辑 - 自由编辑
可以通过 i 命令进入编辑模式,此时可以对文件进行编辑。
文本编辑 - 添加
还可以通过 A 命令进入编辑模式,此时光标在当前字符的后面,可以对文件进行编辑。注意,这种模式下,无法进行删除操作。
命令量化
vim 指令中很多命令都可以量化,如删除字符, 删除行,向某个方向移动光标等,可以量化为删除多少个字符,删除多少行,向某个方向移动多少个字符等。对于这些命令,可以在命令前加上数字,如 10dd 删除 10 行,10w 向右移动 10 个单词,10b 向左移动 10 个单词,10e 向右移动 10 个单词到单词结尾,10+ 光标向下移动 10 行,10- 光标向上移动 10 行,10<space> 光标向右移动 10 个字符,10<enter> 光标向下移动 10 行。
执行外部命令
可以通过 :!command 执行外部命令,如 :!ls 执行 ls 命令,:!date 执行 date 命令。这样可以在 VIM 中执行外部命令,执行完后会返回 VIM,不会退出 VIM。
状态
Ctrl + g显示当前编辑文件的状态,包括文件名,文件状态,总行数,当前行号,光标位置百分比,当前所处列号,如:
"/tmp/tutoralicW3" [已修改] 行 300 / 995 --30%-- 列 8-29 辅助命令
:set number显示行号
在选项前增加 no 可以关闭选项,如
:set nonumber