有没有办法在不退出编辑器的情况下将postgresql中外部编辑器的内容传输到查询缓冲区?
Is there any way to transfer the content of an external editor in postgresql to query buffer without quitting the editor?
我的环境:
OS: Linux CentOS 7 (x86_64)
PostgreSQL version: 10.5
Emacs 26.1
我在 postgresql 中使用 Emacs 作为外部编辑器(在我的 EDITOR
环境变量中设置)。因此,每当我输入 psql shell、\e
时,它都会打开 Emacs,我可以在其中 write/modify 查询、视图、函数等
如果我没有理解错的话,一旦打开Emacs,当我输入C-x C-s
,也就是我保存然后退出C-x C-c
,Emacs中编辑的内容被转移到查询缓冲区被解析和执行(假设它最后包含分号)。所以基本上每次我都必须 运行 \e
然后编辑,然后保存并退出编辑器以完成工作。
现在,考虑到我将 Emacs 用于多种编程语言,我有一个很大的初始化文件。因此,启动 Emacs 需要几秒钟的时间(在 -nw
和 GUI 模式下)。显然,考虑到我在 psql 中使用 \e
时必须打开和退出编辑器的次数,这很烦人。
所以我的问题是:有没有办法让外部编辑器保持打开状态并继续使用同一编辑器进行进一步查询,并以某种方式决定将结果传输到查询缓冲区而不需要退出编辑器?
只需将查询保存到一个临时文件,例如 /tmp/q.sql
和 运行 \i /tmp/q.sql
来自第二个终端的 psql 多次。
运行 emacsclient
而不是 emacs
。我在 ~/bin/editor
:
有一个脚本
#!/bin/sh
exec emacsclient -c -a '' "$@"
然后我在 ~/.bashrc
中设置 export EDITOR=$HOME/bin/editor
。
结果是您只启动 Emacs 一次,并且每次您 运行 $EDITOR
,它只是附加到同一个 Emacs 会话。
另外,我
(global-set-key (kbd "C-x C-c") #'delete-frame)
(global-set-key (kbd "C-x C-S-c") #'save-buffers-kill-emacs)
所以 C-x C-c
只是删除框架而不是杀死 Emacs。
我的环境:
OS: Linux CentOS 7 (x86_64)
PostgreSQL version: 10.5
Emacs 26.1
我在 postgresql 中使用 Emacs 作为外部编辑器(在我的 EDITOR
环境变量中设置)。因此,每当我输入 psql shell、\e
时,它都会打开 Emacs,我可以在其中 write/modify 查询、视图、函数等
如果我没有理解错的话,一旦打开Emacs,当我输入C-x C-s
,也就是我保存然后退出C-x C-c
,Emacs中编辑的内容被转移到查询缓冲区被解析和执行(假设它最后包含分号)。所以基本上每次我都必须 运行 \e
然后编辑,然后保存并退出编辑器以完成工作。
现在,考虑到我将 Emacs 用于多种编程语言,我有一个很大的初始化文件。因此,启动 Emacs 需要几秒钟的时间(在 -nw
和 GUI 模式下)。显然,考虑到我在 psql 中使用 \e
时必须打开和退出编辑器的次数,这很烦人。
所以我的问题是:有没有办法让外部编辑器保持打开状态并继续使用同一编辑器进行进一步查询,并以某种方式决定将结果传输到查询缓冲区而不需要退出编辑器?
只需将查询保存到一个临时文件,例如 /tmp/q.sql
和 运行 \i /tmp/q.sql
来自第二个终端的 psql 多次。
运行 emacsclient
而不是 emacs
。我在 ~/bin/editor
:
#!/bin/sh
exec emacsclient -c -a '' "$@"
然后我在 ~/.bashrc
中设置 export EDITOR=$HOME/bin/editor
。
结果是您只启动 Emacs 一次,并且每次您 运行 $EDITOR
,它只是附加到同一个 Emacs 会话。
另外,我
(global-set-key (kbd "C-x C-c") #'delete-frame)
(global-set-key (kbd "C-x C-S-c") #'save-buffers-kill-emacs)
所以 C-x C-c
只是删除框架而不是杀死 Emacs。