人们谈论常见技巧的问题很多,特别是“Vim+ctags提示和技巧”。

然而,我并没有提到Vim新手会觉得很酷的常用快捷方式。我所说的是一位经验丰富的Unix用户(无论是开发人员、管理员,还是两者都有),他们认为自己知道99%的人从未听说过或梦想过的东西。这不仅让他们的工作更容易,而且很酷,很粗糙。毕竟,Vim位于世界上最黑暗的角落丰富的操作系统中,因此它应该具有只有少数特权人士知道并想与我们分享的复杂性。


当前回答

当我在项目中工作时,我经常使用许多窗口,有时我需要调整它们的大小。以下是我使用的:

map + <C-W>+
map - <C-W>-

这些映射允许增加和减少当前窗口的大小。这很简单,但很快。

其他回答

由于延迟和缺少颜色(我喜欢颜色方案:),我不喜欢在PuTTY的远程机器上编程。所以我开发了这个技巧来解决这个问题。我在Windows上使用它。

你需要

1次gVim远程和本地计算机上的1x rsync1x SSH私钥身份验证到远程计算机,因此您不需要键入密码1x寻呼机1个PuTTY

设置远程计算机

配置rsync以使您的工作目录可访问。我使用SSH隧道,只允许来自该隧道的连接:

address = 127.0.0.1
hosts allow = 127.0.0.1
port = 40000
use chroot = false
[bledge_ce]
    path = /home/xplasil/divine/bledge_ce
    read only = false

然后启动rsyncd:rsync--daemon--config=rsyncd.conf

设置本地计算机

从Cygwin安装rsync。启动Pageant并加载远程计算机的私钥。如果您正在使用SSH调谐,请启动PuTTY来创建隧道。在工作目录中创建一个批处理文件push.bat,它将使用rsync将更改的文件上载到远程计算机:

rsync --blocking-io *.cc *.h SConstruct rsync://localhost:40001/bledge_ce

SConstruct是scons的构建文件。修改文件列表以满足您的需要。如果不使用SSH调谐,请将localhost替换为远程计算机的名称。

配置Vim这现在很容易。我们将使用快速修复功能(:make and error list),但编译将在远程计算机上运行。所以我们需要设置makeprg:

set makeprg=push\ &&\ plink\ -batch\ xplasil@anna.fi.muni.cz\ \"cd\ /home/xplasil/divine/bledge_ce\ &&\ scons\ -j\ 2\"

这将首先启动push.bat任务以上载文件,然后使用SSH(来自PuTTY套件的Plink)在远程计算机上执行命令。该命令首先将目录更改为工作目录,然后启动构建(我使用scons)。

构建结果将方便地显示在本地gVim错误列表中。

我很少在大多数Vim教程中找到一个,但它非常有用(至少对我来说),那就是

g;和g,

在变更列表中移动(向前、向后)。

让我来演示一下我是如何使用它的。有时我需要复制并粘贴一段代码或字符串,比如CSS文件中的十六进制颜色代码,所以我搜索、跳转(不在乎匹配的位置)、复制它,然后跳回(g;)编辑代码的位置以最终粘贴它。不需要创建标记。更简单。

只是我的20美分。

能够在基于客户端/服务器的模式下运行Vim。

例如,假设您正在处理一个项目,其中有大量缓冲区、选项卡和其他信息保存在名为session.vim的会话文件中。

通过发出以下命令,可以打开会话并创建服务器:

vim --servername SAMPLESERVER -S session.vim

请注意,如果要创建服务器,可以打开常规文本文件,而不一定是会话。

现在,假设您在另一个终端中,需要打开另一个文件。如果您通过以下方式定期打开:

vim new_file.txt

您的文件将在单独的Vim缓冲区中打开,这很难与会话中的文件进行交互。要在服务器上的新选项卡中打开new_file.txt,请使用以下命令:

vim --servername SAMPLESERVER --remote-tab-silent new_file.txt

如果没有服务器正在运行,则将像打开常规文件一样打开此文件。

由于每次您想运行这些标志时都提供这些标志是非常乏味的,因此您可以创建一个单独的别名来创建客户端和服务器。

我在bashrc文件中放置了以下内容:

alias vims='vim --servername SAMPLESERVER'
alias vimc='vim --servername SAMPLESERVER --remote-tab-silent'

您可以在以下位置找到有关此的更多信息:http://vimdoc.sourceforge.net/htmldoc/remote.html

当我在项目中工作时,我经常使用许多窗口,有时我需要调整它们的大小。以下是我使用的:

map + <C-W>+
map - <C-W>-

这些映射允许增加和减少当前窗口的大小。这很简单,但很快。

在复制和粘贴到stackoverflow之前:

:retab 1
:% s/^I/ /g
:% s/^/    /

现在复制并粘贴代码。

根据意见要求:

表1。这会将选项卡大小设置为1。但它也会遍历代码并添加额外的制表符和空格,以便格式化不会移动任何实际文本(即文本在ratab之后看起来相同)。

%s/^I//g:请注意,^I是单击制表符的结果。这将搜索所有制表符并用一个空格替换它们。由于我们刚刚进行了重新标记,这不应导致格式更改,但由于将标签放入网站是一触即发的,因此最好将其删除。

%s/^//:用四个空格替换行首。由于实际上不能用任何东西替换行的开头,所以它在行的开头插入四个空格(SO格式需要这样做才能使代码突出)。