【NeoVim+Markdown】全屏vim快捷键自动分屏打开markdown预览

您所在的位置:网站首页 vim写markdown 【NeoVim+Markdown】全屏vim快捷键自动分屏打开markdown预览

【NeoVim+Markdown】全屏vim快捷键自动分屏打开markdown预览

2024-06-02 23:33| 来源: 网络整理| 查看: 265

update:测试发现有一点点bug,对applescript做了一点修改,请使用上一个版本的读者更新一下。

精简版

知道我在做什么的可以直接查看Markdown-Preview.nvim里我的回复:github链接

环境 macosiTermneovim(lazyvim) 工作流

想打通vim+markdown甚至+obsidian的工作流。 想用vim编写markdown,git做版本管理,obsidian做浏览和多平台同步。 本文聚焦的是第一步:vim编写markdown并预览,后续如果有必要会更新后面的工作流比较麻烦的部分。

插件

vim的markdown preview插件:Markdown-Preview 按照readme的方法安装就好,如果和我一样是lazyvim用户,插件安装步骤如下:

在~/.config/nvim/lua/plugins文件夹下面新建一个markdown-preview.lua,内容如下: return { "iamcco/markdown-preview.nvim", cmd = { "MarkdownPreviewToggle", "MarkdownPreview", "MarkdownPreviewStop" }, ft = { "markdown" }, build = function() vim.fn["mkdp#util#install"]() end, lazy = true; } 退出nvim,重新打开,vim会自动安装使用: 在normal模式下有三个命令: :MarkdownPrevew:MarkdownPreviewStop:MarkdownPreviewToggle 具体什么作用本文就不解释了,查看github就可以。最常用的就是第一个命令了:打开一个浏览器页面查看md文件的预览。 vim+chrome自动分屏预览markdown

上面插件很好,用magnet手动调整一下分屏就可以了,但是我最近被vim惯坏了,什么都不想用鼠标,能自动化最好,于是出现了本篇文章。 其实最好的方式是使用yabai等窗口管理工具来做分屏管理,但是个人觉得窗口平铺的需求在我这里不是那么大,还要关闭SIP,不是很想弄。 所以最终使用的方案是写一个applescript来自动分屏窗口,在nvim中绑定一个快捷键,完成以下操作:

首先调用自动分屏的script,左边iterm(nvim),右边新建一个chrome窗口。然后在vim编辑器里输入插件命令 :MarkdownPreview,就可以在新开的chrome窗口里打开预览了。 最终效果

先把最终的效果放上来: 在md文件敲预览快捷键(我的是mp)之后自动分屏并预览 请添加图片描述

Steps 创建一个applescript文件,随便放在哪里。 我的文件名叫:mkdp_windowSplit.applescript 放在:~/.config/nvim/scripts/里面 内容如下: set Height to 1120 -- 这个地方改为你屏幕的高度 set Width to 1792 -- 改为屏幕的宽度 set bar to 24 -- 苹果顶部导航栏的高度 set halfHeight to Height / 2 set halfWidth to Width / 2 -- 检查应用是否在全屏状态 tell application "iTerm" to set screenSize to bounds of front window set rightX to item 3 of screenSize if rightX is equal to Width then -- 关闭iTerm的全屏状态 tell application "System Events" tell process "iTerm2" click (first menu item whose name is "Toggle Full Screen") of menu "View" of menu bar 1 end tell end tell delay(0.5) end if -- 打开Chrome并放置在右侧 tell application "Google Chrome" -- 也可以是"firefox"等等浏览器 make new window -- 创建新窗口来打开preview set the bounds of the first window to {halfWidth, bar, Width, Height} end tell -- 调整iTerm大小并放置到左侧 tell application "iTerm" activate set the bounds of the first window to {0, bar, halfWidth, Height} delay(0.5) end tell

注意:上面的延时函数都是经过测试之后添加的,最好不要删除。因为程序执行打开、最小化等操作需要时间,如果在上一个操作还没有完成就执行下一条自动化命令,可能会出现奇怪的bug。 如果还是有奇怪的bug比如窗口开在别的桌面啥的,可以适当增加一下延时的时间。

针对自己的电脑按照注释修改上面的参数 如果会写applescript的话,也可以以我的代码为蓝本修改为自己想要的效果。

nvim设置快捷键 我用的是lazyvim,快捷键设置的文件为:~/.config/nvim/lua/config/keymaps.lua,如果用的是其他版本的vim,修改哪里根据自己的情况来定哈。 neovim可以用lua来修改配置,下面就是用lua写的,如果是vim,要修改成vim的语法,具体怎么修改请google/gpt。 修改keymaps.lua文件,添加下面一行: vim.keymap.set("n", "mp", ":silent !osascript /absolute/path/to/file.applescript:MarkdownPreview", { desc = "markdown preview", remap = true, silent = true}) 上面第二个参数是设置的快捷键,按照自己的喜好设置。其中地址也要改一下,改成到第一步写的applescript的绝对地址。必须是绝对地址,因为调用这个脚本的md文件有不一样的地址,如果用相对地址会找不到文件位置。

配置就已经完成了,不管iterm是不是全屏都可以正常分屏,满足了我自己的需求。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3