首页 > 其他分享 >从零开始配置vim(19)——终端配置

从零开始配置vim(19)——终端配置

时间:2022-08-31 11:03:08浏览次数:72  
标签:19 配置 模式 快捷键 终端 使用 vim true

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

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

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加入工作流中。

本篇就到此为止了。

标签:19,配置,模式,快捷键,终端,使用,vim,true
From: https://www.cnblogs.com/lanuage/p/16642249.html

相关文章

  • winio的配置
    这两天一直在做winio的配置,现在简单的记录一下winio的作用:window对底层硬件有保护,一般IDE不能直接访问,但是winio能使电脑IDE直接对硬件进行访问,写入等(个人理解,不喜勿喷)wi......
  • 项目实用-logback.xml配置-sql和异常在不同的文件中
    <configuration><!--本文主要输出日志为控制台日志,系统日志,sql日志,异常日志--><!--%m输出的信息,%p日志级别,%t线程名,%d日期,%c类的全名,,,,--><!--控制台-......
  • 09 | 阿里云服务器从0配置django环境
    首先要租一台阿里云服务器,注意操作系统为centos7.说一个坑!!如果是ubuntu那么可能会造成有些python的版本不可以安装。配置服务器yumupdateyuminstall-ycr......
  • docker配置远程访问
    DockerDaemon默认情况下是只允许本地访问的,不允许远程访问。本文将首先介绍DockerDaemon的连接方式,然后说明如何配置远程访问。即实现通过本地docker客户端访问远......
  • ERROR server: 192.168.1.22:22122, response status 28 != 0以及2 != 0
    背景介绍:fdstdfs部署好以后进行测试,然后突然报错,记录一下本次的问题报错信息如下:   原因:经查找28!=0的问题应该是物理内存不够的原因,如下图,我的系统部......
  • hadoop配置的几个小问题
    1.ssh免密登陆配置也要给本机进行配置,否则后续会出现问题。2.hadoop配置文件中需要看好value值的最后不能有空格。在hdfs-site.xml中,登陆网址是否自己进行了配置。 ......
  • 关于ASEJ1939的解析
    项目要用到ASEJ1939的协议,看了很多网上的博客,发现没有特别详细的,有些写的我都看不懂,理论一大堆。硬着头皮粗粗学了一下,大致摸出了点门道,就此记录一下,以免以后用忘记了。先......
  • springboot mysql 的赖配置
    1、报错点  ##mysqlspring.datasource.driver-class-name=com.mysql.cj.jdbc.Driverspring.datasource.url=jdbc:mysql://127.0.01:3307/distributed-lock-test?......
  • Linux快速入门(七)效率工具(Vim)
    Vim编辑器所有的Linux系统都会内建一个Vi文本编辑器,而Vim是从Vi发展出来的一个高度可配置的文本编辑器,旨在高效的创建和更改任何类型的文本,它还可以根据文件的扩展名判别......
  • 小狼毫输入法导入搜狗词库方法以及其他配置文件
    default.custom.yaml文件的修改"C:\Users\xxx\AppData\Roaming\Rime\default.custom.yaml"文件名:default.custom.yamlcustomization:distribution_code_name:Weas......