vi、vim的使用
还记得当年第一次使用vim怎么都退不出去的焦灼处境,后来慢慢变得熟悉,但是可能有个完美主义的情结,总想要一次达到很高的完成度,鸟哥的Linux私房菜的相关内容写的很好,发现很适合自己,来记录一遍吧。
vi是一种文本编辑器,大多数主流的Linux机器都会安装vi,vim是vi的进阶版本,拥有更多的功能。首先需要了解的是,vi、vim有三种模式,默认进入后的模式是一般命令模式 ;编辑文件时是编辑模式 ;执行命令时是命令模式 。
vi其实已经很完善了,vim比vi多了对代码文件的语法高亮、代码补全、区块选择,正则表达式搜索、多窗口等。
一、三种模式的切换 一般命令模式是一种中间状态,命令模式和编辑模式无法直接切换。
1 2 3 4 5 6 i 在光标处插入,进入编辑模式 a 在光标下一个字符处插入,进入编辑模式 o 在光标下一行插入,进入编辑模式 I 在光标所在行第一个非空字符前插入,进入编辑模式 A 在光标所在行最后一个字符后插入,进入编辑模式 O 在光标上一行插入,进入编辑模式
二、一般命令模式 新建一共文件或者打开一共文件,默认就是此模式。
1 2 3 4 h 光标左移一个字符,等同于← j 光标下移一行,等同于↓ k 光标上移一行,等同于↑ l 光标右移一个字符,等同于→
1 2 3 4 5 6 7 H 光标移动到屏幕显示的第一行 M 光标移动到屏幕显示的中间一行 L 光标移动到屏幕显示的倒数第5行(鸟哥Linux私房菜里写的是屏幕最后一行) G 光标移动到最后一行 nG 光标移动到第n行,n是数字 gg 光标移动到文件第一行,相当于1G n<Enter> n是数字,<Enter>是回车,会向下移动n行
1 2 3 0 光标移动到本行的第一列 $ 光标移动到本行的最后一列 n<space> n是数字,<space>是空格,会向右移动n个字符
1 2 3 4 ctrl + f 向下翻一页 ctrl + b 向上翻一页 ctrl + d 向下翻半页 ctrl + u 向上翻半页
1 2 3 4 5 6 7 8 i 在光标处插入,进入编辑模式 a 在光标下一个字符处插入,进入编辑模式 o 在光标下一行插入,进入编辑模式 I 在光标所在行第一个非空字符前插入,进入编辑模式 A 在光标所在行最后一个字符后插入,进入编辑模式 O 在光标上一行插入,进入编辑模式 r 替换光标的下一个字符,不会进入编辑模式 R 在光标处开始一直替换字符,会进入替换模式,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 x 向后剪切一个字符 X 向前剪切一个字符(不包含本字符) nx n是数字,代表一次剪切n个字符 dd 剪切本行 ndd n是数字,剪切n行 d0 剪切本行第一个字符到本字符之间的字符串(不包含本字符) d$ 剪切本字符到本行最后一个字符之间的字符串 d1G 剪切第一行到本行的行 dG 剪切本行到的最后一行 yy 复制本行 nyy n是数字, 复制n行 y0 复制本行第一个字符到本字符之间的字符串(不包含本字符) y$ 复制本字符到本行最后一个字符之间的字符串 y1G 复制第一行到本行的行 yG 复制本行到的最后一行 pp 在此下一行/字符粘贴, P 在此上一行/字符粘贴, #扩展,好像没什么用,已经很容易做到这个操作了 ynG n是数字,表示复制本行到n行之间、或n行到本行之间的行 u 撤销上一步操作 . 重复上一个操作 c 删除数据,10cj代表删除向下删除10行的数据(包括本行) J 将本行和下一行合并为一行,即删除本行的回车符 ZZ 如果文件未修改则不保存退出,如果已经修改,则保存后退出 q: 查看历史编辑记录
三、命令模式
1 2 3 4 /word<Enter> <Enter>是回车,向下查找第一个`word`关键词 ?word<Enter> <Enter>是回车,向上查找第一个`word`关键词 n 如果刚刚查找完,表示继续向这个方向查找 N 如果刚刚查找完,表示继续向另一个方向查找
1 2 3 :n1,n2s/word1/word2/g n1、n2是数字,向下查找并替换`word1`关键词为`word2` :n1,n2s/word1/word2/gc 每一次替换都需要确认 :1,$s/word1/word2/g 代表从文件头到文件尾查找并替换
1 :!<command> <command>是要执行的shell命令
1 2 :set nu 显示文件的行数 :set nonu 隐藏文件的行数
1 2 3 4 :q 退出文件编辑 :q! 强制退出文件编辑。即不保存文件直接退出 :wq 保存并退出 :wq! 强制保存并退出
1 2 3 4 :w 保存文件 :w 新的文件名 保存文件到另一个文件 :w! 强制保存,权限可变为可写的情况下 :n1,n2 2 新的文件名 保存n1行到n2行之间的内容到另一个文件
1 2 3 :set bg=dark 切换背景主题,深蓝色的字体偶尔不明显 :set hlsearch 设置高亮搜索 :set nohlsearch 取消设置高亮搜索
1 2 3 :files 查看编辑的文件 :n 编辑下一个文件 :N 编辑上一个文件
1 :X 可以加密文件,但是要注意加密后密码错误的情况下不要修改文件.
四、vim额外一些功能
1 2 3 v 按照字符选中 V 按照行数选中 ctrl+v 按照矩阵区块选中
1 2 3 4 5 6 7 8 9 :sp 默认会另一个横向窗口打开同一个文件 :sp 文件名 新横向窗口打开新的文件 :vsp 默认会另一个纵向窗口打开同一个文件 :vsp 文件名 新纵向窗口打开新的文件 ctrl + w + ↑ 移动到上方的窗口 ctrl + w + j 移动到下方的窗口 ctrl + w + ↓ 移动到下方的窗口 ctrl + w + k 移动到上方的窗口 ctrl + w + q 关闭窗口退出(修改文件后就不能这样了)
1 2 3 ctrl + x ,ctrl + n 当前文件内容补全 ctrl + x ,ctrl + f 当前目录文件名补全 ctrl + x ,ctrl + o 扩展名内置函数补全
1 2 ~/.vimrc 记录一些环境变量 ~/viminfo 记录vim的操作
1 2 vim -o file1 file2 横向分屏 vim -O file1 file2 纵向分屏
1 2 vim -R file 只读方式打开文件,可以强制保存 vim -M file 只读方式打开文件,不可以强制保存
1 vim +/string file 打开文件并且光标停留到第一个搜索到的字符串string
五、异常处理 偶尔会发生一些异常情况,比如多人同时编辑一共文件,文件编辑后vim异常退出,都会导致留下一个.swp的文件,此时可以选择恢复或者删除。
六、使用向导 后来查资料才发现,vim有一个引导程序来介绍使用。
暂时先就此为止吧,再多用不到的知识也只是徒增烦恼哈
七、关联阅读
八、封面图