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

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


当前回答

由于延迟和缺少颜色(我喜欢颜色方案:),我不喜欢在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错误列表中。

其他回答

这些是我多年来收集的。

" Pasting in normal mode should append to the right of cursor
nmap <C-V>      a<C-V><ESC>
" Saving
imap <C-S>      <C-o>:up<CR>
nmap <C-S>      :up<CR>
" Insert mode control delete
imap <C-Backspace> <C-W>
imap <C-Delete> <C-O>dw
nmap    <Leader>o       o<ESC>k
nmap    <Leader>O       O<ESC>j
" tired of my typo
nmap :W     :w

重新使用

与其他命令混合的动作,此处更多。

tx
fx
Fx

在Vim中使用您喜爱的工具。

:r !python anything you want or awk or Y something

在视觉模式下重复,结合上面的提示,效果很好。

;
In Insert mode 
<C-A>   - Increments the number under cursor 
<C-X>   - Decrements the number under cursor

如果我们想在vim中生成序列号,这将非常有用假设我们想插入1-10行,数字从1到10[如第1行的“1”,第2行的“2”…]在第一行插入“0”并复制该行和过去的9次因此,所有行都将显示“0”。

运行以下Ex命令

:g/^/exe "norm " . line(".") . "\<C-A>"

也许99%的Vim用户都不知道,但这是我每天使用的东西,任何Linux+Vim超级用户都必须知道。

基本命令,但非常有用。

:w !sudo tee %

我经常在编辑一个我没有写权限的文件之前忘记sudo。当我保存该文件时遇到权限错误时,我只需发出vim命令即可保存该文件,而无需将其保存到临时文件,然后再将其复制回来。

显然,您必须在安装了sudo的系统上,并且具有sudo权限。

宏可以调用其他宏,也可以调用自身。

eg:

qq0dwj@qq@q

…将删除每行中的第一个单词,直到文件结束。

这是一个非常简单的示例,但它展示了vim的一个非常强大的功能