Linux -- > vim

发布于:2024-05-10 ⋅ 阅读:(33) ⋅ 点赞:(0)

vi和vim是什么

vivim是两款流行的文本编辑器,广泛用于Unix和类Unix系统中。它们以其强大的功能和灵活的编辑能力而闻名,特别是在编程和系统管理中非常受欢迎。

vi(Visual Interface)

vi是最初的文本编辑器之一,由Bill Joy在1976年创建,是早期Unix系统的标准组件。vi的主要特点是它的模式编辑功能,有以下三种基本模式:

  • 命令模式:这是vi启动后的默认模式。在此模式下,你可以使用键盘快捷键执行复制、粘贴、定位光标、删除文本等操作。
  • 插入模式:在此模式下,可以输入文本。从命令模式按i(insert)可以进入插入模式。
  • 末行模式:通过在命令模式下按下冒号(:)进入,用于执行保存、退出、查找替换等命令。

vi由于其简洁和高效,长久以来一直是许多程序员和系统管理员的首选编辑器。

vim(Vi IMproved)

vim是从vi发展而来的一个版本,由Bram Moolenaar在1991年发布。vimvi的基础上增加了很多功能,包括但不限于:

  • 可视模式:允许用户选中文本块进行复制、删除等操作。
  • 语法高亮:对源代码等文件支持自动语法高亮。
  • 多窗口和标签页:可以在一个vim会话中打开多个文件。
  • 可扩展性:支持通过插件来扩展功能,有丰富的插件生态系统。
  • 撤销树:比传统的撤销更灵活,可以撤销历史中的任何一步操作。

vim的模式

Vim 的模式主要分为以下几种,每种模式都有其独特的用途和功能:

  1. 普通模式(Normal Mode)

    这是 Vim 启动后的默认模式。在这个模式下,你可以执行各种命令来操作文本,如移动光标、复制、粘贴、删除文本等。普通模式的每个按键都是一个命令,例如 h(左移光标)、j(下移光标)、k(上移光标)、l(右移光标)等。
  2. 插入模式(Insert Mode)

    在此模式下,可以直接输入文本。从普通模式按 i 进入插入模式,在文本中的当前光标位置开始输入。其他方式进入插入模式还包括 a(在光标后插入)、o(在当前行下方新开一行并插入)等。
  3. 可视模式(Visual Mode)

    用于选择文本块。从普通模式按 v 进入可视模式,然后可以移动光标来选择文本区域。选择的文本可以被复制、删除或者进行其他操作。此外,还有可视行模式(按 V 进入)和可视块模式(按 Ctrl-v 进入),分别用于选择整行或矩形文本块。
  4. 命令行模式(Command-line Mode)

    通过在普通模式下按下冒号 : 进入。在这个模式下,可以输入命令来执行更复杂的操作,如保存文件(:w)、关闭文件(:q)、搜索替换等。
  5. 替换模式(Replace Mode)

    从普通模式按 R 进入,可以替换光标之后的文本而不是插入新的文本。这类似于打字机的替换功能,原有的文本会被新输入的内容替换。

普通模式快捷键

光标移动

  • Shift + $:移动光标到当前行的最后位置。
  • Shift + ^:移动光标到当前行的第一个非空白字符。
  • Shift + G:移动光标到文本的最后一行。
  • N + Shift + G:移动光标到文本的第 N 行(N 是一个数字)。
  • GG:移动光标到文本的第一行。
  • h, j, k, l:分别向左、下、上、右移动光标。
  • w:向前跳到下一个单词的开始。
  • b:向后跳到前一个单词的开始。

文本编辑

  • yyY:复制当前行。
  • n + yy:复制从当前行开始的 n 行。
  • p:粘贴复制的文本。
  • u:撤销最近的编辑操作。
  • Ctrl + R:重做之前撤销的操作。
  • dd:删除(剪切)当前行。
  • n + dd:删除(剪切)从当前行开始的 n 行。
  • Shift + ~~:切换当前光标位置字符的大小写。
  • r:替换当前光标位置的字符。
  • n + r:替换当前光标位置开始的 n 个字符。
  • Shift + RR:进入替换模式,可以连续替换多个字符。
  • x:删除光标位置的字符。
  • N + x:从光标位置开始删除 N 个字符。
  • N + Shift + XN + X:从光标位置开始向前删除 N 个字符。
  • Shift + 3#:高亮显示文档中与当前单词相同的所有单词。
  • n:在查找结果之间跳转到下一个匹配项。

命令行模式

文件操作

  • :w:保存当前文件。
  • :w filename:将当前文档保存为指定的文件名。
  • :q:退出 Vim。如果有未保存的更改,Vim 会警告用户。
  • :wq:x:保存更改并退出 Vim。
  • :q!:不保存更改强制退出 Vim。

编辑命令

  • :%s/old/new/g:全文替换,将文本中的 "old" 替换为 "new"。
  • :g/pattern/d:删除所有包含指定模式 "pattern" 的行。
  • :r filename:读取外部文件并将其内容插入到当前编辑位置。

设置选项

  • :set number:显示行号。
  • :set nonumber:隐藏行号。
  • :set nowrap:关闭自动换行。
  • :set wrap:开启自动换行。
  • :syntax on:开启语法高亮。
  • :syntax off:关闭语法高亮。

窗口和标签页管理

  • :split:水平分割当前窗口。
  • :vsplit:垂直分割当前窗口。
  • :tabnew:在新标签页中打开一个新的空白文档。
  • :tabclose:关闭当前的标签页。
  • :tabnext:切换到下一个标签页。
  • :tabprev:切换到上一个标签页。

导航和搜索

  • :/pattern:搜索文本中的 "pattern"。
  • :?pattern:反向搜索文本中的 "pattern"。
  • :n:跳转到下一个搜索结果。
  • :N:跳转到上一个搜索结果。
  • :nop:取消搜索。

执行外部命令

  • :!command:执行外部命令 "command",如 :!ls 会在 Vim 中列出当前目录的文件。

配置VIM

配置 Vim 主要通过编辑它的配置文件,通常是 .vimrc,来实现。这个文件位于用户的家目录下(在 Unix-like 系统中是 ~/.vimrc)在 .vimrc 文件中,你可以设置各种选项以定制 Vim 的行为,添加自定义键映射,以及加载插件等。

基本配置

以下是一些常见的 Vim 配置示例,可以加入到你的 .vimrc 文件中:

" 开启语法高亮
syntax enable

" 显示行号
set number

" 启用相对行号显示
set relativenumber

" 设置 tab 键为 4 个空格的宽度
set tabstop=4
set shiftwidth=4
set expandtab

" 在状态行显示当前模式
set showmode

" 启用搜索时的实时反馈
set incsearch

" 搜索时忽略大小写,除非包含大写字符
set ignorecase
set smartcase

" 启用自动缩进
set autoindent

" 开启文件类型检测,加载对应的插件和缩进文件
filetype plugin indent on

" 允许备份
set backup

" 设置备份文件的目录
set backupdir=~/.vim/backups

" 允许撤销操作历史记录
set undofile
set undodir=~/.vim/undo

安装插件

Vim 社区提供了大量插件,增强编辑器的功能。常用的插件管理器有 Vundle、Pathogen 和 Vim-Plug 等。以下是使用 Vim-Plug 安装和管理插件的示例:

首先,你需要安装 Vim-Plug。可以将其安装脚本添加到 .vimrc 中,然后运行 Vim 并执行 :PlugInstall

" 指定插件目录
" - 对于 Neovim: stdpath('data') . '/plugged'
" - 避免使用 Vim 的标准目录名称如 'plugin'
call plug#begin('~/.vim/plugged')

" 确保使用单引号

" 简写形式;从 https://github.com/junegunn/vim-easy-align 获取插件
Plug 'junegunn/vim-easy-align'

" 允许使用任何有效的 git URL
Plug 'https://github.com/junegunn/vim-github-dashboard.git'

" 可以使用 | 分隔符在一行中写入多个 Plug 命令
Plug 'SirVer/ultisnips' | Plug 'honza/vim-snippets'

" 初始化插件系统
call plug#end()

重新打开 Vim,运行 :PlugInstall 来安装配置中指定的插件


网站公告

今日签到

点亮在社区的每一天
去签到