Linux-Vim相关
vi/vim
打开文件
1 vim [option] .... file.... 2 3 ``` 4 +# 直接定位到第#行 5 +/pattern 打开文件后,直接定位到第一个匹配到patter的地方 6 -b 以二进制方式打开文件 7 -d file1 file2 对比打开多个文件 8 -m file 只读方式打开文件 9 -e 直接以末行模式打开 10 ```
模式
1 - 命令模式:可以光标,可以粘贴、复制文本,默认 2 - 插入模式或者编辑模式:可以修改文本 3 - 末行模式(扩展命令模式):保存、退出等等 4 - esc 退出当前的模式
模式之间切换
1 - 命令模式- 插入模式 2 - i 光标所在处插入 3 - I 在当前光标所在的行的行首插入 4 - a 光标所在位置的后面插入 5 - A 在当前光标所在的行尾插入 6 - o 在当前光标所在的行的下一行(新开)插入 7 - O 在当前光标所在的行的上一行(新开一行)插入 8 - 插入模式- 命令模式 9 - esc 10 - 命令模式 -- 末行模式 11 - : 12 - 末行模式 -- 命令模式 13 - esc esc 14 - esc enter
关闭文件
1 - 末行模式 2 - :w 保存 3 - :q 退出 4 - :wq 保存并退出 5 - :q! 强制退出 6 - :wq!强制保存退出 7 - :x 保存并退出 8 - 命令模式 9 - ZZ 保存退出 10 - ZQ 不保存退出
扩展命令行模式
1 - 按":" 来进入 2 - w 写入 3 - q 退出 4 - wq 保存并退出 5 - q! 强制退出 6 - x 保存并退出 7 - r file 读入文件 8 - w file 另存为 9 - !command 直接执行命令 10 - r!command 直接把命令的结果写到文件中
命令模式跳转
1 - 字符之间跳转 2 - l 向右 3 - h 向左 4 - j 向下 5 - k 向上 6 - 单词间跳转 7 - w 下一次的单词的词首 8 - e 当前词的词尾或者下一个单词的词尾 9 - b 当前词的词首或者上一词的词首 10 - # command 直接跳转#个单词 11 - 页面间跳转 12 - H 页首 13 - L 页尾 14 - M 页中 15 - zt 将光标所在行移动到屏幕的顶端 16 - zb 将光标所在行移动到屏幕的底部 17 - zz 将光标所在行移动到屏幕的中间 18 - 行首行尾之间跳转 19 - ^ 跳转到当前光标所在行的第一个非空字符 20 - 0(数字) 跳转到行首 21 - $ 跳转到行尾 22 - 行间移动 23 - #G 跳转到第#行 24 - 在命令扩展模式下,直接:# 跳转到对应的行 25 - G 直接到最后一行 26 - gg 跳转到第一行 27 - 1G 跳转到第一行 28 - 段落之间跳转(空行) 29 - { 上一段 30 - } 下一段 31 - 翻屏 32 - ctrl+f 向文件尾部翻一屏 33 - ctrl+b 向文件首部翻一屏 34 - ctrl+d 向文件尾部翻半屏 35 - ctrl+u 向文件首部翻半屏
命令模式编辑
1 - 字符编辑 2 - x 删除光标所在处的字符 3 - #x 删除#个字符 4 - xp 将光标所在处的字符和后面的字符互换位置 5 - ~ 将光标所在的位置大小写互换 6 - J 删除当前行的换行符 7 - 替换 8 - r 替换当前光标所在处的字符 9 - R 进入替换模式 10 - 删除 11 - d 删除,需要跟字符跳转结合 12 - d$ 删除到行尾,删除当前位置 13 - d0 删除到行首,当前位置不删除 14 - d^ 删除到非空字符 15 - dw 删除一个单词 16 - de 向后删除一个单词 17 - db 向前删除一个单词 18 - dd 删除正行 19 - # dd 删除#行 20 - dG 删除到结尾 21 - dgg 删除到开头 22 - D 相当于d$ 23 - 复制 24 - y,也可以跟字符跳转结合 25 - y$ 26 - y0 27 - y^ 28 - yw 29 - ye 30 - yb 31 - yy 一正行 32 - #yy 复制#行 33 - yG 复制到结尾 34 - ygg 复制到开头 35 - Y 复制整行 36 - 粘贴 37 - p 如果是整行的话,则粘贴到当前光标所在行的下一行,否则粘贴到光标的后面 38 - P 如果是整行的话,则粘贴到当前光标所在行的上一行,否则粘贴到光标的前面 39 - 改变,删除以后并将模式切换成插入模式 40 - c 可以跟光标的跳转做结合 41 - c$ 42 - c0 43 - c^ 44 - cw 45 - ce 46 - cb 47 - #command 48 - cc 删除正行并插入 49 - C 相当于c$ 50 - #[i|I|a|A|o|O]string esc 将string粘贴#次 51 - 搜索 52 - /pattern 从当前光标往下搜索 53 - ?pattern 从当前光标往上搜索 54 - n 同命令相同的方向 55 - N 同命令相反的方向 56 - 撤销 57 - u 撤销最近的修改 58 - # u 撤销最近的#次修改 59 - ctrl +r 撤销之前的撤销动作 60 - . 重复最后一次操作 61 - #. 最后一次操作重复执行#次
命令扩展模式
1 地址定界 2 :start,end 3 # 具体到第#行 4 #,# 第#行到第#行 5 #,+n 从第#开始,到第#+n行结束 1,+2 ==>1,3 6 . 表示当前光标所在的行 7 $ 表示最后一行 8 $-1 表示倒数第二行 9 % 表示全文 10 /pat1/,/pat2/ 从第一个pat1匹配到的地方,到pat2第一次匹配到的地方 11 #,/pat/ 从第#行开始,到第一次被pat匹配到的地方 12 /pat/,$ 从第一次被pat匹配到的到结尾 13 可以使用的命令 14 - d 15 - y 16 - w file 重新另存为文件 17 - r file 将文件的内容写到匹配到的下一行
查找并替换
1 - 要使用地址定界来进行查找 2 - s 在扩展命令模式下使用为替换 3 - 格式: s/要查找的内容/要替换的内容/装饰器 4 - 要查找的内容可以使用正则 5 - 替换的内容不能为正则 6 - 可以为分组:%s/\(nfs.*\)/#\1/ 7 - \1表示第一个分组内的内容 8 - \2 9 - \3 10 - & 可以代表前面匹配到的内容 11 - 装饰器 12 - i 忽略大小写 13 - g 表示全部替换 14 - gc 每一次替换之前都要询问是否替换 15 - 分隔符还可以使用 16 - @ 17 - #
可视化
1 - v 面向字符 2 - V 面向行的 3 - ctrl +v 面向块 4 - 可以结合所有的跳转键进行结合 5 - 对突出显示部分可以使用删除、复制、变更、过滤、替换、另存为等等
打开多个文件
1 vim file1 file2 file3 2 :next 下一个 3 :prev 上一个 4 :first 第一个 5 :last 最后一个 6 :qall 退出全部 7 :wall 保存全部 8 :wqall 保存并退出全部 9 :xall 保存并退出全部
使用多个窗口
1 vim -o 水平分隔 2 vim -O 垂直分隔 3 切换ctrl+w 加上上下左右箭头
单文件切割
1 ctrl+w,s 水平切割 2 ctrl+w,v 垂直切割 3 ctrl+w,q 取消相邻的窗口 4 ctrl+w,o 取消全部窗口
vim工作特性
配置文件 - 全局有效:/etc/vimrc - 对当前用户有效: ~/.vimrc - 行号:set nu 取消 set nonu - 忽略大小写(搜索) set ic 取消set noic - 自动缩进(同上一行) set ai 取消set noai - 设置高亮显示(搜索到的内容) set hls 取消set nohls - 语法高亮 syntax on 取消 syntax off - 文件格式 - windows格式 set fileformat=dos - unix set fileformat=unix - 添加标识线: set cul 取消标识线 set nocul - 获取帮助: set all - 获取帮助信息: - :help - :help topic - vimtutor