Vim
Vim 基础命令
Vim 是一个非常强大的文本编辑器,它分为三种模式:Normal 模式、Insert 模式和 Visual 模式。
在不同的模式下,Vim 的操作方式也不同。
Normal 模式
光标移动
$: 光标跳转到行尾0: 光标跳转到第一个字符^: 光标跳转到第一个非空字符w: 跳转到下一个单词的开头b: 跳转到上一个单词的开头gg: 跳转到文件开头GG: 跳转到文件结尾:n: 跳转到第 n 行也可以使用
nG跳转到第 n 行hjkl: 左下上右(相当于方向键)
内容编辑
x: 剪切当前字符(也可以用于删除当前字符)X: 剪切前一个字符y: 复制yy: 复制当前行p: 粘贴P: 粘贴到当前行的前面d: 删除dd: 剪切当前行ddp: 将当前行和下一行交换(其实就是删除当前行,然后粘贴到下一行)u: 撤销i: 在当前字符前插入新字符a: 在当前字符后插入新字符I: 在当前行首插入新字符o: 在当前行下面插入新行r: 替换当前字符R: 替换当前字符及后续字符c+命令: 删除当前字符并进入 Insert 模式c代表 change,后面可以跟任意移动光标的命令,例如cw、c$、c0等,这样就可以实现快速删除并插入新字符的操作cw代表删除当前单词的后面字符并进入 Insert 模式caw代表删除当前单词并进入 Insert 模式(包括单词周围的空格)ciw代表删除当前单词并进入 Insert 模式(仅删除单词):%d: 删除所有行
查找
/: 搜索n/N: 下一个/上一个搜索结果
替换
:%s/old/new/g: 替换所有行中的 old 为 new:{作用范围}s/{目标}/{替换}/{替换标志}
默认为当前行,如果要替换其他行,可以使用以下作用范围:
.当前行1,51 到 5 行%所有行
替换标志包括:
g全局替换c替换前询问(y/n/a/q/l 分别表示:yes/no/all/quit/last)
TIP
如果替换的字符中包含 /,可以使用 \ 进行转义,例如 :%s/old/\/path\/to\/new/g(可读性差,不推荐)
或者使用其它的分隔符代替 /,比如 #、@、! 等,例如 :%s#old#new#g。
翻页
Ctrl + f: 向下翻页(相当于 PageDown)Ctrl + b: 向上翻页(相当于 PageUp)
其他命令
:q: 退出:q!: 强制退出:w: 保存:w filename_draft.txt保存到指定文件(类似于Save As):wq: 保存并退出
Insert 模式
Insert 模式是用于输入文本的模式,可以通过 Normal 模式下的 i、a、o 等命令进入 Insert 模式。
Visual 模式(可视模式)
Visual 模式是用于选中文本的模式,选中文本后可以对选中的文本进行操作。
v: 进入 Visual 模式Visual 模式下,可以选中一段文本,然后对这段文本进行操作
V: 进入 Visual Line 模式Visual Line 模式下,可以选中一行文本,然后对这行文本进行操作
Ctrl + v: Visual Block 模式Visual Block 模式下,可以选中一个矩形区域,然后对这个区域进行操作
Vim 配置文件
Vim 的配置文件是 ~/.vimrc,可以在这个文件中设置一些 Vim 的配置选项,来永久保存你的配置。
我的 Vim 配置文件可以参考 这里。
常用配置选项
set number: 显示行号(set number 可以简写为 set nu)set nonumber: 隐藏行号(set nonumber 可以简写为 set nonu)set expandtab: 将 tab 转换为空格set tabstop=4: 设置 tab 键的宽度为 4 个空格(默认为 8 个空格)set noexpandtab: 将空格转换为 tab(默认为 tab)set autoindent: 自动缩进set shiftwidth=4: 设置自动缩进的宽度为 4 个空格set noautoindent: 取消自动缩进set ignorecase: 搜索时忽略大小写set noignorecase: 搜索时区分大小写set hlsearch: 高亮搜索结果set nohlsearch: 取消高亮搜索结果set incsearch: 实时搜索set noincsearch: 取消实时搜索set list: 显示不可见字符set nolist: 隐藏不可见字符set wrap: 自动换行set nowrap: 取消自动换行set mouse=a: 启用鼠标set mouse=: 禁用鼠标set ffs=unix,dos,mac: 识别不同操作系统的文件格式处理跨平台文件格式的兼容性
set encoding=utf8: 设置文件编码为 UTF-8set colorcolumn=80: 设置列宽为 80(会在第 80 列显示一条竖线)
开启语法高亮
在 Vim 中开启语法高亮,可以让代码更加清晰易读。
syntax onVim 的语法高亮依赖语言的语法文件。Vim 默认支持大部分编程语言的语法高亮,但是有些语言可能需要手动安装语法文件。
语法文件通常存放在 ~/.vim/syntax/ 目录下,或者是 /usrr/share/vim/vim*/syntax/ 目录下。
可以通过添加 set t_Co=256 来确保开启 256 色彩。
注意: 如果你的终端不支持 256 色彩,可以使用 set t_Co=16 来开启 16 色彩。
不起作用的解决方法:
如果你的 Vim 配置文件中设置了
set background=dark,但是语法高亮没有生效,可以尝试将set background=dark放在syntax on之前。确保你的终端支持 256 色彩,可以通过
echo $TERM查看终端类型,如果是xterm-256color,则支持 256 色彩。确保文件类型检测开启,可以通过
filetype on和filetype plugin on来开启文件类型检测。
设置状态栏
状态栏默认是关闭的,我可以通过设置 set laststatus=2 来开启状态栏。
可选值:
0:从不显示状态栏。
1:仅在有多个窗口时显示状态栏。
2:始终显示状态栏(推荐)。
3:显示全局状态栏(适用于 Vim 8+ 和 Neovim)。
我们可以自定义状态栏的显示内容与格式,默认的为:
set statusline=%<%f\ %h%m%r%=%-14.(%l,%c%V%)\: 分隔不同部分,避免哪哦那个粘连%<: 从左到右显示%f: 文件名%h: 如果文件有帮助标志,显示一个H%m: 如果文件已被修改但未保存,显示一个+%r: 如果文件是只读的,显示一个RO%=: 从右到左显示%-14.: 从右到左显示,最多 14 个字符(%l,%c%V%): 当前行号,当前列号,当前列百分比
还有更多可选参数,如:
%{expr}: 用于执行 VimL 表达式,如使用%{getcwd()}来显示当前工作目录%{&filetype}: 显示当前文件类型%F: 显示完整文件路径%w: 如果窗口有警告标志,显示一个W
开启粘贴模式
在 Vim 中,有时候我们需要粘贴一段代码,但是由于自动缩进的原因,粘贴的代码可能会出现格式错误。
这时候可以通过 set paste 来开启粘贴模式,粘贴完代码后再通过 set nopaste 来关闭粘贴模式。
Vim 高级命令
多文件操作
:e filename: 打开一个文件:ls: 列出当前打开的文件:bnext: 切换到下一个文件:bprev: 切换到上一个文件:bfirst: 切换到第一个文件:blast: 切换到最后一个文件:bdelete: 关闭当前文件
nano 编辑器(类似于 Vim)
nano 是一个简单易用的文本编辑器,适合初学者使用。
在这里简单介绍一下 nano 的基本使用方法。
基本操作
Ctrl + G: 显示帮助Ctrl + O: 保存(这是Write Out命令)系统会提示保存文件名,按下回车键即可保存
Ctrl + X: 退出Ctrl + W: 搜索Ctrl + K: 剪切
