在活动的 Vim 缓冲区中,如何在不先关闭当前缓冲区的情况下将特定范围的行写入新文件?
我无法理解一个奇怪的行为:vi 似乎在文件末尾添加了一个换行符(ASCII:LF,因为它是 Unix ( AIX ) 系统),而我没有专门输入它。
我在 vi 中编辑文件(注意不要在最后输入换行符):
# vi foo ## Which I will finish on the char "9" and not input a last newline, then `:wq`
123456789
123456789
123456789
123456789
~
~
## When I save, the cursor is just above the last "9", and no newline was added.
Run Code Online (Sandbox Code Playgroud)
我希望 vi 将它“按原样”保存,因此有 39 个字节:前三行(数字 1 到 9,后跟一个换行符(我的系统上为 LF))中的每一行都有 10 个 ASCII 字符,最后一行只有 9 个行(字符 1 到 9,没有终止换行符/LF)。
但是当我保存它时出现它是40个字节(而不是 39 个),并且od 显示一个终止的 LF: …
据我所知,vi在开箱即用的 Unix 系统上更常见,但vim通常必须安装。也vim代表vi improved,但如何改进?
主要区别是什么?
在vim我使用yy和p所有的时间猛拉和粘贴线条。但是,如果我想在文件中的多个位置替换一行,则无法使用,yy p dd p因为dd 删除了到剪贴板/寄存器的行。虽然我应该知道如何更好地使用寄存器,但我觉得可能有一种方法可以p替换当前行。
是否有一种简单的方法vi可以使您的 XML 文本“漂亮”?
例如:
我要这个..
<person>
<name>Nick</name>
<age>26</age>
<gender>male</gender>
<occupation>doctor</occupation>
</person>
Run Code Online (Sandbox Code Playgroud)
成为这个...
<person>
<name>Nick</name>
<age>26</age>
<gender>male</gender>
<occupation>doctor</occupation>
</person>
Run Code Online (Sandbox Code Playgroud) 我正在使用 Ubuntu 并试图从vi编辑器中删除所有 100 行,但我在一个命令中遇到了这个问题。
是否可以在 vi 中键入 bash 命令并获取标准输出?
我发现仅仅因为我想在 shell 中查找某些东西而关闭并重新打开 vi 通常很乏味。
澄清一下:我不是问在终端中使用 vim 时如何更改光标。我希望在 Bash 的 vi 模式中在输入模式和命令模式之间切换时更改光标:
set -o vi <CR> type some text <ESC> (the cursor changes shape/color)
i (cursor change back) etc...
Run Code Online (Sandbox Code Playgroud)
我找到了一个脚本,可以在zsh 中更改模式更改时光标的颜色,但我不想只为这个功能更改 shell。
在 Bash 命令行上在命令和插入模式之间切换时,有没有办法让光标改变形状,就像在 gvim 中一样(甚至只是颜色)?
在 vi 中,我可以使用o或O添加一个空行并进入插入模式。但是如果我想保持命令模式怎么办,有没有针对此的命令?
在谷歌搜索中,我看到了向我的 vimrc 添加内容的建议,但似乎应该有一种更简单的方法(这将始终有效。)