💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
Vim编辑器是功能强大的跨平台文本文件编辑工具,继承自Unix系统的Vi编辑器,支持Linux/Mac OS X/Windows系统,利用它可以建立、修改文本文件。进入Vim编辑程序,可以在终端输入下面的命令: ~~~ $vim [filename] ~~~ 其中filename是要编辑器的文件的路径名。如果文件不存在,它将为你建立一个新文件。 ## Vim使用 ### vim:模式化编辑器 ~~~ 基本模式:编辑模式,命令模式,输入模式,末行模式(内置的命令行模式) 打开文件: # vim [OPTION]...FILE... +#:打开文件后,直接让处于第#行的行首 模式转换: ESC键: 编辑模式-->输入模式: i: 在光标所在处的前方转换为输入模式 a: 在光标所在的后方转换为输入模式 o: 在光标所在行的下方新建一个空行并转换为输入模式 I: 跳转至行首 A:跳转至行尾 O: 光标所在行的上方新建一个空白行 输入模式-->编辑模式 ESC 编辑模式-->末行模式 : 末行模式-->编辑模式 ESC ~~~ ### 关闭文件: ~~~ :q:退出 :q! 强制退出,丢弃做出的修改 :wq 保存退出 :x 保存退出 :wq! 强制保存退出 :w :/PATH/TO/SOMEWHERE ZZ:保存退出 ~~~ ### 光标移动: #### 字符间移动:h,j,k,l ~~~ h:左 l:右 j:下 k:上 #{h|j|k|l}: 跳#个字符 ~~~ #### 单词间移动 ~~~ w: 下一个单词词首 e: 当前单词或下一个单词词尾 b: 当前单词或前一个单词词首 #{w|e|b}:跳#个单词 ~~~ #### 行内移动 ~~~ ^: 跳转至行首第一个非空白字符 0:跳转至绝对行首 $: 跳转至绝对行尾 ~~~ #### 行间移动: ~~~ #G: 直接跳转至第#行; G:最后一行 1g,gg:回至第一行 句子间移动: ) ( 段落间移动: } { ~~~ ### vim编辑命令 #### 字符编辑: ~~~ x: 删除光标所在处的字符 #x:删除光标起始的#字符 ~~~ #### 替换命令 ~~~ r:替换光标所在处的字符 ~~~ #### 删除命令 ~~~ d:结合光标跳转字符使用,删除跳转范围内的字符 d$:删除光标所在行 d^:删除空格 dw:删除一个字符 de:向后删除一个单词 db:向前删除一个单词 dd: 删除光标所在行 #dd:多行删除 ~~~ #### 粘贴命令 ~~~ p:缓冲区存的如果为整行,则粘贴当前光标所在行的下方;否则,则粘贴至当前光标所在的后面; P:缓冲区存的如果为整行,则粘贴当前光标所在行的上方;否则,则粘贴至当前光标所在的前面; ~~~ #### 复制命令 ~~~ y:复制,工作行为与d相似 yy:复制行 #yy:复制多行 ~~~ #### 改变命令 ~~~ c:修改,工作行为与d相似 编辑模式-->末行模式 cc:删除并输入新内容 #cc: ~~~ #### 可视化模式 ~~~ v:按字符选定 V:按行选定 ~~~ #### 撤销操作 ~~~ u(undo):撤销此前的操作 #u:撤销指定撤销次数 撤销此前的撤销: ctrl+r 重复前一个编辑操作:. ~~~ #### 翻屏操作 ~~~ Ctrl+f: 向文件尾部翻一屏 Ctrl+b: 向文件首部翻一屏 Ctrl+d: 向文件尾部翻半屏 Ctrl+u: 向文件首部翻半屏 ~~~ ### vim中的末行模式 地址定界 ~~~ :start_pos,end_pos #:具体第#行,例如2表示第2行 #,#:从左侧#表示行起始,到右侧#表示行结尾 #,+#:从左侧#表示的行起始,加上右侧#表示的行数 .:当前行 $:最后一行 %:全文,相当于1,$ /pat1/,/pat2/: 从第一次被pat1模式匹配到的行开始,一直到第一次被pat2匹配到的行结束 使用方式: 后面跟一个编辑模式 d y w /PATH/TO/SOMEWHERE:将范围内的行另存至指定文件中 r /PATH/FROM/SOMEFILE:在指定位置插入指定文件中的所有内容 ~~~ ### 查找 ~~~ /PATTERN:从当前光标所在处向文件尾部查找 ?PATTERN:从当前光标所在处向文件首部查找 n:与命令同方向 N:与命令反方向 ~~~ ###查找并替换 ~~~ s:在末行模式下完整查找替换操作 s/要查找的内容/替换为的内容/修饰符 要查找的内容:可使用模式 替换为的内容:不能使用模式,但可以使用\1,\2...等后向引用符号;还可以使用“&”引用前面查找到的整个内容 修饰符: i:忽略大小写 g:全局替换;默认情况下,每一行只替换第一次出现 ~~~ ### 练习: ~~~ 1、复制/etc/grub2.cfg至/tmp/目录,用查找替换命令删除/tmp/grub.cfg文件中的行首的空白字符 %s/^[[:space:]]\+//g 2、复制/etc/rc.d/init.d/functions文件至/tmp目录,用查的替换命令为/tmp/functions的每行开头为空白字符的行行首添加一个#号; %s/^[[:space:]]/#&/ ~~~ ### 多文件模式: ~~~ vim FILE1 FILE2 FILE3.... :next 下一个 :prev 前一个 :last 最后一个 :first 第一个 :wall 保存退出 :qall 退出所有 ~~~ ### 多窗口模式 ~~~ 多文件: vim -o: 水平分割 -O: 垂直分割 Ctrl+w, Arrow 单文件: Ctrl+w, s: 水平分割 Ctrl+w, v: 垂直分割 ~~~ ### 定制vim的工作特性 ~~~ 配置文件:永久有效 全局:/etc/vimrc 个人:~/.vimrc 末行:当前vim进程有效 (1)行号 显示:set number,简写为set nu 取消显示:set nonumber ,简写set nonu (2)括号匹配 匹配:set showmatch 简写 set sm 取消:set nosm (3)自动缩进 启用:set ai 禁用:set noai (4)高亮搜索 启用:set hlsearch 禁用:set nohlsearch (5)语法高亮 启用:syntax on 禁用:syntax off (6)忽略字符大小写 启用:set ic 不忽略:set noic ~~~