我一直在挖掘iTerm2的设置,但我似乎无法找到一种方法让它启动Zsh而不是Bash,有没有人知道在iTerm2中执行此操作的正确方法?
我问这个是因为我来自Mac终端,它很容易让你选择在启动时运行什么,但我似乎无法通过iTerm2直接找到一些东西.
我在谷歌搜索它,但由于某种原因我只能找到oh-my-zsh引用,与未修改的iTerm2无关.
感谢您提供的任何帮助,谢谢.:)
现在我正在清理我的.vimrc
文件,以确保它在大多数系统上兼容.
在我的状态行中,我使用另一个插件设置的GitBranchInfoString()
函数,该插件引入的函数.
我想做的是检查是否设置了此功能,然后将其添加到状态行.这将是它自己的行,所以我只需要检查它.
实现这一目标的最简单方法是什么?
感谢你的帮助!
编辑:
我有以下内容:
if exists('*GitBranchInfoString')
let &stl.='%{GitBranchInfoString()}'
endif
Run Code Online (Sandbox Code Playgroud) 我已经使用Vim一个星期了.而且我注意到了一些事情.
我有未设置的textwidth,我有wrap set.现在,我的问题是.目前,每当我的行超过120个字符(窗口宽度)时,它会占用最后一个字符,就像那样,包装它.所以,如果它在一个单词的中间,它看起来像这样:
This is a very long sen|
tence, this looks very |
strange, don't you thin|
k? |
Run Code Online (Sandbox Code Playgroud)
顺便说一句,|
代表文本限制,在这种情况下非常短,以证明我的观点.所以这说明我的问题是什么,我想要一个简单的解决方案,只要我不丢失任何屏幕空间.
当然,理想的解决方案将输出以下内容,而不修改文本,只输出文本,文本保持在一行,但它似乎分布在几个:
This is a very long |
sentence, this looks |
very strange, don't you|
think? |
Run Code Online (Sandbox Code Playgroud)
感谢您的任何帮助,您可以提供.:)
额外信息:
我尝试过以下方法:
set textwidth=120
set wrap
set linebreak
set fo=1
Run Code Online (Sandbox Code Playgroud) Vim中single('
)和double("
)引号之间的区别是什么?是否会产生速度差异?在其中运行函数时,使用一个或另一个更好吗?它有关系吗?
我特别感兴趣的是他们在.vimrc
文件中的使用.
我问,因为我发现人们同时使用两者,我想知道有什么区别.我尝试谷歌这个,但无法找到任何东西.
有没有办法在MacVim中禁用键盘快捷键?我的意思是快捷方式Cmd + s
,例如,我想说服自己使用类似的东西:w
,但如果我可以使用保存文件Cmd + s
,我就不能这样做,你能得到我吗?
但我当然还想使用GUI,那么有没有办法禁用这些,而不停止使用MacVim GUI?
谢谢你的帮助.顺便说一句,我做了谷歌搜索,但无法找到答案.
编辑:
按照@ ChrisJohnsen的建议,我已经尝试了以下但没有成功:
if has('gui_running')
macmenu File.Save key=<nop>
macmenu File.Save\ As\.\.\. key=<nop>
endif
Run Code Online (Sandbox Code Playgroud)
编辑2:
我移动了错误我正在解决另一个问题:当我尝试在命令行运行vim时,我得到Python错误
当我尝试在终端中运行vim时(以便在我的另一个问题中遵循@ romainl的建议)我得到了很多Python错误,这些都归结为:
IOError: invalid Python installation: unable to open /usr/include/python2.7/pyconfig.h (No such file or directory)
Run Code Online (Sandbox Code Playgroud)
为什么是这样?我甚至可以使用Python或Sublime Text,没有任何问题.
完整的错误列表如下:
Traceback (most recent call last):
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site.py", line 565, in <module>
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site.py", line 547, in main
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site.py", line 278, in addusersitepackages
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site.py", line 253, in getusersitepackages
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site.py", line 243, in getuserbase
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/sysconfig.py", line 523, in get_config_var
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/sysconfig.py", line 419, in get_config_vars
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/sysconfig.py", line 298, in _init_posix
IOError: invalid Python installation: unable …
Run Code Online (Sandbox Code Playgroud) 这是一个我无法找到答案的Vim问题.什么是%V
状态行变量呢?
我检查了我可以找到的文档,但它不是很清楚,我知道它显示了虚拟列,但是这些数字/字母在-
均值之前是什么?
例如,以下各项是什么意思?
0-1
17-18
Run Code Online (Sandbox Code Playgroud)
从我可以管理的内容中,找到这些例子.前面的数字-
是最后一个实心列,换句话说就是真实列.它是否正确?
谢谢你的帮助!
我正在制作一个文本编辑器,并且为了编辑文件,我真的需要某种方式来只读取文件中的某些字节,这是我使用fs.createReadStream
uisng start
和end
options实现的.
我还需要替换文件中的某些字节.我不确定如何做到这一点.到目前为止,我提出的最佳解决方案是使用流读取文件,然后写入新文件,当我遇到我正在寻找的字节时,我会编写新内容,从而替换旧的内容新的东西.
这可能不是最好的方法,你可能知道.要编辑4个字节,我正在读取一个巨大的2GB文件并编写2GB(假设我正在编辑2GB文件),至少效率不高.
实现这一目标的最佳方法是什么?我花了两周的时间做这个,我也想过使用Buffers,但是Buffers将整个文件加载到内存中,如果它是2GB的文件,这又是无效的.
如何在不读取整个文件的情况下更换文件中的某些字节,并且不安装一些具有C++代码的npm软件包.我不希望我的编辑器必须编译C++代码.
如果这样做并不简单,那么如何在不读取整个文件的情况下从文件中删除某些字节呢?如果我可以这样做,那么我可以删除要替换的字节,并使用类似的东西fs.write()
来添加我想要替换的字节.
编辑#1:
玩弄后,我发现,如果我打开一个文件fs.open
,旗r+
,然后fs.write
是替代的东西.所以,如果文字是"Lorem ipsum",我fs.write
"!!!!" 结果将是"!!!! m ipsum".
如果我要编写的所有内容都是完美的长度,这样就可以正常工作.:/
我知道在新内容不是完美的长度的情况下该怎么办,但我不知道如何.:/也许如果有某种"空字节"......
编辑#2:
如上所述,fs.open
(使用r+
flags选项)+ fs.write
允许我覆盖文件中的内容而不读取整个文件,这非常棒.现在,我遇到了一个新问题.我们来看以下文件:
one\n
two\n
three\n
Run Code Online (Sandbox Code Playgroud)
如果我fs.open
在字节0然后fs.write
"是",我最终得到:
yes\n
two\n
three\n
Run Code Online (Sandbox Code Playgroud)
如果我这样做,而是fs.write
"niet",我最终得到:
niettwo\n
three\n
Run Code Online (Sandbox Code Playgroud)
注意如何\n
字是用"T"所取代,这是因为如何fs.write
使用时更换字节工程r+
在fs.open
.这是我现在想解决的问题.
一个会如何做这样的事情"从这个字节到该字节,这些其他字节替换"所以我的函数可以是这样function replaceBytes(filePath, newBytes, startByte, endByte)
和那样只会从更换startByte
到endByte
,无论多久newBytes
,不管是不是更短或更长的长度endByte - …
我需要一种简单(或复杂)的方法来确定用户所处的模式.我需要知道用户是否处于Normal,Insert,Visual,Replace,Change等.
我知道这个mode()
功能,但我无法弄清楚如何输出一个完整的字符串而不是一个字符.
我的计划是创建一个函数,根据mode()
返回的字符串动态更改状态行的背景和前景颜色.基本上是一个函数与一堆ifs和elseifs,它会为我做.但是这种方法存在一个缺陷,我无法知道默认情况下主题设置的颜色.
所以基本上,我需要一些关于如何创建执行以下功能的提示/帮助:
fg
和bg
值设置一些变量,这些变量反映当前主题为它们设置的内容.我尝试过这样做,但这是一种非常粗暴的做法,它根本不起作用.它只设置一次颜色,之后每次更改都没有反应.
谢谢你的帮助!:)
编辑:
非常确定我之前尝试的不起作用是这样的:
function! StatuslineModeColor()
let s:StatuslineMode=mode()
if s:StatuslineMode == 'n'
hi Statusline ctermbg=blue guibg=blue
elseif s:StatuslineMode == 'i'
hi Statusline ctermbg=red guibg=red
endif
endfunc
Run Code Online (Sandbox Code Playgroud)
在状态栏中,我提出以下内容:
let &stl.='%{StatuslineModeColor()}'
Run Code Online (Sandbox Code Playgroud)
编辑2:
我已经弄清楚,基本上我需要做的是找到一种方法来抓住主题之前使用的任何颜色.如果我使用这个解决方案,那就是:http://www.reddit.com/r/vim/comments/gexi6/a_smarter_statusline_code_in_comments/c1n2oo5
然而,这个解决方案在我的标准中并不理想,因为它不干净,或者尽可能干净,因为它会造成很多混乱.:/
我需要这个才能完成我正在制作的插件,以便根据模式更改状态行的颜色.
但是我遇到了一个明显的问题,我怎么知道用户使用的是什么主题?即使我知道我不能为每个主题制作特定的颜色.
因此,如何知道当前主题用于状态行的前景色和背景色.
编辑1:
如果我不清楚,我正在寻找一种方法来找出ctermfg
/ bg
和guifg
/ bg
某些东西.现在是状态线.:)
编辑2:
显然,如果我这样做,:hi StatusLine
我得到了我需要的东西,但是我需要改进它以获得唯一的价值,而不是全部.我猜我必须使用一些正则表达式来找出价值.如果有人知道更简单的方法,请分享它(或者如果你已经用正则表达式弄明白的话).谢谢!