在Linux中,vim(Vi IMproved)是一个非常强大的文本编辑器,它基于更古老的vi编辑器,并添加了许多增强功能。vim有几种不同的模式,包括命令模式、插入模式和可视模式,每种模式都有特定的功能和快捷键。
下面是vim的基本使用教程:
-  启动vim - 在终端中输入 vim [filename]来打开一个现有文件或创建一个新文件。如果不指定文件名,vim将以未命名缓冲区启动。
 
- 在终端中输入 
-  命令模式 - 这是启动vim时的默认模式。
- 使用方向键或HJKL(h向左,j向下,k向上,l向右)来移动光标。
- 按i键进入插入模式,允许你开始输入文本。
 
-  插入模式 - 在此模式下,你可以像在其他文本编辑器中那样输入文本。
- 按Esc键返回命令模式。
 
-  底线命令模式 - 在命令模式下,按:键进入底线命令模式,可以在这里输入命令。
- 常见命令: - :w保存当前文件。
- :q退出vim,如果文件有修改则需要加上- !强制退出,即- :q!。
- :wq或- :x保存并退出。
- :q!不保存并退出。
 
 
- 在命令模式下,按
-  文本编辑 - 在命令模式下,使用以下命令进行编辑: - a在当前位置后面插入文本。
- A在行尾插入文本。
- o在当前行下面新开一行并进入插入模式。
- O在当前行上面新开一行并进入插入模式。
- r替换当前字符。
- R替换并进入替换模式直到按- Esc。
 
 
- 在命令模式下,使用以下命令进行编辑: 
-  撤销与重做 - 在命令模式下,按u撤销上一次更改。
- 按Ctrl+r重做被撤销的操作。
 
- 在命令模式下,按
-  查找与替换 - 在命令模式下,输入/后跟随搜索字符串来查找文本。
- 输入:s/pattern/replacement/g全局替换文本中的模式。
 
- 在命令模式下,输入
-  分割窗口 - 在命令模式下,输入:split [filename]来水平分割窗口。
- 使用:vsplit [filename]垂直分割窗口。
 
- 在命令模式下,输入
-  导航 - 在命令模式下,使用gg跳到文件开头,G跳到文件结尾。
- 使用0或^移动到行首,$移动到行尾。
 
- 在命令模式下,使用
-  退出vim - 如果文件未修改,可以直接按:q退出。
- 如果文件有修改,使用:wq保存并退出,或使用:q!放弃更改并退出。
 
- 如果文件未修改,可以直接按
以上是vim基本功能的简要介绍,vim的功能远不止这些。以下是vim更高级的用法:
- 多级撤销
- 在vim中,不仅可以撤销单个操作,还可以撤销一系列操作。这使得你可以撤销整个编辑会话,或者只撤销到某个特定点。使用u撤销,Ctrl+r重做,Ctrl+r+[数字]恢复到某次撤销的状态。
- 视觉模式
- 视觉模式(Visual Mode)允许你选择文本。可以通过以下方式进入: - v:字符视觉模式,从光标位置开始选择文本。
- V:行视觉模式,从光标所在行开始选择文本。
- Shift+- v:列视觉模式,从光标所在列开始选择文本。
 
- 选中文本后,可以执行复制(y)、剪切(d)、粘贴(p)等操作。
- 寄存器
- vim中的寄存器类似于剪贴板,用于存储剪切、复制的内容。使用- "a+[命令]将内容存储到寄存器- a中,使用- "a+[粘贴命令]从寄存器- a中粘贴内容。
- 替换命令
- 更复杂的替换可以在命令模式下使用:%s/old/new/g,其中%表示全文,s表示替换,old是旧字符串,new是新字符串,g表示全局替换。
- 插件管理
- vim支持插件以扩展功能。使用插件管理器如- vim-plug或- Vundle来安装和管理插件,这可以极大地提高编辑效率和代码质量。
- 示例:安装vim-plug插件管理器后,你可以在.vimrc文件中添加如下代码来安装NERDTree插件:call plug#begin('~/.vim/plugged') Plug 'scrooloose/nerdtree' call plug#end()
- 编程支持
- vim内置了对多种编程语言的支持,包括语法高亮、缩进规则、函数列表等。可以通过设置文件类型(- :set ft=python)来启用特定语言的支持。
- 自动完成和代码补全
- 使用插件如YouCompleteMe或deoplete.nvim可以实现代码自动补全功能,提高编码速度。
- 跳转至定义和引用查找
- 对于某些语言,vim可以跳转到变量、函数的定义处,或查找所有引用。这通常通过插件实现,如ctags和Tagbar。
- 示例:假设你在一个C++项目中,想要跳转到函数myFunction的定义处,可以使用ctags生成tags文件,然后在vim中输入:tag myFunction。
- 配置.vimrc
- .vimrc文件是- vim的配置文件,位于用户主目录下。通过编辑这个文件,可以自定义- vim的行为,包括快捷键、颜色主题、插件加载等。
- 示例:若要设置vim的背景为深色,可以在.vimrc文件中添加:set background=dark syntax enable
- 编辑多文件
- 可以同时打开多个文件,使用tabedit或t命令在标签页间切换,使用next或prev命令在文件间切换。
- 快速修复 (Quickfix)
- 假设你有一个C程序,编译命令是gcc -Wall -o prog prog.c。你可以在vim中运行make命令:
 这将自动打开快速修复列表,显示所有的编译错误。你可以使用:makecopen或lopen来查看错误列表,使用cn和cp在错误之间导航。
- 映射 (Mappings)
- 在你的.vimrc中,你可以自定义快捷键。例如,为了快速保存文件并退出,可以添加:
 现在,你可以按nnoremap <leader>wq :wq<CR>Ctrl+w再按q来保存文件并退出。
- 标签 (Tags) 和 Taglist
- 安装ctags并生成tags文件后,你可以使用taglist插件在侧边栏显示所有函数和变量的列表。例如,要跳转到名为main的函数定义,可以执行::tag main
- 语法检查 (Syntastic)**
- 安装Syntastic插件后,当你打开一个Python文件时,插件会自动运行pylint或其他检查器,并在编辑器底部显示任何问题。例如,如果一个变量未被定义,你会看到一条错误消息。
- 缓冲区管理 (Buffer Management)
- 打开多个文件后,你可以使用以下命令在缓冲区之间切换::bn " 切换到下一个缓冲区 :bp " 切换到上一个缓冲区 :ls " 列出所有打开的缓冲区
- 自动文件类型检测 (Filetype Detection)
- 当你打开一个.py文件时,vim会自动加载Python相关的语法高亮和行为设置。如果你想要手动设置文件类型,可以执行::set filetype=python
- 插件开发
- 使用Lua脚本,你可以编写自己的插件。例如,一个简单的插件可以是:function! Hello()echomsg 'Hello, World!' end
- 会话管理 (Session Management)
- 要保存当前的编辑会话(包括打开的文件、窗口布局等),可以执行:
 下次启动:mksession session.vimvim时,要恢复会话,可以执行::source session.vim
- 自定义界面 (Customizing UI)
- 要更改vim的颜色主题,你可以在.vimrc中添加:colorscheme desert
- 代码折叠 (Folding)
- 你可以根据语法自动折叠代码块。例如,对于C语言,可以开启语法折叠:
 然后使用set foldmethod=syntaxzo和zc在代码块之间展开和折叠。