经过一些有趣的小技巧使你的文本编辑器更上一层楼。php
Vim 是最受欢迎的文本编辑器之一,所以绝对值得你花时间去学习如何使用它。就算你只是学习使用这个无处不在的 Vi(m) 命令行文本编辑器打开文件、输入和编辑一些文本、保存编辑的文件并退出程序,你都会受益不浅。html
你会发现,使用 Vim 很是方便的的场景几乎老是涉及到运行远程 Shell 操做的任务。若是你时不时地使用 ssh,好比node
$ ssh user@hostname.provider.com
复制代码
并在虚拟专用服务器(VPS)或本地虚拟化容器中工做,那么就能够从这些强大的 Vim 技能中受益不浅。linux
几乎全部的现代 Linux(或 BSD)发行版中,均可以在终端仿真器的 shell 命令提示符下使用 Vim。一旦在你的用户 shell 程序中将 Vim 定义为默认编辑器后,那么就可使用熟悉的 Vim 键绑定来在内置的实用程序(例如 man
)中导航。我将说明如何使用 Bash 和 Z shell(zsh)来实现此目的,zsh 如今是 macOS 用户的默认 shell(自 Catalina 起)。git
Bash 经过点文件的组合来管理设置。最多见的的作法将你的编辑器添加到主目录中的 .bashrc
文件中,但也能够将其添加到 .bash_profile
中。(请阅读 GNU Bash 文档了解二者的不一样之处)。github
经过在 ~/.bashrc
中添加如下内容,将 Vim 设置为默认编辑器:shell
# set default editor to Vim
export EDITOR=vim
复制代码
以 #
开头的行是可选的注释,这是一个好方法,能够提醒本身该命令的做用。vim
zsh 是一种愈来愈流行的终端仿真器,尤为是在苹果公司的基于 FreeBSD 的 Darwin 系统最近从 Bash 转向 zsh 以来。bash
zsh 点文件与 Bash 的文件至关,所以你能够在 ~/.zshrc
或 ~/.zprofile
之间进行选择。有关什么时候使用哪个的详细信息,请参见 zsh文档。服务器
将其设置为默认:
# set default editor to Vim
export EDITOR=vim
复制代码
Vim 像是终端仿真器 shell 同样,也使用点文件来设置我的偏好。若是你发现了这种模式,则可能已经猜到它是 ~/.vimrc
。
你可能要更改的第一个设置是将对传统的 Vi 兼容模式切换为“关闭”。因为 Vim 是 Vi 的超集,所以 Vi 中的全部功能在 Vim 中都是可用的,而且在 Vim 中获得了很大的改进,你能够得到许多高级功能。最新版本(8.2)容许你在分割的窗口中以子进程 shell 的方式打开一个终端。
顺便说一句,明确关闭对传统的 Vi 的兼容性看起来没有什么做用(事实上,可能并无什么做用)。当 Vim 遇到 .vimrc
文件时,它会暗暗地自动将兼容模式切换到关闭。但有时将其明确关闭仍然很重要。缩写 nocp
是 nocompatible
的同义词,做用是同样的。条条大道通罗马,切换首选项有不少方式。
在 .vimrc
语法中, 以 "
开头的行是注释(就像 .bashrc
文件中的 #
同样),这些注释能够帮助你记住诸如为什么选择了一个隐晦的设置名称之类的内容。
要关闭 Vi 兼容性,请将如下内容添加到 ~/.vimrc
文件中:
" ensure that legacy compatibility mode is off " documentation: <http://vimdoc.sourceforge.net/htmldoc/options.html\#'compatible>'
set nocp
复制代码
Vim 的 “模式”概念是很是重要的,尤为是“普通模式”和“插入模式”之间的区别。对模式的混淆是大多数新用户的困扰。模式并非 Vim 所独有的,甚至也不是 Vi 所引入的。命令模式是如此的古老,以致于它比 70 年代发明的复制和粘贴功能还要早。
Vim 依赖于不一样的模式来定义键盘的敲击行为。须要了解的重要模式有:
每种模式都有不少值得探索的地方。使用 Vimtutor(vimtutor
)能够交互式地学习移动光标、模式和在末行模式下运行 Ex 命令。一些不可缺乏的生产力操做符包括:
操做符 | 说明 |
---|---|
:E |
打开资源管理器,用于定位文件和目录。 |
. |
重复上次的编辑操做。 |
; |
向前重复上一次的动做或移动 |
, |
向后重复上一次的动做或移动。 |
/ |
向前搜索文档。 |
? |
向后搜索文档。 |
* |
查找光标所在处的单词的下一个出现的地方。 |
# |
查找光标所在处的单词的上一次出现的地方。 |
~ |
切换大小写。 |
% |
在 () 、[] 和 {} 的开闭符号之间切换;对编码很是有用。 |
z= |
提出拼写建议。 |
尽管把 Vim 的操做符“语言”记在记忆中是很重要的,但要想掌握它,难点在于学会像音乐家同样思考,把操做符和动做组合成“和弦”,这样你就能够像弹钢琴同样弹奏 Vim。这就是 Vim 的文本操做能力能够与另外一个著名的命令行编辑器 Emacs 相媲美的地方。(虽然其中一个编辑器会让磨损掉你的 Esc
键,而另外一个编辑器会让你的 Ctrl
键磨损掉。)
在描述键“和弦”时,Vim 中的传统作法是用大写字母 C 后面加上一个连字符(C-
)来指代 Ctrl
键。这并非通用的,但我将从这里开始遵循这一惯例,并在有可能引发混淆的时候加以说明。
若是你在 Vim 中键入长行,你会想把它设置成能够换行。想要根据你的工做方式对 Vim 进行个性化设置,请考虑一下这个设置:默认状况下,你但愿 Vim 启动时如何处理文本换行?开仍是关?我喜欢将其关闭,并将其留在运行命令文件以外。当我想让文本自动换行时,我只需在命令行模式下用 :set wrap
设置便可。
让 Vim 设置为默认状况下自动换行并无错,这只是一个偏好问题 —— 它可能随着时间的推移而改变。一样你也能够控制粘贴、代码语言缩进语法和 Tab
键的设置(制表符仍是空格?多少个空格?可也在这里深刻研究这些选项)。全部这些默认行为的选项都是彻底可配置和可更改的,而且在你使用命令行模式操做时能够实时更改。
你会在社区论坛、Vim 维基和文章(好比这篇文章)中找到不少关于设置 Vim 默认设置的建议。你应该很熟悉为你的我的计算环境设置首选项,Vim 也不例外。我强烈建议你从对设置进行很小的更改开始,慢慢地进行其它更改,以便你能够轻松地恢复设置。这样一来,你就能够好多年避免使用插件或彻底不用插件。
有两种方法能够将你正在处理的文件分割成不一样的视图:它们能够并排显示,也可使用应用程序标签页在全屏(窗口)中切换。这些对应用程序窗口的更改是从命令模式启动的,这须要使用冒号(:
)来调起提示符。
每一个分割的窗口能够容纳一个文件进行编辑,你能够经过标签页在更多的文件之间随意切换。分割的屏幕空间有限,因此当你想分割更多的屏幕时,标签页是很方便的。想要如何设置,纯属我的喜爱的问题。要水平分割一个窗口,使用 :sp
,垂直分割时使用 :vs
。
从 Vim 8.2 开始,你能够用 :vert term
打开一个垂直分割的终端 shell 子进程,以在你的代码旁边的命令行上进行操做。你须要键入 exit
来关闭你的终端进程,就像你结束一个 shell 会话同样,但你关闭这个分割的窗口和标签页的方式和关闭任何普通的 Vim 窗口同样,要用 :q
来关闭。
要初始化一个标签页,请使用一个特殊的编辑命令::tabedit
,它会自动切换到新打开的标签页。若是你给该命令一个文件名做为参数,会打开该文件并进行编辑。若是你忽略了给它一个文件名做为参数,能够在命令行模式下的使用编辑命令 :e filename.txt
,就像在任何一个普通的 Vim 窗口中同样。可使用下一个(:tabn
)和上一个(:tabp
)命令在标签页间导航。
要使用分割,你须要知道如何使用组合键 C-w
和你想要移动的方向的移动键,例如左(h
)、下(j
)、左(k
)、右(l
)。若是你想学习更多的组合键,请阅读 Vim 手册中的 :help split
和 :help tabpage
。
虽然能够在 Vimtutor 中打开参考 Vim 手册,但用 :help
打开 Vim 帮助,可让你本身把时间花在编辑器上,不用彻底依赖像这样的文章,就能得到更多的成果。经验是掌握 Vim 的关键。经验有助于提升你的总体计算直觉,由于 Vim 中的不少东西都是从 Unix 宇宙中汲取的。
祝你在探索 Vim 之美的过程当中玩得开心,有什么问题能够在评论中分享。
via: opensource.com/article/20/…
做者:Detlef Johnson 选题:lujun9972 译者:wxy 校对:wxy