码迷,mamicode.com
首页 > 系统相关 > 详细

(28)Vim 4

时间:2019-08-06 18:31:38      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:操作   切分   ctrl   就是   表示   命令模式   使用   bsp   定义   

1.Vim多窗口编辑
  在编辑文件时,有时需要参考另一个文件,如果在两个文件之间进行切换则比较麻烦。可以使用 Vim 同时打开两个文件,每个文件分别占用一个窗口。

  例如,在査看 /etc/passwd 时需要参考 /etc/shadow,有两种办法可以实现:
  先使用 Vim 打开第一个文件,接着输入命 令 ":sp/etc/shadow" 水平切分窗口,然后按回车键;如果想垂直切分窗口则可以输入 ":vs/etc/shadow";
  可以直接执行命令"vim -o 第一个文件名 第二个文件名",也就是 "vim-o /etc/passwd /etc/shadow"。

  得到的结果如图 1 所示。

  技术图片

  切换到另一个文件窗口,可以按 "Ctrl+WW" 快捷键。

  如果想将一个文件的内容全部复制到另一个文件中,则可以输入命令 ":r 被复制的文件名",即可将导入文件的全部内容复制到当前光标所在行下面。

2.Vim批量注释和自定义注释快捷键

  使用 Vim 编辑 Shell 脚本,在进行调试时,需要进行多行的注释,每次都要先切换到输入模式,在行首输入注释符"#"再退回命令模式,非常麻烦。

  连续行的注释其实可以用替换命令来完成。换句话说,在指定范围行加"#"注释,可以使用 ":起始行,终止行 s/^/#/g",例如:
  :1,10s/^/#/g

  表示在第 1~10 行行首加"#"注释。"^"意为行首;"g"表示执行替换时不询问确认。如果希望每行交互询问是否执行,则可将 "g" 改为 "c"。

  取消连续行注释,则可以使用 ":起始行,终止行s/^#//g",例如:
  :1,10s/^#//g

  意为将行首的"#"替换为空,即删除。

  当然,使用语言不同,注释符号或想替换的内容不同,都可以采用此方法,灵活运用即可。

  添加"//"注释要稍微麻烦一些,命令格式为 ":起始行,终止行 s/^/\/\//g"。例如:
  :1,5s/^/\/\//g

  表示在第 1~5 行行首加"//"注释,因为 "/" 前面需要加转义字符 "\",所以写出来比较奇特。

  以上方法可以解决连续行的注释问题,如果是非连续的多行就不灵了,这时我们可以定义快捷键简化操作。格式如下:
  :map 快捷键 执行命令

  如定义快捷键 "Ctrl+P" 为在行首添加 "#" 注释,可以执行 ":map^P l#<Esc>"。其中 "^P" 为定义快捷键 "Ctrl+P"。注意:必须同时按 "Ctrl+V+P" 快捷键生成 "^P" 方可有效,或先按 "Ctrl+V" 再按 "Ctrl+P" 也可以,直接输入 "^P" 是无效的。

  "l#<Esc>" 就是此快捷键要触发的动作,"l" 为在光标所在行行首插入,"#" 为要输入的字符,"<Esc>" 表示退回命令模式。"<Esc>" 要逐个字符输入,不可直接按键盘上的 Esc 键。

  设置成功后,直接在任意需要注释的行上按 "Ctrl+P" 快捷键,就会自动在行首加上 "#" 注释。取消此快捷键定义,输入 ":unmap^P" 即可。

  我们可以延伸一下,如果想取消文件行首的快捷键,则可以设置 ":map^B 0x",快捷键为 "Ctrl+B", "0" 表示跳到行首,"x" 表示删除光标所在处字符。

  再如,有时我们写完脚本等文件,需要在末尾注释中加入自己的邮箱,则可以直接定义每次按快捷键 "Ctrl+E" 实现插入邮箱,定义方法为 ":map^E asamlee@itxdl.net<Esc>"。其中 "a" 表示在当前字符后插入,"samlee@itxdl.net" 为插入的邮箱,"<Esc>" 表示插入后返回命令模式。

  所以,通过定义快捷键,我们可以把前面讲到的命令组合起来使用。

  将快捷键对应的命令保存在 .vimrc 文件中,即可在每次使用 Vim 时自动调用,非常方便。

 

(28)Vim 4

标签:操作   切分   ctrl   就是   表示   命令模式   使用   bsp   定义   

原文地址:https://www.cnblogs.com/xinghen1216/p/11310794.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!