前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【linux】vim

【linux】vim

作者头像
用户11029103
发布2024-07-25 14:12:29
390
发布2024-07-25 14:12:29
举报
文章被收录于专栏:技术学习

01.vim的基本概念

Vim是一款高度配置化的文本编辑器,用于创建和编辑任何类型的文本,包括程序代码。它是从“vi”文本编辑器演变而来,增加了一些新功能和改进,包括插件系统、语法高亮、代码折叠、更好的搜索功能等。Vim是一款自由和开源的软件,遵循Vim许可证(它是一种类似于GPL许可证的自由软件许可证)。

vim的三种模式(其实有好多模式,目前掌握这3种即可),分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:

  • 正常/普通/命令模式(Normal mode) 控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode
  • 插入模式(Insert mode) 只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。该模式是我们后面用的最频繁的编辑模式。
  • 末行模式(last line mode) 文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下,shift+: 即可进入该模式。要查看你的所有模式:打开vim,底行模式直接输入
代码语言:javascript
复制
:help vim-modes

02.基本操作

vim的基本操作:

  • 进入vim,在系统提示符号输入vim及文件名称后,就进入vim全屏幕编辑画面:
    • $ vim test.c
    • 不过有一点要特别注意,就是你进入vim之后,是处于[正常模式],你要切换到[插入模式]才能够输入文字。
  • [正常模式]切换至[插入模式]
    • 输入a
    • 输入i
    • 输入o
  • [插入模式]切换至[正常模式]
    • 目前处于[插入模式],就只能一直输入文字,如果发现输错了字,想用光标键往回移动,将该字删除,可以先按一下**「ESC」键**转到[正常模式]再删除文字。当然,也可以直接删除。
  • [正常模式]切换至[末行模式]
    • 「shift + ;」, 其实就是输入「:」
  • 退出vim及保存文件,在[正常模式]下,按一下「:」冒号键进入「Last line mode」,例如:
    • : w (保存当前文件)
    • : wq (输入「wq」,存盘并退出vim)
    • : q! (输入q!,不存盘强制退出vim)

03.正常模式命令集

  • 插入模式
    • 按「i」切换进入插入模式「insert mode」,按“i”进入插入模式后是从光标当前位置开始输入文件;
    • 按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;
    • 按「o」进入插入模式后,是插入新的一行,从行首开始输入文字。
  • 从插入模式切换为命令模式
    • 按「ESC」键。
  • 移动光标
    • vim可以直接用键盘上的光标来上下左右移动,但正规的vim是用小写英文字母 「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格
    • 按「G」:移动到文章的最后
    • 按「 $ 」:移动到光标所在行的“行尾”
    • 按「^」:移动到光标所在行的“行首”
    • 按「w」:光标跳到下个字的开头
    • 按「e」:光标跳到下个字的字尾
    • 按「b」:光标回到上个字的开头
    • 按「#l」:光标移到该行的第#个位置,如:5l,56l
    • 按[gg]:进入到文本开始
    • 按[shift+g]:进入文本末端
    • 按[#shift+g]:进入第#行
    • 按「ctrl」+「b」:屏幕往“后”移动一页
    • 按「ctrl」+「f」:屏幕往“前”移动一页
    • 按「ctrl」+「u」:屏幕往“后”移动半页
    • 按「ctrl」+「d」:屏幕往“前”移动半页
  • 删除文字
    • 「x」:每按一次,删除光标所在位置的一个字符
    • 「#x」:例如,「6x」表示删除光标所在位置的“后面(包含自己在内)”6个字符
    • 「X」:大写的X,每按一次,删除光标所在位置的“前面”一个字符
    • 「#X」:例如,「20X」表示删除光标所在位置的“前面”20个字符
    • 「dd」:删除光标所在行
    • 「#dd」:从光标所在行开始删除#行
  • 复制
    • 「yw」:将光标所在之处到字尾的字符复制到缓冲区中。
    • 「#yw」:复制#个字到缓冲区
    • 「yy」:复制光标所在行到缓冲区
    • 「#yy」:例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字。
    • 「p」:将缓冲区内的字符贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。
  • 替换
    • 「r」:替换光标所在处的字符。
    • 「R」:替换光标所到之处的字符,直到按下「ESC」键为止。
  • 撤销上一次操作
    • 「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”可以执行多次回复。
    • 「ctrl + r」: 撤销的恢复
  • 更改
    • 「cw」:更改光标所在处的字到字尾处
    • 「c#w」:例如,「c3w」表示更改3个字
  • 跳至指定的行
    • 「ctrl」+「g」列出光标所在行的行号。
    • 「#G」:例如,「15G」,表示移动光标至文章的第15行行首

分屏之间切换 在分屏模式下,可以使用以下快捷键在窗口间切换光标:

  • Ctrl+w w:按一次 Ctrl+w 然后再按一次 w,可以在顺序切换窗口。
  • Ctrl+w h:移动光标至左边的窗口。
  • Ctrl+w j:移动光标至下面的窗口。
  • Ctrl+w k:移动光标至上面的窗口。
  • Ctrl+w l:移动光标至右边的窗口。 如果你用的是 Vim 的箭头键来移动光标,可能需要在 Ctrl+w 后使用 h、j、k、l 键,而不是箭头键。因为在 Vim 的默认配置中,箭头键与 hjkl 键的作用是等价的,但是在窗口切换快捷键中,你需要显式地使用 hjkl 键。

关闭分屏窗口 要关闭一个窗口,可以在该窗口下执行 :close 或使用快捷键 Ctrl+w c。 要关闭除当前窗口之外的其他所有窗口,可以使用 :only 命令或快捷键 Ctrl+w o

04.批量化注释与去注释

注释步骤:

  1. 先ctrl+v 进入VISUAL BLOCK模式
  2. 再通过j选择注释范围
  1. 再shift+i
  2. 再// 注释一行,按两次esc

去注释步骤:

  1. ctrl+v 进行区域选择
  2. 包含且仅包含被注释的位置
  3. d

05.sudo提权

普通用户一般不能使用sudo提权

我们需要做的就是在sudoers这个文件中进行配置

  1. 切换用户,打开这个sudoers文件
  1. 在100行左右加上我们的普通用户
  1. wq!保存退出

06.vim配置

在 Vim 中配置格式化选项主要涉及使用 Vim 的设置选项,这些选项可以在 Vim 的配置文件 ~/.vimrc 中设置,以确保每次启动 Vim 时都会自动应用它们。下面是一些常用的格式化设置选项:

自动缩进

代码语言:javascript
复制
set autoindent

开启 autoindent 选项后,当你新开始一行时,该行的缩进将复制前一行的缩进。

智能缩进

代码语言:javascript
复制
set smartindent

智能缩进是 autoindent 的增强版,它会根据当前的语言的语法自动调整新行的缩进。

C 样式缩进

代码语言:javascript
复制
set cindent

专门为 C 语言编写的代码提供更加智能的缩进策略。

缩进宽度

代码语言:javascript
复制
set tabstop=4
set shiftwidth=4
set expandtab

tabstop 设置一个 <Tab> 字符的显示宽度。 shiftwidth 设置每次缩进的级别的宽度。 expandtab 选项会将 <Tab> 转换成 tabstop 选项指定数量的空格。

设置文件类型侦测

代码语言:javascript
复制
filetype on
filetype indent on
filetype plugin on

这些命令开启文件类型检测,并加载文件类型特定的插件和缩进设置。

语法高亮

代码语言:javascript
复制
syntax on

显示语法高亮。

格式化时断行

代码语言:javascript
复制
set textwidth=80

如果一行的长度超过80个字符,Vim会在输入时自动换行。

自动格式化

代码语言:javascript
复制
set formatoptions+=c
set formatoptions+=r
set formatoptions+=o

这些选项设置了Vim在插入模式中自动格式化文本的方式。对于 formatoptions

  • c 自动将注释的样式延续到新的一行。
  • r 在按下回车键时自动复制上一行的注释样式。
  • o 在新行使用 Oo 命令时自动复制注释。

保存前自动格式化

代码语言:javascript
复制
au BufWritePre * :normal gg=G

这个自动命令会在每次写入文件之前对整个文件内容进行自动格式化。

要激活这些配置,首先打开你的 ~/.vimrc 文件:

代码语言:javascript
复制
vim ~/.vimrc

然后添加上述配置,并根据个人习惯调整。保存并关闭 vim 后,新的配置将会生效。可以通过重启 Vim 或执行 :source ~/.vimrc 命令立即使更改生效。

Vim 社区还提供了大量插件来辅助格式化特定的编程语言,如prettier(适用于多种语言)、clang-format(适用于 C 和 C++)等,你可以根据需要安装和配置这些插件以实现更高级的格式化功能。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-07-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 01.vim的基本概念
  • 02.基本操作
  • 03.正常模式命令集
  • 04.批量化注释与去注释
  • 05.sudo提权
  • 06.vim配置
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档