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

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


当前回答

为了将文本从Vim复制到剪贴板供其他应用程序使用,请选择要在视觉模式下复制的文本,然后按“+y”。这样,您可以轻松地将文本粘贴到其他应用程序。

如果您垂直拆分了窗口,并且希望从右侧窗口复制某些内容,则这特别有用。使用set mouse=r不会帮助您解决这种情况,因为它也会选择左侧窗口中的所有内容。

注意,必须使用xterm支持编译vim。

其他回答

" insert range ip's
"
"          ( O O )
" =======oOO=(_)==OOo======

:for i in range(1,255) | .put='10.0.0.'.i | endfor

这些是我多年来收集的。

" 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

一些有用的:

:set nu # displays lines
:44     # go to line 44
'.      # go to last modification line

我最喜欢的:Ctrl+n单词完成!

我想在after目录中安排一些我自己的配置文件。它对ftplugin特别有用。

您可以避免在.vimrc文件中编写一长串augroup,而不是为每种类型编写单独的文件。

但是,很明显,.vim/ftplugin目录与.vim/after/ftplugin目录的作用相同,但我更愿意将.vim目录留给vim插件。

我的一些必备品是:

cscope+ctags+vim,可以在网上找到。

一些用于快速启动新代码文件的缩写,例如:

ab cpph #include <iostream><CR>#include <string><CR>#include <cstdlib><CR>#include <cassert><CR>#include <vector><CR>#include <
stdexcept><CR>using namespace std;<CR>int main(int argc, char *argv[]) {
ab perlh #!/usr/bin/perl<CR>use strict;<CR>use warnings;<CR>
ab chdr #include <stdio.h><CR>#include <sys/types.h><CR>#include <unistd.h><CR>#include <stdlib.h><CR>#include <sys/stat.h><CR>
#include <sys/wait.h><CR>#include <string.h><CR>int main(int argc, char *argv[]) {
ab xhtmlhdr <?xml version="1.0" encoding="UTF-8"?><CR><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.o
rg/TR/xhtml1/DTD/xhtml1-strict.dtd"><CR><html xmlns="http://www.w3.org/1999/xhtml"><CR>  <head><CR>  <title></title><CR><link h
ref="style.css" rel="STYLESHEET" type="text/css"><CR></head>

例如,cpph将插入main.cc文件的基本框架

还有我的功能键映射:

map <F1> <Esc>:w<CR>:perl $e = `./error.pl`; my ($f,$l,@w) = split(":",$e); my $w=join(":",@w); $curwin->Cursor($l,0); VIM::Msg($w);<CR>
map <F2> :wincmd w<CR>
map <F3> :wincmd s<CR>
map <F4> :wincmd v<CR>
map <F5> :wincmd o<CR>
map <F6> :sball<CR>
map <F7> :wq<CR>
map <F8> :wincmd q<CR>
map <F9> :wincmd -<CR>
map <F10> :wincmd +<CR>
map <F11> :wincmd <<CR>
map <F12> :wincmd ><CR>

在这种情况下,我的F1被映射为将光标放在下一个需要进行源代码迁移的错误上。

map _ ebi"^[ea"^[

此映射将使_引用一个字符串