首页 > > > Vim实践与学习-03文件
这里包含在 `shell` 下执行 `vim`,以及 `vim` 中关于文件操作的内容。
# 打开一个文件 `file` 进行编辑等操作
$vi file
# 打开文件,并将光标置于第 `n` 行首
$vi +n filename
这里输入得都是 `shell` 下进行得,是 `shell` 命令,打开之后光标在屏幕中间,而屏幕中间的行就是第 `n` 行。
# 打开文件,并将光标置于第一个与 `pattern` 匹配的串处
$vi +/pattern filename
这里输入得都是 `shell` 下进行得,是 `shell` 命令。
# 在上次正用 `vi` 编辑时发生系统崩溃,恢复 `filename`
$vi -r filename
# 以只读方式打开文件
$vi -R file
或
$view file
这里输入得都是 `shell` 下进行得,是 `shell` 命令。其中 `view` 是 `unix` 得命令,有的 `linux` 有。
# `vi` 下临时切换到 `shell` 执行 `shell` 命令
输入: `!command` 。
注意:这里 `command` 是命令名字(例如 `ls` ).
# 查看当前编辑的文件和行号
输入 `<C-g>` 。
或输入 `:args` ,查看当前编辑缓冲文件状态(文件名).
# 显示当前光标所在行的行号
输入 `:nu` .
这里只是在底部“状态栏”的位置显示一下当前光标所在的行号以及行。
# 保存
输入 `:w` 。
若输入 `:w file` (效果和另存为文件 `file` 一样).
# 载入(创建)一个新文件( `file` )
输入 `:e file` 。
或输入 `:n file` 。
或输入 `:hide e filename` 。
这里,类似于新建文件或者新打开一个文件,当前文件的窗口将会被待编辑的文件所占用,如果当前文件没有保存会提示的。实质上是隐藏当前文件到 `buffer` 缓存,打开另一个文件进行编辑,具体见缓存部分。
# 在新窗口载入(创建)一个文件( `file` )
输入 `:vnew file` 。
或输入 `:vsplit file`
或输入 `:split file`
这将新开一个垂直的分割窗口,并在新开的窗口中载入相应的文件( `:split file` 是水平窗口)。
# 将当前文件以及改动保存到另外文件中
输入 `:w FILENAME` .
这里, `FILENAME` 是另外的文件名,执行之后仍然停留在当前文件中,只是目录中多了一个 `FILENAME` 文件(即另存为).
# 只保存文章的某个部分到另外文件
输入: `#,# w TEST` 。
这里的 `#,#` 就是要求您记住的行号范围(最小行号,最大行号),而 `TEST` 就是选定的文件名。
# 向当前光标中插入另外的文件的内容
输入: `r FILENAME` .
这里, `FILENAME` 是要插入的文件名, `r` 前面可以指定一个行号,表示把内容插在这个行号后面。
# 在 `buffer` 缓冲内操作文件相关
## 列出当前打开的文件,以及编号
输入 =:buffers = .
或输入 `:ls` .
假设我们打开一个文件,之后用 `n` 来切换到另外一个文件中,或者用 `tabnew` 打开新文件,那么原来的文件以及现在的文件都会在 `buffers` 中,并且 `yy` 等命令复制的原来的文件的内容还能用。列表前面的前缀 `%` 表示当前文件, `#` 表示可以用 `[Ctrl]^` 等切换的可用 `buffer` ,其他的可以查看 `:help ls` 或者 `:help buffers` .
## 切换成第 `N` 个缓冲
输入 `N ctrl^` .
或输入 `:buffer N` .
这里,注意第一种方法不用输入 `:` ,两个 `buffer` 文件之间也可用 `yy` , `pp` .
## 新开一个窗口,载入第 `N` 个缓冲区的文件
输入 `:sbuffer N` .
窗口默认是水平的。
## 切换到下一个文件
输入 `:bn` .
## 切换到上一个文件
输入 `:bp` .
## 关闭当前文件
输入 `:bw` .
这样会关闭当前文件进入下一个 `buffer` 的文件,并且当前文件也会从 `buffer` 列表中删除。
## 跳至下一个文件
输入 `:n` .
当然这里打开文件的方法应该是 `$vi file1 file2 file3` 才行。如果用 `vi file1` 之后用 `:n file2` 这样不行。
## 回到刚才编辑的文件
输入 `:e#` .
或输入 `[Ctrl]^`
例如运行了 `vi a b c` ,当前编辑文件为 `a` , `:n` 跳至 `b` ,再 `:n` 跳至 `c` , `:e#` 回到 `b` ,想回到 `a` 的话用 `:ea` 。
# 退出
输入 `:q` 。
# 保存退出
输入 `:wq` .
或者输入 `:x` .
或输入 `ZZ` .
# 强制退出
输入 `:q!` (可能未保存)。
# 退出所有
输入 `:qa` .
这里如果打开多个窗口或者文件的时候,使用这个命令可以实现一次性退出。
# 查看当前编辑缓冲文件状态(文件名)
输入 `:args` 。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/9525959/viewspace-3170054/ ,如需转载,请注明出处,否则将追究法律责任。