Vlastní klavesové zkratky



Ahoj. Mám takový problém. Uživatel má na staarém pc nastaveno CTRL+INS (kopírování) a SHT + INS (na vkládání). No a na novém pc to nefunguje. CTRL +C a +V nechce Neví někdo? =)
Ne, neví. Hlavně proto, že nikdo nic neví o tom novém počítači. Na starém to neměl 'nastaveno', jsou to standardní klávesové zkratky. A jak psal kolega, normálně fungují pro copy/paste obě varianty.
<p>registry <code>"*</code> a <code>"+</code> jsou pro schránku systému (<code>:help registers</code>). v závislosti na vašem systému mohou dělat různé věci. například v systémech, které nepoužívají x11 jako osx nebo windows, se registr <code>"*</code> používá pro čtení a zápis do systémové schránky. na systémech x11 lze použít oba registry. pro více informací viz <code>:help x11-selection</code>, ale v podstatě <code>"*</code> je analogický s x11 <em>primárním</em> výběrem (který obvykle kopíruje věci, které vyberete myší a pastami pomocí prostřední tlačítko myši) a <code>"+</code> je obdobné jako u x11 <em>clipboard</em> výběr (což je vlastní schránka).</p><p>pokud vše, co šlo přes hlavu, zkuste pomocí <code>"*yy</code> nebo <code>"+yy</code> zkopírovat řádek do schránky systému. za předpokladu, že máte vhodné možnosti kompilace, by měl fungovat jeden nebo druhý. možná budete chtít přeměnit to na něco výhodnější pro vás. například můžete v souboru ~/.vimrc zadat <code>vnoremap &lt;c-c&gt; "*y</code>, abyste mohli vizuálně vybrat a stisknout <kbd>ctrl</kbd>+<kbd>c</kbd> vyskočit do schránky systému.</p><p>mějte na paměti, že kopírování/vkládání ze systémové schránky <strong>nebude fungovat</strong> pokud <code>:echo has('clipboard')</code> vrací 0. v tomto případě není vim zkompilován s funkcí <code>+clipboard</code> a budete muset nainstalovat jinou verzi nebo znovu zkompilovat . některé linuxové distribuce standardně dodávají minimální instalaci vimu, ale obecně, pokud <strong>nainstalujte balíček <code>vim-gtk</code> nebo <code>vim-gtk3</code></strong> můžete získat další funkce.</p><p>můžete se také podívat na volbu <code>'clipboard'</code> popsanou v <code>:help cb</code>. v tomto případě můžete <code>:set clipboard=unnamed</code> nebo <code>:set clipboard=unnamedplus</code> provést všechny operace vyhození/smazání automaticky zkopírovat do systémové schránky. to by mohlo být nepříjemností v některých případech, kdy ukládáte něco jiného do schránky, protože to přepíše.</p><p>chcete-li vložit, můžete použít <code>"+p</code> nebo <code>"*p</code> (opět v závislosti na vašem systému a/nebo požadovaném výběru) nebo je můžete namapovat na něco jiného. typicky je zadávám, ale často se nacházím v režimu vkládání. pokud jste v režimu vkládání, můžete je stále vkládat pomocí správného odsazení pomocí <code>&lt;c-r&gt;&lt;c-p&gt;*</code> nebo <code>&lt;c-r&gt;&lt;c-p&gt;+</code>. viz <code>:help i\_ctrl-r\_ctrl-p</code>.</p><p>za zmínku stojí také možnost <code>paste</code> vim (<code>:help paste</code>). toto vloží vim do speciálního "režimu vkládání", který zakáže několik dalších možností, což vám umožní snadno vložit do vimu pomocí svého terminálového emulátoru nebo známé zkratky pro vložení multiplexeru. jednoduše zadejte <code>:set paste</code>, abyste jej aktivovali, vložte obsah a potom zadejte <code>:set nopaste</code>, abyste jej zakázali. alternativně můžete pomocí volby <code>pastetoggle</code> nastavit kód klíče, který přepíná režim (<code>:help pastetoggle</code>). doporučuji používat registry namísto těchto možností, ale pokud jsou stále příliš děsivé, může to být vhodné řešení, když si vylepšujete své vim chops.</p><p>podrobnější informace naleznete v tématu <code>:help clipboard</code>.</p> <p>nejsem si jistý, jestli to funguje pro všechny modely, ale na můj, pokud stisknete <kbd>fn</kbd>+<kbd>esc</kbd> změní to <code>fn lock</code> aby <kbd>f1</kbd>+<kbd>f12</kbd> pracovat jako obvykle a když držíte <kbd>fn</kbd>+ (řekněme <kbd>f11</kbd>) změní jas nebo cokoli, co je sekundární funkcí kláves. stisknutí <kbd>fn</kbd>+<kbd>esc</kbd> znovu to vrátí zpět na výchozí hodnotu. snad to pomůže.</p> <p>měli byste se držet společné úmluvy o něčem takovém.</p><p>pokud jsou vstupy nastaveny jako tabulkový procesor, lidé pochopí, že stisknutím záložky přejdou na další záznam a první záznam bude zpracován.</p><p>protože říkáte, že se jedná o aplikaci technické podpory, nezní to tak, jako byste to udělali, takže bych řekl, že byste měli mít tlačítko.</p><p>to znamená, že profesionální uživatelé vždy ocení klávesové zkratky, takže práce s kartou <strong>také</strong> zní jako dobrý nápad.</p> Pojďme pedantský, protože existují rozdíly, které mohou skutečně ovlivnit chování Váš kód je. Hodně z následujících je převzat z připomínek k [„Old New Thing“ článek](http://blogs.msdn.com/oldnewthing/archive/2006/12/14/1285437.aspx) .


Někdy se vrátila paměť novým operátorem se inicializuje, a někdy to nebude v závislosti na tom, zda jste typ newing up je [POD (obyčejné data)](https://stackoverflow.com/questions/146452/what-are-pod-types-in-c) , nebo pokud se jedná o třídu, která obsahuje členy POD a za použití kompilátor generované výchozí konstruktor.


* V jazyce C ++ 1998 jsou k dispozici 2 druhy inicializace: nuly a výchozí
* V jazyce C ++ 2003, byla přidána třetí typ inicializace inicializační hodnota.


Převzít:



```
struct A { int m; }; // POD
struct B { ~B(); int m; }; // non-POD, compiler generated default ctor
struct C { C() : m() {}; ~C(); int m; }; // non-POD, default-initialising m

```

V C ++ 98 kompilátor, by mělo dojít k následujícímu:


* `new A` - neurčitý hodnota
* `new A()` - zero-initialize
* `new B` - výchozí konstrukt (B :: m je neinicializované)
* `new B()` - výchozí konstrukt (B :: m je neinicializované)
* `new C` - výchozí konstrukt (C :: m je nula inicializaci)
* `new C()` - výchozí konstrukt (C :: m je nula inicializaci)


V C ++ 03 splňovalo požadavky kompilátor, vše by mělo fungovat jako tak:


* `new A` - neurčitý hodnota
* `new A()` - hodnota inicializovat, což je nula-inicializace, protože je to POD.
* `new B` - default-inicializuje (listy B :: M neinicializovaný)
* `new B()` - hodnota inicializuje B, která nulové inicializuje všechna pole, protože jeho výchozí ctor je kompilátor generována na rozdíl od uživatelsky definované.
* `new C` - default-inicializuje C, který volá výchozí ctor.
* `new C()` - hodnota inicializuje C, který volá výchozí ctor.


Tak ve všech verzích C ++ je tu rozdíl mezi `new A`i `new A()`proto, že A je POD.


A tam je rozdíl v chování mezi C ++ 98 a C ++ 03 pro případ `new B()`.


To je jeden z prašných koutech C ++, které mohou zbláznění. Při stavbě objektu, někdy budete chtít / potřebovat parens, někdy si absolutně nemůže mít, a někdy to nevadí. <p>zkratka <kbd>ctrl</kbd>+<kbd>alt</kbd> + <code>arrow keys</code> vám umožňuje pohybovat se v pracovních prostorech.</p><p>budete muset <a href="https://askubuntu.com/a/283758/">zapnout pracovní prostory</a> , pokud máte 13.04+.</p> <p>vícenásobný výběr přetažením, ctrl-kliknutí a shift-kliknutí jsou přiměřeně použitelné, pokud uživatel obvykle vybere najednou pouze jeden objekt. mají slabou objevitelnost, ale jsou velmi efektivní pro uživatele. spolu s popisovanou metodou zrušení výběru jsou standardy, takže mnoho uživatelů již ví, jak to udělat, takže zjistitelnost není tak velkým problémem, jak by si člověk myslel. kromě toho je vícenásobný výběr obvykle zkratkou odborníka. ve většině aplikací může vše, co může uživatel dělat s vícenásobným výběrem, také s jednorázovým výběrem - bude to trvat jen déle, takže dostupnost není považována za požadavek. <em>odchylka</em> od standardu, na druhé straně, pravděpodobně zaměří mnoho vašich uživatelů.</p><p>jedním kliknutím vyberte, je dobré, když uživatel musí vybrat více položek, aby mohl úspěšně dokončit klíčovou úlohu. je to rychlejší než kliknutí ctrl, ale ne tak rychle jako kliknutí shift nebo přetažení pro větší počet přilehlých objektů. na druhé straně má mnohem lepší objevitelnost. umístění ovládacího prvku podobného zaškrtávacím políčkům vedle každé ikony účinně komunikuje, že každý výběr přetrvává prostřednictvím jediného kliknutí. možná budete potřebovat tlačítko vymazat pro vymazání všech výběrů.</p> <p>x11 má několik dostupných schránek. ve výchozím nastavení <code>xclip</code> umisťuje data do vyrovnávací paměti primárního výběru. chcete-li jej vložit, použijte prostřední kliknutí.</p><p>pokud chcete použít <kbd>ctrl</kbd>+<kbd>v</kbd>, použijte <code>xclip -selection clipboard</code>. viz <code>man xclip</code> pro více informací.</p><p> <a href="http://standards.freedesktop.org/clipboards-spec/clipboards-latest.txt">freedesktop.org</a> jsou dobré informace o různých schránkách.</p> <p>backquoty ve starém stylu <code>` `</code> zpracovávají zpětná lomítka a vnořují se trochu jinak. nový styl <code>$()</code> interpretuje vše mezi <code>( )</code> jako příkaz.</p><pre><code>echo $(uname | $(echo cat)) linux echo `uname | `echo cat`` bash: command substitution: line 2: syntax error: unexpected end of file echo cat </code></pre><p>funguje, pokud jsou vnořené zpětné uvozovky uniknuty:</p><pre><code>echo `uname | \`echo cat\`` linux </code></pre><p>zpětné lomítko zábava:</p><pre><code>echo $(echo '\\') \\ echo `echo '\\'` \ </code></pre><p>nový styl <code>$()</code> platí pro všechny <a href="http://www.opengroup.org/onlinepubs/009695399/utilities/xcu\_chap02.html#tag\_02\_06\_03"> posix </a> - shodné náboje.<br> jak poukázal <a href="https://unix.stackexchange.com/questions/5778/whats-the-difference-between-stuff-and-stuff/5793#5793">mouviciel</a> , pro starší mušle může být nezbytný starý styl <code>` `</code>.</p><p>kromě technického hlediska má starý styl <code>` `</code> také vizuální nevýhodu:</p><ul> <li>těžko si všimnout: <code>i like $(program) better than `program`</code></li> <li>snadno zaměňovaný s jediným citátem: <code>'`'`''`''`'`''`'</code></li> <li>není tak snadné psát (možná ani na standardní rozložení klávesnice)</li> </ul><p><sub>(a se používá <code>` `</code> pro svůj vlastní účel, byla to bolest psaní této odpovědi :)</sub></p> <p>myslím, že znamenají, že byste měli používat <a href="http://en.wikipedia.org/wiki/smart\_pointer">inteligentní ukazatele</a> místo běžných ukazatelů.</p><blockquote> <p>ve vědě o počítačích je inteligentní ukazatel abstraktní datový typ, který simuluje ukazatel a zároveň poskytuje další funkce, jako je automatický sběr odpadu nebo kontrola mezí. účelem těchto dalších funkcí je omezit chyby způsobené zneužitím ukazatelů při zachování účinnosti. inteligentní ukazatele obvykle sledují objekty, na které ukazují, za účelem správy paměti.</p> <p>zneužití ukazatelů je hlavním zdrojem chyb: konstantní alokace, deallokace a odkazování, které musí být provedeny programem napsaným pomocí ukazatelů, představuje riziko, že dojde k úniku paměti. inteligentní ukazatele se pokoušejí zabránit úniku paměti automatizováním automatického přidělování prostředků: když je ukazatel (nebo poslední v řadě ukazatelů) na objekt zničen, například proto, že je mimo rozsah, je zničen i špičatý objekt.</p> </blockquote><p>v c++ by byl kladen důraz na sběr odpadu a zabránění úniku paměti (abychom jmenovali alespoň dvě). ukazatele jsou základní součástí jazyka, takže jejich použití je do značné míry nemožné, s výjimkou nejvzácnějších programů.</p> Ano, budete muset převést klíče. Mac a Linux fungují stejně, ukládání klíče `~/.gnupg`. Nejbezpečnější způsob, jak přenést soubory je použití `scp`(část SSH):



```
scp -rp ~/.gnupg othermachine:

```

Nicméně, budete muset mít `ssh`práci jako první.


Přenos je, řekněme, USB flash disk není tak skvělý nápad, protože váš soukromý klíč bude zanechal na této jednotce i poté, co jste odstranili soubor. I když je chráněna přístupovým heslem, pokud se někdo dostal do rukou kopie souboru klíčů mohli připojit dlouhotrvající útok hrubou silou na něj na svém lesiure.


Nevím o umístění adresáře systému Windows. Dokumentace gpg řekne, a obsah pak bude téměř jistě být stejné.


Kopírování celé klíčenku je rychlá a snadná, ale někdy chcete být schopen se pohybovat jednotlivé klíče mezi stroji bez přepisování celý klíčenku a ztrátě klíče, které již existují. Kopírování jednotlivých kláves volitelně může být provedeno s `gpg --export-secret-key`a `gpg --import`. Pokud máte SSH přístup k cílovému počítači, můžete to udělat s trubkou a nepotřebují k ukládání průběžném klíč kdekoliv:


Pokud jste na počítači, který již má klíč:



```
gpg --export-secret-key SOMEKEYID | ssh othermachine gpg --import

```

Pokud jste na počítači, který potřebuje klíč:



```
ssh othermachine gpg --export-secret-key SOMEKEYID | gpg --import

```

Pokud `gpg`není v jednom z výchozích míst na vzdáleném počítači (např je v `/opt/local/bin`počítači Mac), budete muset dát svou plnou cestu k ssh, nebo symbolický odkaz do jednoho ze standardních místech, jako jsou `/usr/local/bin`.


Všimněte si, že data, která je přenesena je stále chráněn přístupové heslo a klíč bude mít stejné přístupové heslo do místa určení, jak tomu bylo u zdroje. Chcete-li mít různé hesel v každém místě, budete muset změnit přístupové heslo na místo určení, nebo ji změnit dočasně u zdroje před exportem. Potřeboval jsem sdílet tajný klíč s kolegou, s cílem dát mu možnost aktualizovat si Debian balíček repo oba řídit, ale nechtěl jsem se podělil o své přístupové heslo s ním. Tak jsem změnil přístupové heslo na něco dočasného, ​​poslal mu exportovaný klíč (podle gpg šifrované e-mailu!), Řekl mu dočasné heslo ústně, a požádal ho, aby nastavit nové přístupové heslo ihned po importu klíč. Pak jsem změnil přístupové heslo na mém kopie klíče zpět na to, co to bylo původně.