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

文章介绍了如何使用Applescript在Vim中自动化预览Markdown文件,通过Markdown-Preview插件配合lazyvim,实现分屏功能,并设置快捷键mp触发分屏预览。作者还分享了如何编写和配置Applescript脚本以及在lazyvim中的快捷键设置。
摘要由CSDN通过智能技术生成

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

精简版

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

环境

  • macos
  • iTerm
  • neovim(lazyvim)

工作流

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

插件

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

  1. 在~/.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;
}
  1. 退出nvim,重新打开,vim会自动安装
  2. 使用:
    在normal模式下有三个命令:
    • :MarkdownPrevew
    • :MarkdownPreviewStop
    • :MarkdownPreviewToggle
      具体什么作用本文就不解释了,查看github就可以。最常用的就是第一个命令了:打开一个浏览器页面查看md文件的预览。

vim+chrome自动分屏预览markdown

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

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

最终效果

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

Steps

  1. 创建一个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的话,也可以以我的代码为蓝本修改为自己想要的效果。

  1. nvim设置快捷键
    我用的是lazyvim,快捷键设置的文件为:~/.config/nvim/lua/config/keymaps.lua,如果用的是其他版本的vim,修改哪里根据自己的情况来定哈。
    neovim可以用lua来修改配置,下面就是用lua写的,如果是vim,要修改成vim的语法,具体怎么修改请google/gpt。
    修改keymaps.lua文件,添加下面一行:
vim.keymap.set("n", "<leader>mp", ":silent !osascript /absolute/path/to/file.applescript<cr>:MarkdownPreview<cr>", { desc = "markdown preview", remap = true, silent = true})

  1. 上面第二个参数是设置的快捷键,按照自己的喜好设置。
  2. 其中地址也要改一下,改成到第一步写的applescript的绝对地址。必须是绝对地址,因为调用这个脚本的md文件有不一样的地址,如果用相对地址会找不到文件位置。

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

  • 21
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值