跳转到内容

Vim

25% developed
来自维基教科书,开放世界中的开放书籍
  • $ vim xxx yyy zzz - 打开一个或多个文件
  • (-R: 作为只读打开; +n: 跳到第 n 行; +/xxx: 跳到字符串 xxx;)

vim . - 浏览当前目录

模式

esc - 转到命令模式

i,I,a,A,o,O - 转到插入模式

v,V,Ctrl+v - 转到可视模式

冒号命令

w - 保存

w myfile - 保存为 myfile

q - 退出

r myfile - 在当前文件的游标处粘贴 myfile

e myfile - 编辑 myfile,关闭当前文件

f - 显示文件属性

n - 在参数列表中打开下一个 vi 文件

!xxx - 在 shell 中运行 xxx

!!xxx - 将当前行替换为 shell 命令 xxx 的结果

!}xxx - 将当前段落替换为 shell 命令 xxx 的结果

map - 显示键映射

map key cmd - 将 vi 命令映射到键

. - 显示行号

set nonumber - 关闭行号

s/old/new/ - 搜索和替换

%s/search/&/g - 搜索并计算匹配项

1,$ s/old/new/g - 全局替换

g/^$/d - 删除所有空行

/xxx - 向下搜索 xxx

?xxx - 向上搜索 xxx

搜索命令

/ - 正则表达式搜索

n - 重复上次搜索(查找下一个)

/↑ - 编辑上次搜索

控制命令

Ctrl-b - 上翻页

Ctrl-f - 下翻页

Ctrl-u - 半页上翻

Ctrl-d - 半页下翻

编辑

a - 在游标后追加

A - 在当前行后追加

i - 在游标前插入

r - 替换游标处的字符

~ - 转置游标处文本的大小写

R - 从游标处替换到新文本的末尾

o - 在游标后打开新行

O - 在游标前打开新行

u - 撤销上次操作

Ctrl+R - 重做上次操作

U - 撤销当前行

yy - 复制当前行

nyy - 从当前行复制 n 行

y/string/ 从游标位置复制到字符串的位置,向前搜索

y?string? 从字符串的位置复制到游标,向后搜索

p - 粘贴

ddp - 剪切并粘贴当前行

dd - 删除当前行

dw - 删除当前单词

d$ - 从游标删除到行尾

D - 从游标删除到行尾

cc - 更改当前行

cw - 更改当前单词

c$ - 从游标更改到行尾

C - 从游标更改到行尾

s - 更改当前符号

S - 更改当前行

光标移动

h/j/k/l - 向左/向下/向上/向右移动

w - 按单词向前移动

b - 按单词向后移动

e - 移动到当前单词的末尾

W - 与 w 相同,但仅使用空格作为分隔符

B - 与 b 相同,但仅使用空格作为分隔符

E - 与 e 相同,但仅使用空格作为分隔符

} - 向前移动一个段落

{ - 向后移动一个段落

) - 向前移动一行

( - 向后移动一行

^ - 第一个非空白字符

0 - 当前行的开头

$ - 当前行的末尾

gg - 文件的顶部

G - 文件的底部

ngg - 转到第 n 行

nG - 与 ngg 相同

% - 查找游标中当前括号的匹配项


存储会话

   :mksession

在启动 vim 时加载会话

   $ vim -S Session.vim

在 vim 中加载会话

   :so Session.vim

从命令行重新制表一个或多个文件

   $ vim -c retab -c wq <filename(s)>


Wscript 在 ~/.vimrc 中包含以下几行,避免将文件类型设置为 python

   1 autocmd BufRead,BufNewFile wscript set filetype = python

清除突出显示的搜索词

   :let @/=""

将缩进的代码从另一个应用程序粘贴到 vim 中

   :set paste
   <Terminal paste command>
   :set nopaste

将终端输出重定向到 Vim

   repoquery  -lq *gstreamer* |vim -

写入并退出文件

   Shift + zz

从其他文件读取文本块

   :r! sed -n 12,40p filename

这将从当前文件中的第 12 行到第 40 行粘贴行内容

保存需要 sudo 权限的文件,无需退出文件

   :w !sudo tee %
     You can add following line to your .vimrc to make this trick easy-to-use: just type :w!!.
   cmap w!! %!sudo tee > /dev/null %

自动换行

   set wrap

自动缩进

   Select the block(visual mode) you want to auto indent and just press "=" button.

将文件复制到当前位置

   eg: 44t.

将一行移动到另一个位置

   eg: 4m5

缩进一行

   shift + >>
   shift + <<

删除一个块

   eg: 1,10 d

设置/取消设置行号

   :set nu
   :set nonu

查看/隐藏 vim 中的特殊字符

   :set list
   :set nolist




必须使用 Vim 插件

NERDTree


更有效地打开和编辑您的文件。Nerd Commenter

   Comment or un-comment multiple lines with keys.This plugins detects the file type and apply's the correct comment syntax.It even supports Vim's visual mode.

Taglist


   List and jump to functions quickly.This requires that you have ctags installed .    
华夏公益教科书