Cygwin 上的 Vimserver

Cygwin 上的 Vimserver

在此之后问题之后,我发现我可以在 Cygwin 下使用--servername <name>--remote在我的控制台上运行 vim 可执行文件。

所以我安装了vim-common vimgvim,但在 中没有这样的选项/bin/vim。只有 可用/bin/gvim。不幸的是,我不想使用gvim版本vim

我以为问题是 vim 不支持 X。所以我用 从头构建了 Vim ./configure --with-x。这并没有改变任何东西。

如何在 Vim 的控制台版本上使用 vim 服务器?

答案1

确保安装了 libX11-devel 和 libXt-devel。如果您的 cygwin 安装是最新的,则可能必须修补 src/mbyte.c 才能使用 +clientserver 和 +X11 编译 Vim 7.4。

检查 libX11-devel 和 libXt-devel

# vim configure log
#$ grep X_LIB src/auto/config.log
GUI_X_LIBS=''
X_LIB='-lXt -lX11'
X_LIBS=' '

# cygwin
#$ cygcheck.exe -c | grep libX11-devel
libX11-devel                            1.6.3-1                          OK
#$ cygcheck.exe -c | grep libXt-devel
libXt-devel                             1.1.4-2                          OK

应用 Lech Lorens src/mbyte.c 补丁

https://groups.google.com/forum/#!topic/vim_dev/OJjnbKQ7oYU

diff --git a/src/mbyte.c b/src/mbyte.c
 index 6340992..cb14a25 100644
--- a/src/mbyte.c
+++ b/src/mbyte.c
@@ -83,10 +83,18 @@
 # ifndef WIN32_LEAN_AND_MEAN
 #  define WIN32_LEAN_AND_MEAN
 # endif
-# include <windows.h>
+# if defined(FEAT_GUI) || defined(FEAT_XCLIPBOARD)
+#  include <X11/Xwindows.h>
+#  define WINBYTE wBYTE
+# else
+#  include <windows.h>
+#  define WINBYTE BYTE
+# endif
 # ifdef WIN32
 #  undef WIN32     /* Some windows.h define WIN32, we don't want that here. */
 # endif
+#else
+# define WINBYTE BYTE
 #endif

 #if (defined(WIN3264) || defined(WIN32UNIX)) && !defined(__MINGW32__)
@@ -698,7 +706,7 @@ codepage_invalid:
        /* enc_dbcs is set by setting 'fileencoding'.  It becomes a Windows
     * CodePage identifier, which we can pass directly in to Windows
     * API */
-       n = IsDBCSLeadByteEx(enc_dbcs, (BYTE)i) ? 2 : 1;
+       n = IsDBCSLeadByteEx(enc_dbcs, (WINBYTE)i) ? 2 : 1;
 #else
 # if defined(MACOS) || defined(__amigaos4__)
    /*

编译 Vim 7.4 +客户端服务器 +X11

#$./configure --with-x
#$ make
#$ ./src/vim.exe --version
VIM - Vi IMproved 7.4 

Normal version without GUI.  Features included (+) or not (-):

+clientserver    -hangul_input    +netbeans_intg   +title

+digraphs        +mksession       +scrollbind      +X11

#$ ./src/vim.exe --serverlist
TEST

答案2

假设您有一个正确编译的 Vim 实例,则必须运行 cygwin X 服务器。我已将其设置为在登录 Windows 计算机时启动,命令行如下:

C:\cygwin64\bin\XWin.exe -multiwindow

然后我确保在我的~/.bash_profile:中设置了 DISPLAY:

DISPLAY=:0.0; export DISPLAY

这有一个额外的好处,我可以使用 cygwin 的 gVim,尽管我倾向于使用本机的 Windows gVim 实例。

相关内容