人们谈论常见技巧的问题很多,特别是“Vim+ctags提示和技巧”。
然而,我并没有提到Vim新手会觉得很酷的常用快捷方式。我所说的是一位经验丰富的Unix用户(无论是开发人员、管理员,还是两者都有),他们认为自己知道99%的人从未听说过或梦想过的东西。这不仅让他们的工作更容易,而且很酷,很粗糙。毕竟,Vim位于世界上最黑暗的角落丰富的操作系统中,因此它应该具有只有少数特权人士知道并想与我们分享的复杂性。
人们谈论常见技巧的问题很多,特别是“Vim+ctags提示和技巧”。
然而,我并没有提到Vim新手会觉得很酷的常用快捷方式。我所说的是一位经验丰富的Unix用户(无论是开发人员、管理员,还是两者都有),他们认为自己知道99%的人从未听说过或梦想过的东西。这不仅让他们的工作更容易,而且很酷,很粗糙。毕竟,Vim位于世界上最黑暗的角落丰富的操作系统中,因此它应该具有只有少数特权人士知道并想与我们分享的复杂性。
当前回答
:%!xxd
将vim制作成十六进制编辑器。
:%!xxd -r
还原
警告:如果不使用二进制(-b)进行编辑,可能会损坏文件。–Josh Lee在评论中写道。
其他回答
^O和^I
转到较旧/较新的位置。当您在文件中移动时(通过搜索、移动命令等),vim会记住这些“跳跃”,这样您就可以向后(^O-O表示旧的)和向前(^I-就在键盘上的I旁边)重复这些跳跃。我发现它在编写代码和执行大量搜索时非常有用。
gi
转到上次停止插入模式的位置。我发现自己经常编辑然后搜索一些东西。要返回编辑位置,请按gi。
gf
将光标放在文件名上(例如包含头文件),按gf,文件打开
gF
类似于gf,但识别格式“[文件名]:[行号]”。按gF将打开[文件名]并将光标设置为[行号]。
^P和^N
编辑时自动完成文本(^P-上一匹配项和^N下一匹配项)
^X^L
当编辑完成到同一行时(对编程有用)。您编写代码,然后回想文件中的某个位置有相同的代码。只需按^X^L,即可完成整行
^X^F
完整的文件名。你写了“/etc/pass”嗯,你忘了文件名。只需按^X^F,文件名就完成了
^Z或:sh
将临时文件移动到外壳。如果您需要快速抨击:
按^Z(将vi放在背景中)返回原始shell,按fg返回vim back按:sh转到子shell,按^D/exit返回vi
:%!xxd
将vim制作成十六进制编辑器。
:%!xxd -r
还原
警告:如果不使用二进制(-b)进行编辑,可能会损坏文件。–Josh Lee在评论中写道。
我确信有人已经发布了这篇文章,但这里是这样的。
请选择任何构建系统;制造,mvn,蚂蚁,随便什么。在项目目录的根目录中,创建一个始终使用的命令文件,如下所示:
根项目上进行构建mvn清洁安装等等
要进行构建,请将光标放在线上并键入!!即过滤该线路;将其写入shell并替换为结果。
构建日志将替换行,随时可以滚动、搜索等。
查看完日志后,键入u以撤消,然后返回命令文件。
使用鼠标右键切换gVim中的插入模式,设置如下在~/.gvimrc中:
"
"------------------------------------------------------------------
" toggle insert mode <--> 'normal mode with the <RightMouse>-key
"------------------------------------------------------------------
nnoremap <RightMouse> <Insert>
inoremap <RightMouse> <ESC>
"
我的一些必备品是:
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"^[
此映射将使_引用一个字符串