Vim文本编辑器命令和配置

Vim文本编辑器

Vim编辑器简介

vi编辑器是Unix系统最初的编辑器。它使用控制台图形模式来模拟文本编辑窗口,允许查看文件中的行、在文件中移动、插入、编辑和替换文本。尽管它可能是世界上最复杂的编辑器(至少讨厌它的人是这么认为的),但其拥有的大量特性使其成为Unix系统管理员多年来的支柱性工具。

在GNU项目将vi编辑器移植到开源世界时,他们决定对其作一些改进。由于它不再是以前Unix中的那个原始的vi编辑器了,开发人员也就将他重命名为vi improved, 或vim。

vim是vi的升级版,最常见的区别是能用多种颜色显示显示系统文件的一些特殊信息。

  • vi: Visual Interface 文本编辑器,可视化接口

  • vim:vi iMproved的缩写,即vi的增强版

Vim模式

Vim参数

VIM - Vi IMproved 8.2 (2019 Dec 12, compiled May  8 2021 05:44:12)

用法: vim [参数] [文件 ..]       编辑指定的文件
  或: vim [参数] -               从标准输入(stdin)读取文本
  或: vim [参数] -t tag          编辑 tag 定义处的文件
  或: vim [参数] -q [errorfile]  编辑第一个出错处的文件

参数:
   --			在这以后只有文件名
   -v			Vi 模式 ("vi")
   -e			Ex 模式 ("ex")
   -s			安静(批处理)模式 (只能与 "ex" 一起使用)
   -d			Diff 模式 ("vimdiff")
   -y			容易模式 ("evim",无模式)
   -R			只读模式 ("view")
   -Z			限制模式 ("rvim")
   -m			不可修改(写入文件)
   -M			文本不可修改
   -b			二进制模式
   -l			Lisp 模式
   -C			兼容传统的 Vi: 'compatible'
   -N			不完全兼容传统的 Vi: 'nocompatible'
   -V[N][fname]		Be verbose [level N] [log messages to fname]
   -D			调试模式
   -n			不使用交换文件,只使用内存
   -r			列出交换文件并退出
   -r (跟文件名)		恢复崩溃的会话
   -L			同 -r
   -A			以 Arabic 模式启动
   -H			以 Hebrew 模式启动
   -F			以 Farsi 模式启动
   -T <terminal>	设定终端类型为 <terminal>
   -u <vimrc>		使用 <vimrc> 替代任何 .vimrc
   --noplugin		不加载 plugin 脚本
   -P[N]		打开 N 个标签页 (默认值: 每个文件一个)
   -o[N]		打开 N 个窗口 (默认值: 每个文件一个)
   -O[N]		同 -o 但垂直分割
   +			启动后跳到文件末尾
   +<lnum>		启动后跳到第 <lnum> 行
   --cmd <command>	加载任何 vimrc 文件前执行 <command>
   -c <command>		加载第一个文件后执行 <command>
   -S <session>		加载第一个文件后执行文件 <session>
   -s <scriptin>	从文件 <scriptin> 读入正常模式的命令
   -w <scriptout>	将所有输入的命令追加到文件 <scriptout>
   -W <scriptout>	将所有输入的命令写入到文件 <scriptout>
   -x			编辑加密的文件
   --startuptime <file>	Write startup timing messages to <file>
   -i <viminfo>		使用 <viminfo> 取代 .viminfo
   -h  或  --help	打印帮助(本信息)并退出
   --version		打印版本信息并退出

Vim打开文件的用法

命令用途
vim file打开文件file
vim +# file打开file文件,光标定位在file文件的第#行
vim + file打开file文件,光标定位在最后一行
vim +/PATTERN file打开file文件,定位第一次被PATTERN(模式)匹配到的行的行首

Vim编辑器模式,主要分为一下三类:

  • 命令模式(编辑模式):默认模式,移动光标,剪切/粘贴文本(界面表现:左下角显示文件名或为空)
  • 插入模式(输入模式):修改文本(界面表现:左下角显示—INSERT–)插入模式下,按ESC按键返回命令模式
  • 末行模式(扩展模式):保存、退出等(界面表现:左下角显示—VISUAL–)末行模式下连续按两次ESC按键返回末行模式

Ps : Esc键可以退出当前模式

1. 命令模式

当刚打开要编辑的文件或新建一个文件时,vim首先进入的是命令模式。在命令模式中,vim会将按键解释程命令。

命令模式下常用快捷键
1)模式转换
快捷键用途
i在当前光标所在字符的前面,转为插入模式
a在当前光标所在字符的后面,转为插入模式
o在当前光标所在行的下方,新建一行,并转换为插入模式
I在当前光标所在行的行首,转换为插入模式
A在当前光标所在行的行尾,转换为插入模式
O在当前光标所在行的上方,新建一行,并转换为插入模式
cc删除当前行并输入新内容,相当于S
C删除当前光标到行尾,并切换成插入模式
c^删除光标处到行首的字符,并进入插入模式
c$删除光标处到行尾的字符,并进入插入模式
c0删除光标处到当前行首的第一非空字符,并进入插入模式
cb删除当前第一个单词,并进入插入模式
ce删除下一个单词,并进入插入模式
cw删除光标处到单词词尾,并进入插入模式
2)光标移动
快捷键用途
h[#h]左移一个字符[左移#个字符]
l[#l]右移一个字符[右移#个字符]
k[#k]上移一行(文本的上一行)[上移#个字符]
j[#j]下移一行(文本的下一行)[下移#个字符]
g移到缓冲区最后一行
# g移到缓冲区第#行
gg移到缓冲区第一行
H跳转当前页的页首
M跳转当前页的中间行
L跳转当前页的页底
w[#w]移动至下一个单词的词首
e[#e]跳至当前或下一个单词的词尾
b[#b]跳至当前或前一个单词的词首
0(零)绝对行首,光标移动到当前行的行首
^光标移动到当前行首的第一个非空白字符
&光标移动到当前行的行尾
PageDown(或Ctrl+F)下翻一屏
PageUp(或Ctrl+B)上翻一屏
Ctrl + e向下滚动一行
Ctrl + y向上滚动一行
Ctrl + d向下滚动半屏
Ctrl + u向上滚动半屏
3)数据编辑
  • 删除命令
命令描述
x[#x]删除当前光标所在位置的字符[删除从光标开始处向后#个字符]
dd删除光标所在的行
dw删除当前光标所在的单词
d$删除当前光标所在位置至行尾的内容
J删除当前光标所在行行尾的换行符(拼接符)
d^删除到非空行首
d0删除到行首
A在当前光标所在行尾追加数据
  • 替换命令
命令描述
r char用char替换当前光标所在位置的单个字符
R text用text覆盖当前光标所在位置的数据,知道按下ESC键
  • 复制与粘贴命令
命令描述
y[#yy]复制,可以结合光标跳转字符,实现范围复制(行为与d有类似之处)
y$复制到行尾
y^复制到非空行首
y0复制到行首
yy复制当前行
Y整行复制
p缓冲区存的如果为整行,则粘贴当前光标所在行的下方,否则粘贴至当前光标所在处的后面
  • **撤销命令-**u[#u]:撤销最近的更改(撤销之前#次更改)
4)查找与替换
  • 查找

在vim中可以通过按下斜线(/)键。

光标会跑到消息航,然后vim会显示出斜线,然后输入需要查找的关键字符,按下回车键,vim会在文本中查找要查找的文本。

通常会出现三种回应:

  1. 如果要查找的文本出现在光标当前位置之后,则光标会跳转到该文本出现的第一个位置。
  2. 如果要查找的文本未在光标当前位置之后出现,而且在之前出现,则光标会跳过文件末尾,出现在该文本所在的第一个位置(并用一条消息指明)
  3. 输出一条错误消息,说明在文件中没有找到要查找的文本。
  4. 如果要继续查找同一个单词,按下斜线,然后按回车,接着使用n键,表示下一个(next).
  • 替换

替换命令允许你快速的用一个单词来替换文本中的另一个单词。

必须进入底行模式才能使用替换命令。

:s/old/new

Vim会跳到old第一次出现的地方,并用new来替换。

对这个命令进行一些修改可以替换多处文本:

:s/old/new/g    # 可以替换掉第一行出现的所有old,替换成new.

:n,ms/old/new/g  # 替换行号n和m之间的所有old

:%s/old/new/g   # 替换整个文件中的所有old   最常用到

:%s/old/new/gc  # 替换整个文件中的所有old,但在每次出现时提示。

修饰符:

  • i:忽略大小写
  • g:管局替换;默认情况下,每行只替换第一次出现
  • gc:全局替换,每次替换前询问

2.末行模式

命令模式下进入末行模式(扩展模式)输入::

退出缓存区的命令如下:

  • :q如果未修改缓冲区数据,退出。

  • :q!取消所有对缓冲区数据的修改并退出。

  • :wfilename 将文件保存到另一个文件中。

  • :wq 将缓冲区数据保存到文件中并退出

Vim编辑器配置

选项或配置均位于用户主目录中的 Vim 启动配置文件 .vimrc。 按照下面的说明在 .vimrc 中设置选项:

(注意:vimrc 文件也用于 Linux 中的全局配置,如 /etc/vimrc/etc/vim/vimrc。本文所说的 .vimrc 均是指位于用户主目录中的 .vimrc 文件。)

在Linux 系统中:

  • Vim 打开 .vimrc 文件: vim ~/.vimrc
  • 复制本文最后的 选项列表 粘贴到 .vimrc 文件
  • 保存并关闭 (:wq)

在Windows 系统中:

  • 首先,安装 gvim
  • 打开 gvim
  • 单击 “编辑” -> “启动设置”,打开 _vimrc 文件
  • 复制本文最后的 “选项列表” 粘贴到 _vimrc 文件
  • 单击 “文件” -> “保存”

Vim编辑器的配置主要包括以下几类:

  • 缩进 & 制表符
  • 显示 & 格式化
  • 搜索
  • 浏览 & 滚动
  • 拼写
  • 其他选项

缩进 & 制表符

  • 使 Vim 在创建新行的时候使用与上一行同样的缩进:set autoindent

  • 创建新行时使用智能缩进,主要用于 C 语言一类的程序。通常,打开 smartindent 时也应该打开 autoindent:set smartindent

  • 设置文件里的制表符 (TAB) 的宽度(以空格的数量表示):set tabstop=4

  • 设置移位操作 >><< 的缩进长度(以空格的数量表示):set shiftwidth=4

  • 如果你更喜欢在编辑文件时使用空格而不是制表符,设置以下选项可以使 Vim 在你按下 Tab 键时用空格代替制表符:set expandtab

显示 & 格式化

  • 要在每行的前面显示行号:set number
  • 要在文本行超过一定长度时自动换行:set textwidth=80
  • 要根据从窗口右侧向左数的列数来自动换行:set wrapmargin=2
  • 当光标遍历文件时经过括号时,高亮标识匹配的括号:set showmatch

搜索

  • 高亮搜索内容的所有匹配位置:set hlsearch
  • 搜索过程中动态显示匹配内容:set incsearch
  • 搜索时忽略大小写:set ignorecase
  • 在打开 ignorecase 选项的条件下,搜索内容包含部分大写字符时,要使搜索大小写敏感:set smartcase

浏览 & 滚动

  • 为获得更好的视觉体验,你可能希望将光标放在窗口中间而不是第一行,以下选项使光标距窗口上下保留 5 行:set scrolloff=5
  • Vim 窗口底部显示一个永久状态栏,可以显示文件名、行号和列号等内容:set laststatus=2

拼写

  • Vim 有一个内置的拼写检查器,对于文本编辑和编码非常有用。Vim 可以识别文件类型并仅对代码中的注释进行拼写检查。使用下面的选项打开英语拼写检查:set spell spelllang=en_us

其他选项

  • 禁止创建备份文件:启用此选项后,Vim 将在覆盖文件前创建一个备份,文件成功写入后保留该备份。如果不想保留该备份文件,可以按下面的方式关闭:set nobackup
  • 禁止创建交换文件:启用此选项后,Vim 将在编辑该文件时创建一个交换文件。 交换文件用于在崩溃或发生使用冲突时恢复文件。交换文件是以 . 开头并以 .swp 结尾的隐藏文件:set noswapfile
  • 如果需要在同一个 Vim 窗口中编辑多个文件并进行切换。默认情况下,工作目录是打开的第一个文件的目录。而将工作目录自动切换到正在编辑的文件的目录是非常有用的。要自动切换工作目录:set autochdir
  • Vim 自动维护编辑的历史记录,允许撤消更改。默认情况下,该历史记录仅在文件关闭之前有效。Vim 包含一个增强功能,使得即使在文件关闭后也可以维护撤消历史记录,这意味着即使在保存、关闭和重新打开文件后,也可以撤消之前的更改。历史记录文件是使用 .un~ 扩展名保存的隐藏文件:set undofile
  • 错误信息响铃,只对错误信息起作用:set errorbells
  • 如果你愿意,还可以设置错误视觉提示:set visualbell

以下为配置好的配置文件信息:

    " Indentation & Tabs
    set autoindent #采用与上一行相同的缩进
    set smartindent  # 智能缩进
    set tabstop=4	# 制表符宽度为4
    set shiftwidth=4	# 移位操作的缩进长度为4
    set expandtab # 将tab键的tab缩进换为空格
    set smarttab
    " Display & format
    set number	# 在每行之前添加行号
    set textwidth=80	# 文本超过80就自动换行
    set wrapmargin=2	# 从窗口右侧向左数的列数为2时,自动换行
    set showmatch	# 高亮标识匹配括号
    " Search
    set hlsearch	# 高亮搜索内容的所有匹配位置
    set incsearch	# 搜索过程中动态显示匹配内容
    set ignorecase	# 搜索时忽略大小写
    set smartcase	# 搜索内容包含部分大写字符时,使搜索大小写敏感
    " Browse & Scroll
    set scrolloff=5	# 光标距窗口上5行
    set laststatus=2 # 底部永久状态栏
    " Spell
    set spell spelllang=en_us # 英语拼写检查
    " Miscellaneous
    set nobackup	# 不保留备份文件
    set noswapfile
    set autochdir	# 要自动切换工作目录
    set undofile	
    set visualbell	# 设置错误视觉提示
    set errorbells	# 错误信息响铃
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值