### vim 的基本用法

vim 是一个强大的文本编辑器,广泛应用于程序开发、系统管理、配置文件编辑等场景。它继承了 vi 编辑器,并增加了大量的功能和灵活性。

#### 1. 启动和退出

- 启动 vim 编辑器:

  vim 文件名
  


如果文件不存在,`vim` 会创建一个新文件。

- 退出 `vim`:

- 保存并退出**:按 `Esc` 进入命令模式,然后输入 `:wq` 并按 `Enter`。
- **保存**:按 `Esc` 进入命令模式,然后输入 `:w` 并按 `Enter`。
- **退出而不保存**:按 `Esc` 进入命令模式,然后输入 `:q!` 并按 `Enter`。
- **强制退出**(如果文件未保存):按 `Esc` 进入命令模式,然后输入 `:q!` 并按 `Enter`。

#### 2. **Vim 模式


`vim` 有三种主要的模式:

- 普通模式(Normal Mode)**:这是默认模式,进行移动光标、删除、复制、粘贴等操作。按 `Esc` 可以确保处于普通模式。

- **插入模式(Insert Mode)**:用于输入文本。在普通模式下按 `i` 进入插入模式,按 `Esc` 回到普通模式。

- **命令模式(Command Mode)**:用于输入命令(例如保存、退出、搜索等)。按 `:` 进入命令模式。

#### 3. **基本操作


##### 移动光标

- 方向键**:可以使用方向键(上下左右)来移动光标。
- **h**:向左移动一个字符。
- **j**:向下移动一行。
- **k**:向上移动一行。
- **l**:向右移动一个字符。
- **w**:跳到下一个单词的开头。
- **b**:跳到前一个单词的开头。
- **0**:跳到行首。
- **$**:跳到行尾。

##### 删除文本

- **d**:删除字符,按 `d` 后按方向键或者其它移动命令,删除光标到目标位置的内容。
- **dd**:删除当前行。
- **d$**:删除从光标当前位置到行尾的内容。
- **d0**:删除从光标当前位置到行首的内容。

##### 复制和粘贴

- **yy**:复制当前行。
- **y$**:复制从光标到行尾的内容。
- **p**:粘贴复制的内容(在光标之后)。
- **P**:粘贴复制的内容(在光标之前)。

##### 撤销和重做

- **u**:撤销上一步操作。
- **Ctrl + r**:重做撤销的操作。

##### 搜索和替换

-
/关键词**:搜索关键词。按 n 跳到下一个匹配项,按 N 跳到上一个匹配项。
- ?关键词**:反向搜索关键词(从光标向上搜索)。
-
:s/old/new/g**:替换当前行的所有 old 为 `new`。
- :%s/old/new/g**:替换整个文件的所有 `old` 为 `new`。

##### 进入插入模式

- **i**:在光标当前位置前插入文本。
- **I**:在当前行的行首插入文本。
- **a**:在光标后插入文本。
- **A**:在当前行的行尾插入文本。
- **o**:在当前行下方插入新的一行并进入插入模式。
- **O**:在当前行上方插入新的一行并进入插入模式。

##### 保存和退出

-
:w**:保存文件。
- :w 文件名**:另存为新文件。
-
:q**:退出 `vim`。
- :q!**:强制退出,不保存文件。
-
:wq**:保存并退出。
- :x**:保存并退出(与 `:wq` 相同)。

#### 4. **高级功能


##### 分屏操作

- :split:sp**:水平分割窗口。
-
:vsplit** 或 :vsp**:垂直分割窗口。
- **Ctrl + w + w**:在多个窗口之间切换。
- **Ctrl + w + h/j/k/l**:在分屏中切换焦点(左、下、上、右)。

##### 标签页和窗口管理

-
:tabnew**:打开一个新的标签页。
- :tabn 或 `gt`:切换到下一个标签页。
- :tabp 或 `gT`:切换到上一个标签页。
- :tabc**:关闭当前标签页。

##### 自定义配置

你可以通过编辑 `~/.vimrc` 配置文件来定制 `vim` 的行为。例如,设置自动缩进:

```bash
set tabstop=4 " 设置 Tab 键的宽度为 4 个空格
set shiftwidth=4 " 设置缩进时的宽度为 4 个空格
set expandtab " 将 Tab 键转换为空格
set autoindent " 自动缩进
```

#### 5. **插件管理


- Vundle 是一个常用的 Vim 插件管理器,可以轻松地安装和管理 Vim 插件。

安装 Vundle:

git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim


~/.vimrc 中配置插件:

set nocompatible
filetype off
" 设置插件管理器
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
" 插件列表
Plugin 'tpope/vim-fugitive'
Plugin 'scrooloose/nerdtree'
call vundle#end()
filetype plugin indent on


运行 :PluginInstall 来安装插件。

#### 总结

- **模式**:`vim` 有普通模式、插入模式和命令模式,切换模式是 vim 操作的关键。
- **基本操作**:如光标移动、删除、复制粘贴、撤销重做、搜索替换等。
- **高级操作**:分屏、标签页、窗口管理、自定义配置等。
- **插件**:通过插件可以扩展 vim 的功能,增加开发效率。

vim 学起来有些陡峭,但一旦掌握,就能极大提高编辑和编程的效率。掌握了基础操作后,可以深入了解更多高级功能和插件。

#vim
 
 
Back to Top