Vi & Vim

使用vi和Vim系列文本编辑器的人员的问答

3
如何在命令行模式下使用相对行号?
最近,我从实用Vim中学习了一种无需将光标从当前位置移动即可复制或移动行块的方法。这是在命令行模式下完成的。例如 :123,133m. # moves lines from 123 to 133 below the cursor position. 虽然我喜欢它,但是键入长行号很麻烦,尤其是当文件有太多行时。 有时,要移动的线相对靠近光标(但是我不想移动光标,拉动,回到我原来的位置,粘贴!)。如果我可以使用相对数字,那将很棒,类似于我们在正常模式下的操作。就像在说 将当前行上方10行的5行移动到此处 简而言之,如何在命令行模式(类似于普通模式)中使用相对数字?

1
如何使两个拆分同时向左或向右滚动?
我想在水平拆分中打开文档的两个不同部分(使用:sp),并将它们左右滚动。对于垂直滚动,可以使用scrollbind。但是,我不确定用于水平滚动的内容。 我知道该功能必须可用,因为当我使用时vimdiff,它同时在两个文档中水平滚动。
16 split  scrolling 

1
Vim中文件名的Bash式部分制表符完整
在Bash中,当有几个文件具有相同的前缀,并且我键入了一部分前缀和hit时Tab,它会完成通用前缀,并允许我继续键入以区分可能的结果。 在Vim中,当有几个文件具有相同的前缀并且我键入部分前缀并点击时Tab,它将完成整个第一个匹配项,然后让我在所有匹配项中进行选择。为了减少集合,我必须退格,直到到达公共部分的末尾,然后再键入一些然后Tab再次击中。 我经常有很多文件,这些文件的公共前缀很长,而我想要的文件不在第一个文件中(例如,项目文件的目录除其他外,还包含各种名称为的makefile Makefile.{whatever})。 我可以使Vim更像Bash一样来保存很多按键吗? 如果这也可以应用于其他补全(例如,所有具有相同前缀的枚举值),则将获得奖励

1
防止Vim在markdown中破坏标签中间的链接
假设我有这个Markdown文件: [Lorem ipsum dolor sit ](http://vi.stackexchange.com/many-links-are-often-very) 看起来不错。但是链接没有完成,所以我输入-long,现在Vim中断了: [Lorem ipsum dolor sit ](http://vi.stackexchange.com/many-links-are-often-very-long) 由于我的textwidth=80设置,...断开链接中间标签在技术上是有效的降价促销,但恕我直言,恕我直言;拥有漂亮外观的源文件是Markdown的重点。 随着gq这个问题往往是更糟糕: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris. Maecenas congue ligula ac quam viverra nec [Lorem ipsum dolor sit](http://vi.stackexchange.com/many-links-are-often-very-very-long) 变成这个: Lorem ipsum dolor sit amet, consectetur adipiscing …

2
根据文件大小和类型禁用语法高亮显示
我经常需要用vim编辑各种XML文件,这些文件的大小千差万别-从包含几行斜线的配置文件到最大2GB的生产数据文件。在处理大文件时,启用语法高亮当然是一个非常糟糕的主意,因此,如果文件大于阈值,我想禁用它。 我不能autocommand直接使用它来禁用语法突出显示,因为从外壳启动vim时,显然在启用语法之前执行了该命令: " this autocmd has no effect except for the echo: autocmd Filetype xml if getfsize(@%) > 1000000 | echom '!' | syntax off | endif 我找到了一种解决方法,可以全局禁用语法高亮显示,然后针对除xml以外的所有其他文件类型再次将其打开,如果文件的大小不超过阈值,则针对xml文件类型将其打开: syntax off autocmd Filetype * syntax off autocmd Filetype * if &ft != 'xml' | syntax enable | endif autocmd Filetype xml …

4
设置粘贴选项,但仅一次插入
我想有一种快速的方法来设置Vim 'paste'选项,插入一些文本,并恢复为以前的值'paste'。 一个典型的用例是按字面意义插入OS剪贴板内容,而不考虑任何可能处于活动状态的插入方式重写(例如自动缩进),并且不更改Vim的状态。另一个用例是允许OS宏功能将击键注入Vim,并将其解释为文本。 显然,这可以归结为其他选项-总体思路是设置一些选项,但仅在通过插入模式进行一次旅行的持续时间内。 基本上,我想将键序列(例如_i)绑定到执行此操作的宏 :set paste i…<Esc> :set nopaste 在这里,i…<Esc>我的意思是切换到插入模式(与i命令一样)并在返回命令模式时恢复宏,除非我想以'paste'仍然处于活动状态(如果事先处于活动状态)而结束。我怎样才能做到这一点? 注意:OS剪贴板的内容已映射到"*register。在这种情况下,该'paste'选项不是很有用。这个问题的动机场景是在那些"*不满足注册支持条件的情况下— Vim没有使用该+xterm_clipboard功能进行编译,或者它运行在诸如Screen或通过SSH的终端中,从而将其与环境X服务器隔离。

2
调整主机窗口大小时调整窗格大小
我喜欢将vimdiff用作git diff / merge工具。问题是当我将主机终端窗口的大小调整为新大小时:在两个拆分窗格中,最左边的保留相同的宽度,而最右边的保留为完整的窗口大小。 调整窗口大小后,是否有命令使分割窗格的宽度相等?或使窗格始终具有相同大小的设置?我调查了一下,:set equalalways但似乎并没有按照我的要求去做。
16 split  vimdiff 

1
将字符串文字视为另一种语言
我有许多JavaScript文件,其中的字符串是要插入网页的HTML片段。Vim在JavaScript上突出显示语法,并突出显示加引号的字符串。实际上,它似乎超出了突出显示的范围:在使用引号时,vim与<使用标签开头的标签与以标签>结束的vim不匹配%;似乎假设字符串文字中不存在方括号之类的内容。 有没有一种方法可以指示vim字符串文字应被视为单独语言中的代码?

3
tmux中没有语法突出显示
我安装tmux在iTerm 2中。(内部版本3.0.13)在中执行vim时tmux,语法高亮显示如下。 但是在tmux之外,语法高亮看起来很好。 我的$TERM内外tmux是xterm-256color。我还加了 set -g default-terminal "screen-256color" 在.tmux.conf并添加了这个 set t_Co=256 set t_AB=m set t_AF=m if &term =~ '256color' set t_ut= endif 在中.vimrc。 我还尝试了tmux -2命令并阅读了这些问题。 在tmux模式下丢失vim颜色方案 使用Solarized的iTerm2中的vim颜色不正确 这是一个问题tmux,vim或者我的配置? 编辑: 我.vimrc在GitHub中 https://gist.github.com/sohnryang/3c63397f332f2e30c7d7b2a83c3c9f52


3
如何使vim自动在文件末尾添加换行符?
Vim通常<EOL>只在原始文件中有最后一行时才写最后一行。 如何使vim始终在文件末尾写入新行(当文件不是二进制文件并且还没有二进制文件时)? 我已经测试了eol选项,但是没有按预期工作。 另请参阅:保留文本文件末尾缺少的行尾,但相反。并且:为什么文件应该以换行符结尾?


8
NeoVim中使用配色方案时遇到问题
我对我的配色方案如何与termvim中的设置交互不完全了解,这妨碍了我使其在Neovim中正确显示的能力。 在我的.vimrc文件中,有关颜色方案的正确行为需要设置 set term=xterm set t_Co=256 忽略这些设置中的任何一个都会导致颜色方案的显示不正确: 正确 不正确 不同不正确 该方案如下所示: set background=dark hi clear if exists("syntax_on") syntax reset endif let g:colors_name="impact3" if exists("g:impact_transbg") hi Normal ctermfg=255 ctermbg=none hi NonText ctermfg=DarkGray ctermbg=none hi Statement ctermfg=Blue ctermbg=none hi Comment ctermfg=DarkGray ctermbg=none cterm=bold term=bold hi Constant ctermfg=173 ctermbg=none hi Identifier ctermfg=Cyan ctermbg=none …

1
Vim的正则表达式魔术与著名的正则表达式类兼容吗?
许多Unix工具的正则表达式语法通常是POSIX编码的基本正则表达式和扩展正则表达式(分别是BRE和ERE),在某些现代实现中,是Perl样式(PCRE是这种实现)。 Vim的魔术等级与此类外部定义但众所周知的类之间是否存在一对一的对应关系?看起来\m是BRE,\v是ERE,但POSIX不包含环视。 如果存在这种对应关系,是否在某处定义?pattern.txt只提了一则POSIX。 还是我们必须坚持用“魔术”来描述Vim正则表达式?

1
用河豚加密文件的安全性如何?
我知道使用:set cryptmethod=zip是不是安全的,但如何安全使用:set cryptmethod=blowfish? 在维基百科上,我读到河豚密码本身应该是安全的,但这并没有说明Vim 实现它的安全性。 交换文件,备份文件,撤消文件以及其他绕过河豚加密的可能方式又如何呢?Vim在那儿有多安全?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.