Vim 入门教程和常规操作

发布于 2024-10-03 05:24:46 字数 4112 浏览 8 评论 0

设置

基本概念

vim 编辑器主要有三个模式: 命令行模式(normal) , 插入模式(insert) ,底行模式.部分教程有说底行模式,但是底行模式也属于 normal 的一种

  • 理解 normal 模式的 tips: 在一般的编辑器中,当你需要 copy 一段文字的时候,你需要使用 Ctrl 键,比如:Ctrl-C.也就是说,Ctrl 键就好像 功能键 一样,当你按下了功能键 Ctrl 后,C 就不在是 C 了,而且就是一个命令或是一个快键键了,在 VIM 的 Normal 模式下 所有的键就是功能键 这个要牢牢记住

normal 模式的常用命令

<C-λ> 翻译为 Ctrl-λ

  • 存活需要
i               → Insert 模式,按 ESC 回到 Normal 模式.
x               → 删当前光标所在的一个字符。
:wq             → 存盘 + 退出 (:w 存盘, :q 退出)(:w 后可以跟文件名)
dd              → 删除当前行,并把删除的行存到剪贴板里
p               → 粘贴剪贴板
hjkl            → (强例推荐使用其移动光标,但不必需) 你也可以使用光标键 (←↓↑→). 注: j 就像下箭头。
:help <command> → 显示相关命令的帮助。你也可以就输入 :help 而不跟命令。(退出帮助需要输入:q)
  • 进阶需要
# 各种插入模式
a  → 在光标后插入 (append)
o  → 在当前行后插入一个新行
O  → 在当前行前插入一个新行
cw → 替换从光标所在位置后到一个单词结尾的字符

# 简单的移动光标
0/home   → 数字零,到行头
^        → 到本行第一个不是 blank 字符的位置(所谓 blank 字符就是空格,tab,换行,回车等)
$/end    → 到本行行尾
g_       → 到本行最后一个不是 blank 字符的位置。
/pattern → 搜索 pattern 的字符串(如果搜索出多个匹配,可按 n 键到下一个)

# 拷贝/粘贴
p/P → 粘贴 p 是当前位置之后粘贴 P 是当前位置之前粘贴
yy  → 拷贝当前行当行于 ddP

# Undo/Redo
u     → undo
<C-r> → redo

# 打开/保存/退出/改变文件
:e <path/to/file>      → 打开一个文件
:w                     → 存盘
:saveas <path/to/file> → 另存为 <path/to/file>
:x, ZZ 或 :wq          → 保存并退出 (:x 表示仅在需要时保存,ZZ 不需要输入冒号并回车)
:q!                    → 退出不保存 :qa! 强行退出所有的正在编辑的文件,就算别的文件有更改
:bn 和 :bp             → 你可以同时打开很多文件,使用这两个命令来切换下一个或上一个文件(:n 到下一个文件)
  • 更加牛逼
# 移动光标更加有效率
NG/:N → 到第 N 行
gg/:1 → 到第一行
G/:$  → 到最后一行
w     → 到下一个单词的开头
e     → 到下一个单词的结尾
%     → 匹配括号移动,包括 (, {, [. 需要把光标先移到括号上
*和#  → 匹配光标当前所在的单词,移动光标到下一个(或上一个)匹配单词(*是下一个,#是上一个)

设置行号

# 每行左边显示行号
:set number

# vim 右下角显示行号
:set ruler

替换

替换(Substitute) :substitute ,调用格式如下: :[range] s/search/replace/[flags] [count]

  • 默认情况下值替换当前行匹配中的内容,想要替换全部内容要使用 g(global) 命令 :%s/from/to/g
  • 标记(flags)包括:
    • p(print) ,是要求打印所做的改动
    • c(confirm) ,是要求在做出改动以前先询问
      • y Yes : 执行这个替换
      • n No : 取消这个替换
      • a All : 执行所有替换而不要再询问
      • q Quit : 退出而不做任何改动
      • l Last : 替换完当前匹配点后退出
      • CTRL-E : 向上翻滚一行
      • CTRL-Y : 向下翻滚一行
    • i(ignorecase) ,是不区分大小写
  • 替换范围
    • :1,$ : 全部,eg: :1,$s/idiots/manages/g
    • :.,$ : 当前行到文件尾
    • :.,.+8 : 当前行后续 9 行
    • :5,15 : 指定行数替换
    • :s/helo/hello/g4 : 当前行在内的以下 4 个替换单元替换
  • :%s/Kang\|Kodos/alien/gc : 多项替换 Kang 和 Kodos

各主题相关

查找相关

  • normal 模式下 / 进入查找模式。输入要查找的字符串并按下回车,会跳转到第一个匹配。按下 n 查找下一个,按下 N 查找上一个。支持正则表达式,例如/vim匹配行尾的"vim"。 需要查找特殊字符需要转义,例如/vim\$匹配"vim匹配行尾的"vim"。需要查找特殊字符需要转义,例如/vim$匹配"vim"
  • 大小写敏感:在查找模式中加入\c 表示大小写不敏感查找,\C 表示大小写敏感查找
    • set ignorecase : 设置默认进行大小写不敏感查找 set smartcase : 大小写敏感查找
  • 查找替换: :s (substitute) 命令。 :{作用范围}s/{目标}/{替换}/{替换标志} ,例如: %s/foo/bar/g 会在全局范围(%) 查找 foo 并替换为 bar,所有出现都会被替换(g)
    • 作用范围: s 当前行,如 :s/foo/bar/g%s 全文,如 :%s/foo/bar/g'<,'>s 选区,如 :5,12s/foo/bar/g 5-12 行、 :.,+2s/foo/bar/g 当前行和接下来两行
    • 替换标志: g 表示全局 global 替换。 i 表示大小写不敏感查找, I 表示大小写敏感

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

夏尔

暂无简介

0 文章
0 评论
22 人气
更多

推荐作者

謌踐踏愛綪

文章 0 评论 0

开始看清了

文章 0 评论 0

高速公鹿

文章 0 评论 0

alipaysp_PLnULTzf66

文章 0 评论 0

热情消退

文章 0 评论 0

白色月光

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文