cn域名网站,营销型网站内容,企业门户网站建设内容,电脑网页视频怎么下载vim 是一个很好用的编辑器#xff0c;应用十分广泛。但关于 vim#xff0c;总有一些你不知道的事情#xff0c;我们需要持续不断的学习。
我经常使用 vim#xff0c;也经常在各大社区、论坛看到 vim 专家用户分享经验#xff0c;今天我们就总结其中常用的一部分#xff…vim 是一个很好用的编辑器应用十分广泛。但关于 vim总有一些你不知道的事情我们需要持续不断的学习。
我经常使用 vim也经常在各大社区、论坛看到 vim 专家用户分享经验今天我们就总结其中常用的一部分分享给大家。
1使用内置帮助built-in help
使用 vim 的内置帮助是一个好习惯虽然很多朋友更喜欢在网上搜索相关的使用方法。查看帮助的语法如下表格所示
前缀例子说明::help :w有关 :w 命令的帮助none:help j有关“j”键在正常模式上下文中的帮助v_:help v_J有关在上下文中使用“J”键到视觉模式的帮助i_:help i_Esc有关在上下文中使用“Esc”键插入模式的帮助/:help /\n有关搜索模式“\n”的帮助
2以普通用户身份打开以 root 用户身份保存
在编辑系统文件或者受权限保护的文件的时候很容易会忘记在 vim 编辑之前添加 sudo这样将会以只读模式打开文件也就是编辑后不能保存。
但是这时候你可能已经对文件做了一些修改尚未保存很显然强制退出不是一个好选择。 在这些情况下在 vim 中键入以下命令 :w !sudo tee % 键入此命令后将要求您输入sudo命令的密码然后文件就可以保存了。
注我们应该使用 sudoedit 命令而不是 sudo vim 来编辑需要超级用户权限的文件。
我们将上述命令拆解来看下 :w - 这是写入命令。由于没有给出参数vim 将把整个文件写入标准输出 !sudo - 将 sudo 命令作为 shell 命令而不是 vim 命令运行 tee - tee命令用于读取标准输入并将其写入标准输出或文件 % - vim 将其替换为您正在编辑的当前文件的名称。
:w 命令将整个文件写入 STDOUT标准输出然后我们使用sudo命令因为我们编辑的毕竟是一个系统文件来获得临时权限。
百分号%表示文件名tee 命令从 STDOUT 获取 vim 的输出并将其写入 % 文件。
这基本上适用于 Vims STDOUT | sudo tee /etc/ssh/sshd_config有点复杂...
3将所有空格转为制表符或者反过来
我们都喜欢使用制表符(tab)或者空格但是如果我们正在编辑的文本其缩进使用的符号正好与我们的习惯相反该怎么办
3.1 将所有空格转换为制表符
如果当前文件使用空格缩进文本希望将它们转换为制表符时需要运行如下两个 vim 命令 :set noexpandtab:retab! 这样做会将所有空格转换为其等效的制表符。如果文档使用两个空格作为缩进宽度它们将转换为1个制表符。如果 4 个空格用作单个缩进宽度时这 4 个制表位将替换为 1 个制表字符。
3.2 将所有制表符转换为空格
如果要编辑的文件使用制表符缩进并且要将制表符转换为空格则需要运行如下4个 vim 命令 :set expandtab:set tabstop4:set shiftwidth4:retab 第一个命令expandtab告诉 vim 使用空格展开 tab第二个命令tabstop设置使用多少个空格用作一个“缩进块”。
在我们的例子中我们定义了“1个tab4个空格”当使用运算符时shiftwidth 命令用于控制缩进这也被设置为4个空格。
最后retab 命令将所有制表符用于缩进转换为空格。
4缩进所有行
错误的缩进在 python 或者 YAML 程序中会报错导致程序不能正确运行。
要缩进所有行按 gg 键到达文件顶部然后按 键表示“缩进”最后按 G 键表示到“最后一行”。
这样将会自动缩进从第一行到最后一行。
如下图所示我使用 :ggG命令缩进的演示 正如你所看到的从这个有限的预览中所有行都正确缩进。
5粘贴代码时保留缩进
我们都有过在互联网上复制代码的时候。当将代码粘贴到文件中时缩进都给弄乱了这时候需要怎样做呢
为了避免这种情况请在 .vimrc 文件中添加以下代码 set pastetoggleF2 对 vimrc 文件进行如上更改后在粘贴代码之前按 F2 键这样做将确保代码粘贴正确的缩进。
6以正确的缩进深度开始书写
假设光标在第一行第一列但是所要写的内容需要缩进那在不按下制表符tab和空格键的情况下应该怎样做呢
答案是在正常模式下按下 S 键。
当光标位于行的第一列时按 Esc 键进入正常模式。然后按 S大写键这会将光标移动到适当的缩进深度并自动进入“插入”模式以便开始键入。 上图我的光标位于第一列通过按S键光标移动到正确的缩进深度Vim从正常模式切换到插入模式。
7保存文件前显示差异
我们可能遇到过这样的情况我修改了这个文件但是忘记都做了哪些修改了并且我担心其中有些地方可能修改错了。
解决此问题的方法是查看缓冲区和文件之间的差异。可在 vim 中执行如下命令 :w !diff % - 我们将上述命令拆解来看 :w 用于保存/写入在这个特定场景中如果命令中没有指定文件名则输出将写入STDIN标准输入文件 :!command 是执行 shell 命令的语法在这个例子中我们在 shell 中运行 diff 命令 % 表示未修改的当前文件的名称试试这个:!echo % - 是 diff 命令的 STDIN 文件。
因此该命令首先将所有[未保存]内容写入STDIN文件。然后diff命令读取当前文件%并将其与STDIN-文件进行比较。
这个命令大致等同于这个shell命令diff original-file Vims STDOUT
8显示拼写错误
我们应该都使用过 Microsoft word其拼写检查器在拼写错误的单词下会有一条红色的波浪线。
vim 也内置了拼写检查器但默认情况下是关闭的。我们可以使用如下命令启用它 :set spell 这样你可能会看到拼写错误的单词被突出显示其突出显示的方式取决于你的 vim 颜色方案。我在拼写错误的单词下面有一条白色下划线如下图所示 要将这设置为 vim 的默认可在 .vimrc 文件中添加如下配置 set spell 9显示行号
与许多 vim 用户一样你可能喜欢在 vim 中显示行号。
有两种方法可以显示行号。一种是绝对行编号在这种情况下每行显示绝对行号就像任何其他代码编辑器或IDE一样。
第二种是相对行号。在这种情况下当前行的行号为0其他行的行号为相比于光标所在行的相对数字。
这两种情况也并不是只能选择一个事实上可以两种都要。
通过在 .vimrc 中添加以下行可以在 vim 中启用“混合行编号” set number relativenumber 这将在光标所在行显示绝对行号在其他行显示相对行号。如下图所示 当前光标位于第44行因此该行显示绝对行号其他行光标上方和下方的行显示相对行号。
10使用 vim 打开文件的同时将光标定位在某一行
默认情况下我们使用 vim 打开文件光标总会在第一行。在某些时候我们希望光标能够定位在我们指定的某一行而不是第一行。
可以通过使用 nn为行号选项来实现这一点当然前提是你需要知道打开的文件总行数应大于或等于 n如下 vim n file-name 11使用可读的配色方案
当谈到使用配色方案时人们通常会选择他们觉得最吸引人或最美观的配色方案。但是当你作为一个代码编辑器兼 IDE 的 vim 时最好放弃一些引人注目的东西转而使用具有更好视觉指导的配色方案。
一个好的配色方案看起来很好但是一个优秀的配色可以帮助你在颜色的帮助下轻松识别关键词、变量和其他标识符。
当然每个人的喜好是不同的配色当然也是不同的。我们在下图中贴出几个大家都觉得顺眼的方案可以作为参考 12在插入模式下删除文本
我们都知道在正常模式normal mode下可以使用 d 和 x 键删除文本那么在插入模式下如何执行相同的操作比如 dd呢
以下是常用的一些方案 ctrl w 删除前一个单词字相当于正常模式下的 db ctrl h 删除前一个字符 ctrl u 删除当前行所有前面的字符相当于正常模式下的 d0 ctrl k 删除当前行中所有主要字符相当于正常模式下的 d$。