跳转到内容

vim-commands

Vim(Vi IMproved)是类 Unix 系统下最常用且功能强大的文本编辑器之一。它具有高度可配置性,支持多模式操作,是系统管理员和开发人员的常用工具。

Vim 的配置可以在不同层级上生效:

  • 临时配置:在编辑器中进入“末行模式”(Command-line mode)直接输入命令,仅在当前编辑会话中生效。
  • 用户级配置:位于用户家目录下的 ~/.vimrc,仅对当前用户生效。
  • 系统全局配置:位于 /etc/vimrc,对系统内所有用户生效。

Vim 主要包含命令模式(Normal mode)、输入模式(Insert mode)和末行模式(Command-line mode)。

在命令模式下按下 : 即可进入末行模式:

  • :w [path]:另存为到指定路径。
  • :!command:临时调用外部 Shell 命令(例如 :!ls)。
  • :set nu:显示行号。
  • :set nonu:取消显示行号。
  • :files:查看当前已经打开的缓冲文件列表(Vim 支持同时打开多个文件,如 vim file1 file2)。
  • :e [file]:打开另一个文件进行编辑。
  • :b [num]:在已打开的多个文件缓冲区(buffers)之间进行切换。
  • :sp [file]:水平分屏显示文件(Ctrl + w 然后按方向键可在窗口间切换)。
  • :vsp [file]:垂直分屏显示文件。
  • :x:如果文件未修改则直接退出,有修改则保存并退出。
  • G:移动到文档最后一行。
  • gg:移动到文档第一行。
  • nG:移动到第 n 行。
  • n <Enter>:光标向下移动 n 行。
  • ^:移动到当前行的行首。
  • $:移动到当前行的行尾。
  • /pattern:向光标下方查找匹配文本。
  • ?pattern:向光标上方查找匹配文本。
  • n:顺向跳转到下一个匹配项。
  • N:逆向跳转到上一个匹配项。
  • nx:删除光标处的连续 n 个字符。
  • ndd:删除光标所在的连续 n 行。
  • d1G:删除从第一行到当前光标所在行的所有内容。
  • dG:删除从当前光标所在行到最后一行的所有内容。
  • d0:删除当前光标处到行首的所有字符。
  • d$:删除当前光标处到行尾的所有字符。
  • yy:复制当前行。
  • nyy:复制当前行开始的 n 行。
  • y1G:复制第一行到当前光标行的所有内容。
  • yG:复制当前光标行到最后一行的所有内容。
  • y0:复制行首到光标处的所有内容。
  • y$:复制光标处到行尾的所有内容。
  • p:粘贴复制或剪切的内容到光标下一行(或光标后)。
  • J:将当前行与下一行合并为一行。
  • u:撤销上一个动作(Undo)。
  • Ctrl + r:重做上一个被撤销的动作(Redo)。

5.1. 禁用鼠标自动进入 Visual 模式以解决复制粘贴问题

Section titled “5.1. 禁用鼠标自动进入 Visual 模式以解决复制粘贴问题”

问题现象:在某些终端下,用鼠标点击 Vim 会自动触发 visual 模式,导致无法使用鼠标右键直接将外部剪贴板的内容粘贴进 Vim。

解决方案:编辑用户配置文件并关闭鼠标支持。

Terminal window
vim ~/.vimrc

在文件中添加以下配置:

if has('mouse')
set mouse-=a
endif