0

When working with Latex files, I use Vim to edit the tex file and Okular to view the corresponding pdf. I have pdf-to-tex search (which requires running Vim as a server, and compiling the tex file with Synctex) configured by making vim --remote +%l %f my custom editor command in Okular (Settings 🡢 Configure Okular 🡢 Editor 🡢 Command). This works, but it does not focus Vim, and I remain in Okular.

I would like to focus Vim when I do this search, so I can immediately start editing the tex file. How can I achieve this?

Note: This question is basically the same as this question, except I am using Vim, not gVim. And the only answer posted to that question does not work with Vim.

1 Answer 1

0

One option is to use xdotool, which is a command-line tool that can interact with windows.

step 1: save Vim's window ID to a file

Run this Vim command after Vim is started as a server:

:call system('xdotool getactivewindow > /tmp/vim_wid.txt')

Explanation: The shell command xdotool getactivewindow will output the active window ID, and the command xdotool getactivewindow > /tmp/vim_wid.txt will save that window ID to the file /tmp/vim_wid.txt (as an example).

step 2: use an xdotool command after your vim --remote-silent command to focus the Vim window

You can set your custom Okular editor command (Settings 🡢 Configure Okular 🡢 Editor 🡢 Command) to be this:

/bin/sh -c "vim --remote +%l %f && cat /tmp/vim_wid.txt | xargs xdotool windowactivate"

Explanation: The shell command xdotool windowactive window_ID will activate the window with ID window_ID. So, if you want to activate the Vim window, you can pipe the window ID from /tmp/vim_wid.txt into that command with cat /tmp/vim_wid.txt | xargs xdotool windowactivate. The /bin/sh -c "command" formatting is necessary for the command to be interpreted correctly.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .