跳到主要内容

2 篇博文 含有标签「Vim」

查看所有标签

把「终端下的 Vim」作为 macOS Finder 的打开方式

· 阅读需 2 分钟
Hux

我的日常主力编辑器主要是:

  • (Neo)Vim
  • Spacemacs (via Emacs-plus)
  • Visual Studio Code
  • IntelliJ IDEA

这里面只有 (Neo)Vim 是存活在终端中的(我并不在终端内使用 Emacs),而由于我日常主要是从终端(via iTerm)来使用电脑,所以会把他们都加入到 $PATH 里以方便从终端中唤起,VSCode 和 IDEA 都有一键加入的功能, Emacs 我在 ~/.zshrc 中放了一个 alias emacs='open -n -a Emacs.app .' 解决。

但是,偶尔也会有从 Finder 中打开文件的需求,这时候如果通常会打开拓展名所绑定的 Open with... 应用,在大部分时候我的默认绑定是 VSCode,但是今天心血来潮觉得有没有办法直接打开 Vim 呢?搜了一下还真有基于 AppleScript 的解决方案:

  1. 打开 Automator.app
  2. 选择 New Document
  3. 找到 Run AppleScript 的 action 双击添加
  4. 编写 AppleScript 脚本来唤起终端与 vim (下文给出了我的脚本你可以直接稍作修改使用)
  5. 保存为 Applications/iTermVim.app (你可以自己随便取)
  6. 找到你想要以这种方式打开的文件,比如 <随便>.markdown⌘ i 获取信息然后修改 Open with 为这个应用然后 Change All...

效果超爽 ;)

on run {input, parameters}
set filename to POSIX path of input
set cmd to "clear; cd `dirname " & filename & "`;vim " & quote & filename & quote
tell application "iTerm"
activate
tell the current window
create tab with default profile
tell the current session
write text cmd
end tell
end tell
end tell
end run

我这里的代码是采取是用 iTerm 与唤起 vim、窗口置前、在新窗口中打开、同时 cd 到目录。你也可以改成用 macOS 自带的 Terminal.app、在新窗口而非新 tab 打开、应用不同的 profile、或是执行其他 executable 等……任你发挥啦。

References

Vim 与中文输入法

· 阅读需 3 分钟
Hux

Update: 我最后还是放弃把 Vim 作为主要编辑器来输入中文了,整体使用下来 mental model 的 cost 太重了。记笔记时用用中文呀或者改改博客时偶尔用一下还蛮去,这个时候这个功能至少能帮助你 Esc 之后不煞笔,所以也不算完全没有价值吧……


我相信很多中文世界的 Vimer 都遇到过这个烦恼,在 vim 的 insert 模式时可能突然想输个中文,输完之后会本能的直接 esc 接 normal 模式操作,结果发现跳出来的是中文输入法……对于 vscode,我一般会在几次错误之后被逼到退出 vscode vim 模式,而对于终端中用的 neovim,就只能尽量不输入中文了。

为了满足我 1% 用 vim 输入中文的场景(比如写博客),我还是想看看有没有什么解决方案,Google 出来的解决方案基本是:在退出 insert 模式时记住当时的输入法,并自动切换到默认输入法(一般是英文)给 normal 模式用,并且在下一次进入 insert 模式时再切换回来。

原生 vim 的话,可以使用 smartim 插件,原理是调用 im-select 这个 CLI 工具来切换输入法。

对于 VSCode-vim 的话,smartim 的移植也在近期的 PR 中被 merge 到了插件里,详情见文档的这部分配置,需要指定一下默认输入法和 im-select 的 binary 路径就好。


 不过实话说,在 vim 中编辑中文的效率和体验和英文比都是大打折扣的。因为中文分词难度太高,不像英文可以简单依靠一个 split " " 搞定。所以其实无论 vim(word,begin,end),emacs 还是操作系统自带的(比如 macOS 中的 alt + 箭头) 「按词移动」功能对于中文都仅仅是跳转到下一个空格处而已,对于中文来说基本就是下一句了……其他常用操作诸如 f/, replace, till 也都无法很好的工作,基本只能靠 hjkl 爬行……

不过也算聊胜于无吧,由于我的主力外置键盘是 HHKB,能用 vim 操作的一个子集(hjkl, o, A, I, v etc.)可能也比按住 Fn 的方向键好用……