Vim 实用技巧必知必会
吴咏炜
前 Intel 资深软件架构师
立即订阅
1634 人已学习
课程目录
已更新 4 讲 / 共 24 讲
0/4登录后,你可以任选4讲全文学习。
课前必读 (2讲)
开篇词|我们为什么要学 Vim?
免费
导读|池建强:Vim 就是四个字“唯快不破”
基础篇 (2讲)
01|各平台下的 Vim 安装方法:上路前准备好你的宝马
02|基本概念和基础命令:应对简单的编辑任务
Vim 实用技巧必知必会
15
15
1.0x
00:00/00:00
登录|注册

01|各平台下的 Vim 安装方法:上路前准备好你的宝马

吴咏炜 2020-07-20
你好,我是吴咏炜。
今天第一讲,我们先来讨论一下 Vim 在 Linux、macOS、Windows 系统下的安装和配置问题。
Vim 在 Linux 和 macOS 上一般是默认安装的,在 Windows 上不是。不过 Vim 的网站上提供了 Windows 下的安装包,自己安装也很容易。所以,今天的课程我不会手把手、一步步地讲,而是挑选一些重点。对于默认安装的情况,主要讨论的是版本老旧或功能不全的问题。对于其他情况,我则会给出一个基本指引,减少你走弯路的可能性。
好了,下面我们就分各个不同的平台,一一来看。

Linux 下的安装

Red Hat 和 CentOS 系列

在 Red Hat Linux 和 CentOS Linux 上,默认安装的 Vim 可能是一个最小功能的版本。虽然这个版本启动速度很快,但它缺少了很多对开发有用的功能,如语法加亮、Python 集成和图形界面。一般情况下,应至少安装更全功能版本的 Vim;如果能使用 X Window 的话,则应安装图形界面版本。
你可以通过下面的命令来查看已经安装的 Vim 版本:
yum list installed | grep vim
如果输出只有下面这样的内容的话,就说明安装的 Vim 版本只有基本功能:
vim-minimal.x86_64 2:8.0.1763-13.el8 @System
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《Vim 实用技巧必知必会》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(21)

  • 一步
    vim 的配置文件放到 用户目录下 .vimrc 和 放到 .vim 文件夹下的 有什么区别的?

    作者回复: 看不懂你的问题。Vim加载文件是有规则的(:help initialization),不会随意加载 .vim 目录下的文件

    .vimrc 习惯上放用户配置的、可能更改的信息。plugin 目录下的 .vim 脚本是会执行的,放特定(通用)功能相关的代码。

    从电脑的角度,放哪儿只有执行顺序的差别。该放哪里,则是人组织代码的约定。

    2020-07-20
    3
  • 冰糕🍦
    内网环境,有没有离线装插件的好方法?

    作者回复: 很简单的,其他机器上装好,把 pack 下的相关目录复制过去就行。如果没有原生代码,机器平台不一样都没问题。

    2020-07-21
    1
    2
  • 我来也
    我习惯了hhkb的键位后,在别人的电脑上确实会相当不习惯。

    大小写锁定键不推荐更换为ESC,因为Ctrl+[就是ESC键的效果。
    在自定义的组合键中,Ctrl和Leader健是使用非常频繁的。

    也有神人把连按两次大小写锁定键替换为Esc,理论上是可行的,但我没这么干。

    作者回复: 大写锁定键重映射还是可以的,因为熟手应该不需要这个功能吧?我输大写从来是用 Shift 键的……

    2020-07-20
    3
    2
  • oaeen
    请问在 VS Code 下使用 Vim 插件 和直接使用 Vim 比起来怎么样?推荐这种方式吗

    作者回复: 按键差不多,但你就是用 VS Code 的插件而不是 Vim 的插件了。我还是有不少需要使用的 Vim 插件。不过这个就因人而异了。

    2020-07-20
    3
    2
  • 中年男子
    再一次被吴老师折服了,每个问题都耐心的回答了,读吴老师的专栏总是能收获比专栏价值更大东西。

    作者回复: 问答也是专栏的重要价值吧������。毕竟,我写内容的时候,也不能预料到所有大家有问题的地方。

    2020-07-23
    1
  • 我来也
    前天看老师的直播,发现可以用airline在顶部展示buffer信息.
    今天特意花了点时间,弄了一下,发现几乎可以替换之前的`minibufexpl.vim`了.
    (minibufexpl.vim 已经有大几年没人维护了,😭)

    由于我经常开很多buffer,需要在不同的buffer间跳转,所以我都配置了快捷键.
    配置很简单:
    ```
    let g:airline#extensions#tabline#enabled = 1 " 展示顶部的状态栏
    let g:airline#extensions#tabline#buffer_nr_show = 1 " 展示:buffers中的序号 便于通过:buffer number 跳转
    let g:airline#extensions#tabline#buffer_idx_mode = 3 " 展示buffer的序列号<连续递增> 可以通过快捷键快速切换到指定buffer

    " 定义快捷键 空格+数字 跳转到指定序号的buffer
    for i in range(1, 99)
      exe printf('nmap <silent> <Space>%d <Plug>AirlineSelectTab%02d', i, i)
    endfor
    ```

    作者回复: 跳缓冲区为什么要自己定义?数字加Ctrl-^就可以啊。

    2020-07-22
    1
    1
  • 剑米
    通过putty这类工具ssh到服务器,然后通过vim打开文件,使用的vim都是服务器配置的vim,但是由于无法获取sudo权限,导致在home目录下定制自己的vim遇到好多困难,依赖太多的库,最终放弃。老师是否可以提供一个教程,针对无sudo权限在用户目录下安装自己的vim,

    作者回复: 为什么要 sudo?

    配置文件是 ~/.vimrc,配置目录是 ~/.vim,都是你自己的目录下。如果是安装新版,./configure 时加上 --prefix=$HOME,单给你自己安装就行。

    2020-07-21
    1
    1
  • 一步
    Mac 执行 vim --version 会列出 vim 支持的功能 有的前面有 + 有的是 -, 现在想安装某个缺失的功能应该怎么去做的? 比如 要支持 python3(Mac 自带的 vim)

    作者回复: 只能从源代码重新编译,或找别人编译好的。

    Homebrew里的macvim有python3支持的。系统内置的可能没有。

    2020-07-20
    1
  • 一条大老蛇
    将一个窗口vim内的内容复制到另外一个窗口给我造成了很大的困扰。看了各种回答我也没搞懂+寄存器到底怎么用。希望老师能给个解决,让系统剪切板脱离鼠标!

    作者回复: 不同进程的终端Vim?那你脱离不了鼠标。图形界面的Vim一般支持系统剪贴板,终端Vim一般只能在同一进程里分享信息。

    如果你跑Linux桌面的话,可以试试在终端里运行支持图形界面的Vim,一般是编译进剪贴板支持的。

    2020-07-20
    7
    1
  • 闲来
    请问,我的macvim配置和neovim配置光标游走都会出现卡顿现象,如何诊断原因和解决问题?

    作者回复: 先试试无插件运行是不是有问题 vim -u NONE

    如果能解决问题,二分法来逐步引入/去掉你的插件和vimrc中设置,直到找到问题原因。

    2020-07-20
    3
    1
  • TZX
    还可以把 大小写键映射成 control + escape。单独按是 escape,和其他键一起按则是control。这个概念叫 duel-role key。
    2020-07-26
  • helloworld
    “中文帮助文件”部分, 貌似并没有说明安装之后怎么用: 安装后在vim中通过命令行模式`:help`后将看到中文帮助文档.

    作者回复: 那不就行了?😅

    2020-07-24
  • 一秒
    同时使用python,go,shell等多种语言,vim怎样才能更好使用

    作者回复: 都可以。在讲了基础知识后,我会讲编程环境。

    2020-07-24
  • helloworld
    LANG=zh_CN.UTF-8 vimtutor在macos的终端上,这个命令打开的还是英文的呢

    作者回复: 比较奇怪,我无法重现这个问题。

    不过,你可以自己到 /usr/local/opt/macvim/MacVim.app/Contents/Resources/vim/runtime/tutor/ 或 /usr/share/vim/vim80/tutor/ 目录下把 tutor.zh_cn.utf-8 复制到你的目录下打开。

    2020-07-23
    1
  • ghost
    现在不是跟推荐 neovim 吗?

    作者回复: https://www.zhihu.com/question/54663891

    如果只在Linux下用终端Vim,可以用Neovim。图形界面和多平台,还是Vim好。目前Vim也已经补上了功能的短板,我就不需要来增加这个课程的复杂度了。何况Neovim似乎还bug多多,还不完全兼容。

    2020-07-23
  • pyhhou
    老师,按照上面的步骤在 macOS 下用 HomeBrew 安装了 macvim。根据您的建议配置了 zprofile 后,在终端使用 mvim 可以进入到图形界面(有新的窗口弹出,而且可以看到 Mac 下边任务栏有 MacVim 的程序在运行),但是终端会显示下面的错误:

    Error detected while processing /Users/ppeng/.vimrc:
    line 129:
    E319: Sorry, the command is not available in this version: py << EOF
    line 130:
    E1042: import/export can only be used in vim9script
    line 131:
    E1042: import/export can only be used in vim9script
    line 132:
    E15: Invalid expression: 'VIRTUAL_ENV' in os.environ:
    line 227:
    E171: Missing :endif

    如果不用 mvim 而改用 vim 的话,还是会输出上面的错误,但是打开的就是文本界面(没有新的窗口弹出,Mac 任务栏没有 MacVim 在运行)。

    这个报错不知道是不是我配置出了问题?

    作者回复: 把 py 改成 pyx 或 py3 试试?MacVim 默认只支持 Python3。

    2020-07-23
  • 唐龙
    感谢老师的中文帮助文档,对我帮助很大,英文文档真的看不进去。
    之前学习正则有些功能不知道在vim里怎么用,也在文档里找到了,甚至有一些和Perl正则的语法对比。
    今天也重新试着安装了一下YCM,终于成功了,以前试过两次都失败了。
    感觉最近比较顺,期待后续课程。

    作者回复: 感谢提供文档的人,去给他点个星吧。😄

    我发现的觉得特别有用的信息,都会在这个课程里分享给大家。

    2020-07-22
  • Nlife
    工作中,服务器通常是没有装window图形界面的,开发环境也是securityCRT或xshell等方式连接后进行。vim通过源码安装gui支持选项配的是auto,安装后查看版本结果是Huge version without GUI。

    请问老师这个结果是对的吗?

    再请问支持图形界面和不支持图形界面,主要差别在哪些重要的功能呢?能先简单举例一下吗?

    作者回复: 如果你远程连接,那图形界面界面总是没有用的——除非你本机起 X server。

    最主要的区别是图形界面多了字体、图标、按钮、剪贴板等图形界面支持,颜色经常也更好。少量特殊 Vim 功能,如 server,一般也只放图形界面版本里。

    2020-07-22
  • 马祥赛
    我的配置文件保存不能按ZZ退出,我点击了菜单的保存并退出,然后文件保存到了用户目录下,不知道存放位置有没有错?

    作者回复: 如果文件名是 ~\_vimrc、半角全角没搞错的话,不该有问题啊,有点奇怪了。是在你的用户目录下产生了一个 _vimrc 吗?是的话就行。

    2020-07-21
    1
  • YouCompleteMe
    在vimrc里plug(VimPlug)一个插件(a.vim),然后vimrc里unmap该插件的快捷键无效。但是启动后,手动:unmap可以去掉。是因为插件的vim脚本是后于vimrc执行吗~~

    作者回复: 是这样。可以在 :help initialization 看 Vim 的初始化顺序。

    2020-07-21
收起评论
21
返回
顶部