vim学习笔记
1 vim 简介
1.1 vim 介绍
-
vi 介绍: vi是visual interface的简称,是Linux中最经典的文本编辑器,具有 “编辑器之神” 的称号。vi的核心设计思想是:让程序员的手始终保持在键盘的核心区域就能够完成所有的编辑操作。
-
vim 介绍: vim是vi improved的简称,是从vi发展出来的一个文本编辑器,在代码补全、编译及错误跳转等方便编程的功能上特别丰富,在程序员中被广泛使用。vim的设计理念是命令的组合。用户学习了各种各样的文本间移动、跳转的命令和其它的普通模式的编辑命令,并且能够灵活组合使用这些命令,则能够比那些没有模式的编辑器更加高效的进行文本编辑。同时vim与很多快捷键设置和正则表达式类似,可以辅助记忆。并且vim针对程序员做了优化。
1.2 vim 使用
- vim 使用:在shell终端中使用以下命令即可以使用vim打开指定路径下的指定文件,然后即可对文件内容进行编辑。
说明:如果打开的文件不存在,则会创建该文件。vim /path/filename
1.3 vim 模式
-
常用模式: vim有多种工作模式,但是常用的只有以下种:
模式名称 模式说明 命令模式 用户启动vim时,首先进入的便是命令模式。在该模式下,键盘输入的字符都会被当做命令而被执行。
该模式下可进行:跳转、查找、删除、替换、复制、粘贴、撤销、恢复、缩进等操作。插入模式 在该模式下,可以对文本的内容进行编辑。 末行模式 在该模式下,可以执行保存、退出等操作。 可视模式 在该模式下,可以对内容进行选取等操作。 -
模式切换:
切换说明:插入模式、末行模式、可视模式,这三者之间都不能直接切换,必须先切换成命令模式才能切换到对应模式。
1.4 vim 键盘
- vim 键盘:
2 命令模式
2.1 跳转命令
-
方向移动:
命令 功能 h 光标向左移一位 j 光标向下移一位 k 光标向上移一位 l 光标向右移一位 -
行内移动:
命令 功能 0 光标移至行首 $ 光标移至行尾 ^ 光标移至当前行的第一个非空字符 g_ 光标移至当前行的最后一个非空字符 b 光标移至上一个词的开头 w 光标移至下一个词的开头 e 光标移至下一个词的结尾 ge 光标移至上一个词的结尾 fa 光标移至下一个a出现的位置 Fa 光标移至上一个a出现的位置 ta 光标移至下一个a出现位置的前一个位置 Ta 光标移至上一个a出现位置的后一个位置 -
行间移动:
命令 功能 gg 光标移至文首 G 光标移至文尾 ngg 或 nG 光标移至第n行的行首 -
语义移动:
命令 功能 ( 光标移至上一句首 ) 光标移至下一句尾 { 光标移至上一段首 } 光标移至下一段尾 -
屏幕移动:
命令 功能 H 光标移至屏幕最顶行的行首 M 光标移至屏幕中间行的行首 L 光标移至屏幕最底行的行首 Ctrl + u 向上翻半页 Ctrl + d 向下翻半页 Ctrl + b 向上翻一页 Ctrl + f 向下翻一页
2.2 查找命令
-
正向查找命令:在命令模式下输入字符 /,后面紧跟要查找的字符串,然后按回车键,即可执行正向查找,并且查找到指定字符串后,将光标停在该字符串的开头。
/要查找的字符串
-
反向查找命令:在命令模式下输入字符 ?,后面紧跟要查找的字符串,然后按回车键,即可执行反向查找,并且查找到指定字符串后,将光标停在该字符串的开头。
?要查找的字符串
-
查找快捷键:当使用查找命令查找到指定字符串之后,就可以使用以下快捷键继续查找。
快捷键 功能 n 查找下一个 N 查找上一个 * 向下查找当前光标所在的词 # 向上查找当前光标所在的词
2.3 删除命令
-
删除命令:在命令模式下可以使用删除命令对文本内容进行删除。
命令 功能 x 删除光标处的字符 nx 删除光标处至右侧的 n 个字符(包括光标处的字符) dd 删除光标所在行 ndd 删除光标处至下方的 n 行 dw 删除光标右侧的词,并删除空隙(包括光标处的字符) ndw 删除光标右侧的 n 个词,并删除空隙(包括光标处的字符) db 删除光标左侧的词,不删除空隙(不包括光标处的字符) ndb 删除光标左侧的 n 个词,不删除空隙(不包括光标处的字符) d0 删除光标左侧至行首的内容(不包括光标处的字符) d$ 删除光标右侧至行尾的内容(包括光标处的字符) D 删除光标右侧至行尾的内容(包括光标处的字符) J 删除本行的回车符,并和下一行合并 -
删除说明:删除命令删除的内容并没有真正丢失,而是被剪切到了一个内存缓冲区中,可以使用命令将其粘贴到指定位置。
2.4 替换命令
-
替换模式:在命令模式下可以使用替换命令对文本内容进行替换。
命令 功能 r 把光标处的字符替换成即将输入的 1 个字符 nr 把光标处至右侧的 n 个字符全部替换成即将输入的 1 个字符(包括光标处的字符) R 进入替换模式,每输入 1 个字符就替换 1 个字符,并使光标向右移动一位 s 进入插入模式,并删除光标处的 1 个字符,以便在删除的位置插入新的内容 ns 进入插入模式,并删除光标处至右侧的 n 个字符,以便在删除的位置插入新的内容 S 进入插入模式,并删除光标所在行的内容,以便重新编辑该行的内容 nS 进入插入模式,并删除光标处至下方的 n 行的内容,以便重新编辑该行的内容 cw 进入插入模式,并删除光标右侧的词,以便在删除的位置插入新的内容 ncw 进入插入模式,并删除光标右侧的 n 个词,以便在删除的位置插入新的内容 cb 进入插入模式,并删除光标左侧的词,以便在删除的位置插入新的内容 ncb 进入插入模式,并删除光标左侧的 n 个词,以便在删除的位置插入新的内容 c0 进入插入模式,并删除光标左侧至行首的内容,以便在删除的位置插入新的内容 c$ 进入插入模式,并删除光标右侧到行尾的内容,以便在删除的位置插入新的内容
2.5 复制命令
-
复制命令:复制命令用于把选择的内容复制到内存缓冲区中,以便稍后使用。
命令 功能 yaw 复制光标处所在的词到内存缓冲区 yw 复制光标处至词尾的内容到内存缓冲区 yy 复制当前行的内容到内存缓冲区 nyy 复制光标处至下方的 n 行的内容到内存缓冲区
2.6 粘贴命令
-
粘贴命令:粘贴命令用于把内存缓冲区中的内容粘贴到指定的位置。
命令 功能 p 把缓冲区中的内容粘贴到光标的后面 P 把缓冲区中的内容粘贴到光标的前面 -
粘贴说明:如果缓冲区中的内容是字符或字,则是粘贴在光标的前面或后面;如果缓冲区中的内容为整行正文,则是粘贴在当前光标所在行的上一行或下一行。
2.7 撤销命令
-
撤销命令:
命令 功能 u 撤销前一次命令的影响
2.8 恢复命令
-
恢复命令:
命令 功能 Ctrl + r 恢复前一次撤销命令的影响,相当于重做
2.9 缩进命令
-
缩进命令:
命令 功能 >> 把当前行的内容向右缩进 << 把当前行的内容向左缩进
2.10 其它命令
-
其它命令:
命令 功能 . 在新的光标位置重复前面执行过的编辑命令 ~ 把光标处的字母大小写转换,并把光标右移一位 Ctrl + a 把光标处的数字加1 Ctrl + x 把光标处的数字减1
3 插入模式
-
相关命令:从命令模式输入以下命令,即可进入插入模式,并在不同的位置开始对文本内容进行编辑。
命令 功能 i 在光标左侧插入内容 a 在光标右侧插入内容 o 在当前行的下方插入一个新行 O 在当前行的上方插入一个新行 I 在当前行的行首插入内容 A 在当前行的行尾插入内容
4 末行模式
4.1 文件命令
-
文件命令:在末行模式下,可以对文件执行退出、保存、读取、打开、恢复等命令。
命令 功能 :q 对文件中的内容没有修改的情况下,直接退出 :q! 对文件中的内容做了修改的情况下,退出且不保存 :wq 对文件中的内容做了修改的情况下,先保存再退出 :w 保存当前文件中的内容,但不退出 :w file 把当前文件中的内容另存到新文件 file 中,但不保存当前文件中的内容,也不退出 :n w file 把第 n 行的内容写到新文件 file 中 :n, m w file 把第 n 行至第 m 行的内容写到新文件 file 中 :1,. w file 把第 1 行至当前行的内容写到新文件 file 中 :.,$ w file 把当前行至文末的内容写到新文件 file 中 :.,.+n w file 把从当前行开始的连续 n 行的内容写到新文件 file 中 :e file 在已经启动的vim窗口中打开文件 file :r file 读取文件 file 中的内容,并插入到光标所在行的后面
4.2 跳转命令
-
行号命令:在末行模式下,可以跳转到指定行。
命令 功能 :n 跳转到第 n 行的行首
4.3 查找命令
-
字符串查找命令:插入模式下可以查找指定的字符串,即可以正向查找,也可以反向查找,而且可以使用正则表达式。
命令 功能 :/str/ 正向查找字,并将光标移动到下一个包含字符串 str 的行的行首 :?str? 反向查找, 并将光标移动到上一个包含字符串 str 的行的行首 :/str/w file 正向查找,并将第一个包含字符串 str 的行写到文件 file 中 :/str1/, /str2/w file 正向查找,并将包含字符串 str1 的行至包含字符串 str2 的行写到文件 file 中
4.4 删除命令
-
删除命令:
命令 功能 :d 删除光标所在的行 :nd 删除第 n 行 :m,nd 删除第 m 行至第 n 行 :1,.d 删除第 1 行至当前行 :.,$d 删除当前行至文末 :/str/d 删除从当前行开始的首个包含有字符串 str 的行 :/str1/,/str2/d 删除字符串 str1 至 字符串 str2 的所有行
4.5 替换命令
-
字符串替换命令:插入模式下可以进行字符串替换,即可以替换首次匹配,也可替换全部匹配,而且可以使用正则表达式。
命令 功能 : s/str1/str2/ 在行内查找字符串 str1,如果找到了就用字符串 str2 替换首个的字符串 str1 : s/str1/str2/g 在行内查找字符串 st1,如果找到了就用字符串 str2 替换所有的字符串 str1 : % s/str1/str2/g 在全文中查找字符串 st1,如果找到了就用字符串 str2 替换所有的字符串 str1 :m,n s/str1/str2/g 在第 m 行至第 n 行中查找字符串 str1, 如果找到了就用字符串 str2 替换所有的字符串 str1 :1,. s/str1/str2/g 在第 1 行至当前行中查找字符串 str1,如果找到了就用字符串 str2 替换所有的字符串 str1 :.,$ s/str1/str2/g 在当前行至文末中查找字符串 str1,如果找到了就用字符串 str2 替换所有的字符串 str1 -
替换命令说明:s 表示后面跟着一串替换的命令;% 表示替换范围是全文;g 表示对指定范围内查找到的字符串全都替换。
4.6 分屏命令
-
分屏命令
命令 功能 :sp 垂直切分当前窗口,新窗口仍显示当前缓冲区中的内容 :sp file 垂直切分当前窗口,新窗口显示文件 file 中的内容 :clo 关闭活动窗口 :on 只保留活动窗口,关闭其他所有窗口 Ctrl + w + h 切换到当前分屏的左边一屏 Ctrl + w + l 切换到当前分屏的右边一屏 Ctrl + w + j 切换到当前分屏的下方一屏 Ctrl + w + k 切换到当前分屏的上方一屏 Ctrl + w + w 在分屏之间切换 -
其它分屏:在shell终端里启动vim时也可以开启分屏操作。
# 垂直分屏 vim -on file1 file2 ... # 水平分屏 vim -On file1 file2 ...
4.7 行号命令
-
行号命令:在末行模式下,可以设置是否显示行号。
命令 功能 :set nu 显示行号 :set nonu 隐藏行号
5 可视模式
5.1 选择内容
-
选择内容:进入可视模式之后,利用跳转命令即可选择内容。
命令 功能 h 选中左侧的单位内容 j 选中下方的单位内容 k 选中上方的单位内容 l 选中右侧的单位内容
5.2 替换内容
-
替换内容:选择内容之后,利用替换命令即可把已选择的内容替换成指定字符。
命令 功能 r 把已选择的所有字符全部替换成即将输入的 1 个字符
5.3 删除内容
-
删除内容:选择内容之后,利用删除命令即可删除已选择的内容。
命令 功能 x 删除已选中的内容 d 删除已选中的内容 D 删除已选中的内容所在的行
5.4 复制内容
-
复制内容:选择内容之后,利用复制命令即可复制已选择的内容。
命令 功能 y 复制已选中的内容
5.5 字符转换
-
字符转换:选择内容之后,利用字符转换命令即可实现字符大小写转换。
命令 功能 u 把已选择的所有字符全部转换成小写字符 U 把已选择的所有字符全部转换成大写字符
如果觉得本文对您有帮助,请关注博主的微信公众号,会经常分享一些Java和大数据方面的技术案例!