在上一篇文章中,我们熟悉了终端模式,并且配置了终端模式的一些操作。但是它总是有那么一点不符合我们的使用习惯。这篇我们将通过强大的插件来完善终端操作的体验。

在介绍插件之前让我们先回退到上一个版本,我们把上一篇文章中的配置全部从配置文件中剔除。先别着急喷我把各位小伙伴带到沟里去了,动态的调整自己的配置是常有的事,例如我发现了某些好用的插件、某些自己的配置可以淘汰一些插件又或者改变操作习惯等等原因都会导致我们修改配置。所以还是事先习惯的好。

toggleterm 插件介绍

在 packer 中我们使用如下语句来进行安装

use {"akinsho/toggleterm.nvim", tag = 'v2.*'}

如果我们用的是 7.0及以上的neovim,可以使用它的 v2版本,否则版本这里应该写上 v1

接着我们还是按照之前的惯例,新增一个配置文件并且在init.lua中引用

local opt = require("toogleterm").setup({})

之后我们可以使用 :ToggleTerm 来打开一个新终端

相关配置

我们可以对它进行一些简单的配置

local opt = require("toggleterm").setup({
open_mapping = [[<c-\>]],
-- 打开新终端后自动进入插入模式
start_in_insert = true
-- 在当前buffer的下方打开新终端
direction = 'horizontal'
})

这里我们使用快捷键 <Ctrl+\> 来打开或者关闭终端。

我们使用 start_in_insert 配置打开新终端后自动进入插入模式,这样就不需要使用自动命令自己干这个事情了。

另外我这里仍然采用它默认的打开方式,默认在下方打开一个新终端,根据个人习惯可以改为弹出式窗口。根据官方文档,还支持 verticalfloattab。相信各位小伙伴从名字上就能知道它们分别代表何种样式。

在之前介绍终端的时候说过,可以使用 <Ctrl+\><Ctrl+n> 来退出终端模式,这里我们仍然对它进行快捷键绑定,仍然使用 来退出终端模式

在退出终端模式之后,我们就可以使用相关快捷键来移动光标到指定窗口了,但是这里我们希望在终端模式中能够移动光标,所以这里还是使用快捷键映射的方式来解决这个问题

vim.api.nvim_set_keymap("t", "<Esc>", "<C-\\><C-n>", {noremap = true, silent = true})
vim.api.nvim_set_keymap("t", "<leader>l", "<Cmd> wincmd l<CR>", {noremap = true, silent = true})
vim.api.nvim_set_keymap("t", "<leader>h", "<Cmd> wincmd h<CR>", {noremap = true, silent = true})
vim.api.nvim_set_keymap("t", "<leader>j", "<Cmd> wincmd j<CR>", {noremap = true, silent = true})
vim.api.nvim_set_keymap("t", "<leader>k", "<Cmd> wincmd k<CR>", {noremap = true, silent = true})

如果我们采取上一节的方案,将 l映射为 <C-> 的话,会先退出终端模式,后续再回来终端的话,还得重新进入终端模式。这里我们希望不改变它的模式的情况下来进行移动操作,那么就只能使用命令模式了。我们之前介绍的执行命令都是以 :开头,但是它只局限于在普通模式下使用。我们在绑定快捷键时对应的真实按键会原封不同的在vim中进行输入,如果在插入模式中使用 :这种形式,就相当于在当前buffer中输入这些内容,也就是说我们无法在插入模式中使用普通模式那种格式的命令。

这里我们引入一个新的指令 它只能用于快捷键映射的场合,表示执行后面对应的命令。在普通模式下它的作用和使用 :相同,但是在vim会将键盘输入作为字符写入buffer的模式下使用 将会直接将这些作为命令。

另外在命令中我们无法再使用像之前在普通模式下使用的那些诸如 之类的移动光标的快捷键,这里我们使用 wincmd l来代替之前快捷键的功能。

自定义终端类型

使用自定义终端可以让我们在某些时候快速打开一些有特定用途的终端,例如 git 命令、htop 命令或者 pythonnode 等的交互式窗口。

这里我们以 pythonhtop 为例来介绍如何自定义这些自己的终端窗口。

为了自定义自己的终端我们需要先获取到 toggleterm插件提供的 Terminal 对象,利用这个对象的 new 方法来创建一个自己的终端。最后在需要弹出或者关闭终端的时候,调用 new 出来的终端对象的 toggle 方法。

new方法接受一个 table作为参数,用于定义新终端的各种属性,下面是几个重要的属性

  • cmd: 在新终端中执行的命令
  • direction: 终端打开的方式,与上面介绍的配置终端的 direction参数相同
  • dir: 执行命令的工作目录
  • env: 该命令使用的环境变量,以键值对的形式给出

了解了这些,我们来定义需要的终端。

local Terminal  = require('toggleterm.terminal').Terminal
local pyterm = Terminal:new({
cmd = 'python',
direction = 'horizontal'
}) function python_toggle()
pyterm:toggle()
end vim.api.nvim_set_keymap("n", "<leader>py", "<Cmd>lua python_toggle()<CR>", {noremap = true, silent = true})

这里我们定义了一个执行 python命令的终端,而且还定义了启动函数,最后定义了一个快捷键在命令行执行这一个启动函数,快速打开这么一个窗口



我们按照这个思路再来定义一个 htop 的窗口

local htopterm = Terminal:new({
cmd = 'htop',
direction = 'float'
}) function htop_toggle()
htopterm:toggle()
end vim.api.nvim_set_keymap("n", "<leader>ht", "<Cmd>lua htop_toggle()<CR>", {noremap = true, silent = true})

到此为止,我们已经配置了一个基本可以使用的终端环境了,但是我还不知道该如何使用它同时打开多个窗口,这应该算是它的一个缺陷吧,如果有这个应用场景可以考虑使用 tmux加入工作流中。

本篇就到此为止了。

从零开始配置vim(19)——终端配置的更多相关文章

  1. 简单快捷好用的vim配置和终端配置推荐

    vim 配置实用spf13-vim,安装方便简单快捷,极力推荐. 另外oh-my-zsh 终端配置很好,与之搭配使用效果更佳. 安装都很简单,一个脚本搞定, 都是在gitHub上开源的,自行搜索,这里 ...

  2. 程序员的 Ubuntu 19.10 配置与优化指南

    原文地址:程序员的 Ubuntu 19.10 配置与优化指南 0x00 环境 CPU: Intel Core i9-9900k GPU: GeForce RTX 2070 SUPER RAM: DDR ...

  3. Mac下终端配置(item2 + oh-my-zsh + solarized配色方案)

    最近重装了系统,于是便重新配置了一下终端,使其更符合用户习惯. 效果如下: 拥有语法高亮,命令行tab补全,自动提示符,显示Git仓库状态等功能. 安装 首先我们下载的 iTem2 这个软件,比Mac ...

  4. Mac 下升级 vim 并自己配置 vim 的过程

    1.升级 vim 我自己 MacBook Pro 的系统还是 10.11 ,其自带的 vim 版本为 7.3 ,我们将其升至最新版: 使用 homebrew : brew install vim -- ...

  5. linux 配置vim(vimrc)

    打开终端:ctrl+alt+t 进入vim文件:cd /etc/vim 打开vimrc文件:sudo gedit vimrc 然后在行末if语句前加上下面的内容,"  这个符号为注释,后面内 ...

  6. Mac终端配置,DIY你的Terminal (iTerm 2 + Oh My Zsh)

    使用mac osx一年以来,自带的Terminal终端一直都是白底黑字,食之无味,越来越缺乏新鲜感,怎么也得想个法子来刺激下眼球. 不然花那么多大洋买你回来是要哪般,难道真是为来学习工作??? 怎么可 ...

  7. vim的简单配置

    本文大部分内容转载自:https://blog.csdn.net/lhy2932226314/article/details/69668891 vim是从 vi 发展出来的一个文本编辑器.功能丰富,在 ...

  8. Centos下Vim编辑器基本配置

    设置 Vim编辑环境 配置 有两种方式: 1,是在/etc/vimrc 进行设置,这种设置方法会作用与所有登录到Linux环境下的用户.不建议使用. 2,在用户登录的 ~ 目录下创建一个 .vimrc ...

  9. 解决配置vim中文乱码的问题

    解决linux下vim乱码的情况:(修改vimrc的内容) 全局的情况下:即所有用户都能用这个配置 文件地址:/etc/vimrc 在文件中添加: set fileencodings=utf-8,uc ...

  10. archlinux 源配置 桌面美化 终端美化 常用软件 grub配置

    简介 本文讲对archlinux进行一些基础系统的配置.常用安装的安装,美化进行配置,先看一下美化后的效果吧 配置pacman和使用AUR(archlinuxcn源) archlinux采用滚动更新的 ...

随机推荐

  1. xTestRunner

    高颜值测试报告-xTestRunner pip install XTestRunner # test_unit.py import unittest from XTestRunner import H ...

  2. MetaGPT day01: MetaGPT作者代码走读、软件公司初始示例

    LLM发展历史 - 2013年word2vec提出,但效果不好 - 2017年Transformer结构提出,降低网络复杂度 - 2018年BERT预训练语言模型效果显著提升 - 2019年GPT-3 ...

  3. 在 macOS 通过 SSH 访问 Windows 的 WSL2 Ubuntu

    配置 Windows 和 WSL2,使得能通过其他电脑远程 SSH 到 WSL2 Ubuntu. 一.Win10 安装 WSL2 Ubuntu 注意,是安装 WSL2,方法参考这个 WSL2 配置 C ...

  4. POJ 1742 Coins(多重背包的可行性问题)

    Description People in Silverland use coins.They have coins of value A1,A2,A3...An Silverland dollar. ...

  5. shell脚本(1)-shell介绍

    一.shell介绍 1.什么是shell shell是c语法编写的,是用户和liunx内核沟通的桥梁,即是命令语法,也是解释性编程语言. 内核处理的都是二进制,而用户处理的都是高级语法,系统开发人员可 ...

  6. Python数据可视化-地图可视化

    Python数据可视化-地图可视化 一.基础地图使用 基础地图演示 二.疫情地图-国内疫情地图 具体代码如下 """ 演示全国疫情可视化地图开发 "" ...

  7. VSCODE中GIT配置

    1.问题:无法正常提交 问题描述 *使用vscode提交就会一直卡住**. 参考方案链接:VS CODE GIT 500 问题处理-pudn.com 根据这位博主的描述,应当是设置的这里选择的默认选项 ...

  8. 在Windows 版的Chrome中切换标签页

    按住Ctrl+tab键之后使用page up/ page down键左右移动!

  9. 【C++】类成员冒号初始化以及构造函数内赋值

    From:https://blog.csdn.net/zj510/article/details/8135556 通常我们对类成员进行"初始化"有两种方式: 1. 构造函数后面跟冒 ...

  10. 神通数据库的varchar和nvarchar的验证

    神通数据库的varchar和nvarchar的验证 登录神通数据库 isql 注意 神通数据库的默认密码是 szoscar55 Welcome to isql 2.0.56 interactive t ...